{"version":3,"file":"live-person-3rltj2j9.js","sources":["packages/vanilla/lib/features/live-person/src/live-person.client-config.ts","packages/vanilla/lib/features/live-person/src/live-person-api.service.ts","packages/vanilla/lib/features/live-person/src/live-person-bootstrap.service.ts","packages/vanilla/lib/features/live-person/src/live-person.feature.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\nexport interface ConditionalEvent {\n eventName: string;\n urlRegex: string;\n timeoutMilliseconds: number;\n}\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'vnLivePerson', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: livePersonConfigFactory,\n})\nexport class LivePersonConfig extends LazyClientConfigBase {\n showInvite: boolean;\n accountId: string;\n conditionalEvents: ConditionalEvent[];\n}\n\nexport function livePersonConfigFactory(service: LazyClientConfigService) {\n return service.get(LivePersonConfig);\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { AppInfoConfig, Page, UserService, WINDOW, WebWorkerService, WorkerType } from '@frontend/vanilla/core';\n\nimport { LivePersonConfig } from './live-person.client-config';\nimport { LivePersonChat } from './live-person.models';\n\n/**\n * @whatItDoes Provides a thin wrapper around the global `window.bwin.livepersonchat` api object.\n *\n * @howToUse\n *\n * Make sure that the `livepersonchat` script has been loaded and the global `window.bwin.livepersonchat` object is present.\n *\n * See also https://developers.liveperson.com/consumer-experience-javascript-chat-getting-started.html for more information.\n *\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LivePersonApiService {\n private onScriptLoaded: () => void;\n private scriptPromise: Promise;\n private readonly globalLivePersonApi: LivePersonChat | undefined;\n\n readonly #window = inject(WINDOW);\n\n constructor(\n private appInfoConfig: AppInfoConfig,\n private userService: UserService,\n private livePersonConfig: LivePersonConfig,\n private page: Page,\n private webWorkerService: WebWorkerService,\n ) {\n this.globalLivePersonApi = this.#window.bwin?.livepersonchat;\n }\n\n /**\n * Sends a Live Person event with the given event name and data.\n */\n triggerEvent(eventName: string, data: any): Promise {\n return this.loadScriptData().then(() => {\n if (!this.livePersonConfig.showInvite) {\n this.globalLivePersonApi?.handlePushChatShowInvite();\n }\n\n const eventParams = {\n brand: this.appInfoConfig.brand,\n channel: this.appInfoConfig.channel,\n language: this.userService.lang,\n culture: this.page.culture,\n frontend: this.appInfoConfig.frontend,\n product: this.appInfoConfig.product,\n accountName: this.userService.username,\n moneyCategory: '',\n loyalty: '',\n };\n\n if (this.userService.isAuthenticated) {\n Object.assign(eventParams, {\n moneyCategory: this.userService.realPlayer ? 'real' : 'play',\n loyalty: this.userService.loyalty,\n });\n }\n\n this.globalLivePersonApi?.sendLivepersonEvent(eventName, data, eventParams);\n });\n }\n\n /**\n * Calls triggerSectionOpen(section) on the underlying Live Person api.\n */\n triggerSectionOpen(section: string): Promise {\n return this.loadScriptData().then(() => this.globalLivePersonApi?.triggerSectionOpen(section));\n }\n\n private loadScriptData(): Promise {\n if (!this.globalLivePersonApi) {\n return Promise.reject('Live Person Api script not present. Most probably script is not included.');\n }\n\n if (!this.globalLivePersonApi.isLivePersonPushChatEnabled) {\n return Promise.reject('Live Person Api is disabled.');\n }\n\n this.scriptPromise = this.scriptPromise || new Promise((resolve) => (this.onScriptLoaded = resolve));\n this.globalLivePersonApi.loadScriptData();\n\n this.webWorkerService.createWorker(WorkerType.LivePersonInterval, { interval: 250 }, () => {\n if (this.#window.lpTag?.started) {\n this.onScriptLoaded();\n this.webWorkerService.removeWorker(WorkerType.LivePersonInterval);\n }\n });\n\n return this.scriptPromise;\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Logger, NavigationService, OnFeatureInit, ParsedUrl, TimerService, UrlService, UserService, WINDOW } from '@frontend/vanilla/core';\nimport { IdleService } from '@frontend/vanilla/shared/idle';\nimport { Observable, fromEvent, merge } from 'rxjs';\nimport { first, takeUntil } from 'rxjs/operators';\n\nimport { LivePersonApiService } from './live-person-api.service';\nimport { ConditionalEvent, LivePersonConfig } from './live-person.client-config';\n\n@Injectable()\nexport class LivePersonBootstrapService implements OnFeatureInit {\n private conditionalEvents: { eventName: string; urlRegex: RegExp; timeoutMilliseconds: number }[];\n private additionalActivityEvent: Observable;\n readonly #window = inject(WINDOW);\n\n constructor(\n private livePersonConfig: LivePersonConfig,\n private navigationService: NavigationService,\n private urlService: UrlService,\n private livePersonApiService: LivePersonApiService,\n private idleService: IdleService,\n private logger: Logger,\n private userService: UserService,\n private timerService: TimerService,\n ) {\n this.additionalActivityEvent = merge(fromEvent(this.#window, 'scroll'), fromEvent(this.#window, 'touchstart'));\n }\n\n onFeatureInit() {\n const nativeWindow = this.#window;\n\n if (!nativeWindow.bwin || !nativeWindow.bwin.livepersonchat) {\n return;\n }\n\n this.livePersonConfig.whenReady.subscribe(() => {\n this.conditionalEvents = this.livePersonConfig.conditionalEvents?.map((x: ConditionalEvent) => {\n let regex;\n try {\n regex = new RegExp(x.urlRegex, 'i');\n } catch (e) {\n this.logger.errorRemote(\n `Failed to compile regex /${x.urlRegex}/ because it's not supported on this browser. So it won't be executed for liveperson chat event name \"${x.eventName}\".`,\n e,\n );\n regex = new RegExp('.^');\n }\n\n return {\n eventName: x.eventName,\n urlRegex: regex,\n timeoutMilliseconds: x.timeoutMilliseconds,\n };\n });\n\n const globallivePersonApi = nativeWindow.bwin.livepersonchat;\n globallivePersonApi.isLivePersonPushChatEnabled = true;\n globallivePersonApi.accountId = this.livePersonConfig.accountId;\n\n this.sendLiveChatEvents();\n\n this.navigationService.locationChange.subscribe(() => {\n this.sendLiveChatEvents();\n });\n });\n }\n\n private sendLiveChatEvents() {\n const location = this.urlService.current();\n this.sendCashierLiveChatEvent(location);\n this.sendIdleLiveChatEvent(location);\n }\n\n private sendCashierLiveChatEvent(location: ParsedUrl) {\n const launchLiveChatFromCashier = (location.search.get('launchLiveChatFromCashier') || '').toUpperCase() == 'TRUE';\n const cashierEvent = (location.search.get('lpCashierEvent') || '').toLowerCase();\n\n if (launchLiveChatFromCashier && cashierEvent) {\n location.search.delete('launchLiveChatFromCashier');\n location.search.delete('lpCashierEvent');\n\n this.navigationService.goTo(location.url()).then(() => {\n this.timerService.setTimeout(\n () =>\n this.livePersonApiService\n .triggerEvent(cashierEvent, {})\n .catch((error: unknown) => this.logger.warn(`Failed to open live person chat for event ${cashierEvent}`, error)),\n 200,\n );\n });\n }\n }\n\n private sendIdleLiveChatEvent(location: ParsedUrl) {\n const event = this.conditionalEvents?.find((x) => x.urlRegex.test(location.absUrl()));\n\n if (event && event.eventName && event.timeoutMilliseconds) {\n this.idleService\n .whenIdle(event.timeoutMilliseconds, { additionalActivityEvent: this.additionalActivityEvent })\n .pipe(first(), takeUntil(this.navigationService.locationChange))\n .subscribe(() => {\n this.livePersonApiService\n .triggerEvent(event.eventName, {\n userName: this.userService.username,\n accountName: this.userService.accountId,\n customerId: this.userService.accountId?.split('_')[0],\n })\n .catch((error: unknown) => {\n this.logger.warn(`Failed to open live person chat for event ${event.eventName}`, error);\n });\n });\n }\n }\n}\n","import { runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { LivePersonBootstrapService } from './live-person-bootstrap.service';\n\nexport function provide() {\n return [runOnFeatureInit(LivePersonBootstrapService)];\n}\n"],"names":["LivePersonConfig","_a","LazyClientConfigBase","__ngFactoryType__","factory","__ngConditionalFactory__","livePersonConfigFactory","ɵɵinject","LazyClientConfigService","__decorate","LazyClientConfig","key","product","ClientConfigProductName","SF","service","get","LivePersonApiService","_window","constructor","appInfoConfig","userService","livePersonConfig","page","webWorkerService","__privateAdd","inject","WINDOW","globalLivePersonApi","__privateGet","bwin","livepersonchat","triggerEvent","eventName","data","loadScriptData","then","_b","showInvite","handlePushChatShowInvite","eventParams","brand","channel","language","lang","culture","frontend","accountName","username","moneyCategory","loyalty","isAuthenticated","Object","assign","realPlayer","sendLivepersonEvent","triggerSectionOpen","section","isLivePersonPushChatEnabled","scriptPromise","Promise","resolve","onScriptLoaded","createWorker","WorkerType","LivePersonInterval","interval","lpTag","started","removeWorker","reject","AppInfoConfig","UserService","Page","WebWorkerService","ɵfac","providedIn","_LivePersonApiService","LivePersonBootstrapService","navigationService","urlService","livePersonApiService","idleService","logger","timerService","additionalActivityEvent","merge","fromEvent","onFeatureInit","nativeWindow","whenReady","subscribe","conditionalEvents","map","x","regex","RegExp","urlRegex","e","errorRemote","timeoutMilliseconds","globallivePersonApi","accountId","sendLiveChatEvents","locationChange","location","current","sendCashierLiveChatEvent","sendIdleLiveChatEvent","launchLiveChatFromCashier","search","toUpperCase","cashierEvent","toLowerCase","delete","goTo","url","setTimeout","catch","error","warn","event","find","test","absUrl","whenIdle","pipe","first","takeUntil","userName","customerId","split","NavigationService","UrlService","IdleService","Logger","TimerService","_LivePersonBootstrapService","provide","runOnFeatureInit"],"mappings":"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"}