{"version":3,"file":"chunk-kh6juxjn.js","sources":["packages/vanilla/tracking-feature/src/tracking.client-config.ts","packages/vanilla/tracking-feature/src/tracking-value-getters.service.ts","packages/vanilla/tracking-feature/src/tracking.models.ts","packages/vanilla/tracking-feature/src/data-layer-tracking.service.ts","packages/vanilla/tracking-feature/src/page-view-data-provider.ts","packages/vanilla/tracking-feature/src/page-view-tracking.service.ts","packages/vanilla/tracking-feature/src/run-after-lcp.token.ts","packages/vanilla/tracking-feature/src/gtm.service.ts","packages/vanilla/tracking-feature/src/data-layer-proxy.service.ts","packages/vanilla/tracking-feature/src/partytown.service.ts","packages/vanilla/tracking-feature/src/tag-manager.service.ts","packages/vanilla/tracking-feature/src/utm-service.ts","packages/vanilla/tracking-feature/src/tracking-bootstrap.service.ts","packages/vanilla/tracking-feature/src/tracking.feature.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\nimport { ClientTagManager } from './tracking.models';\n\n@LazyClientConfig({ key: 'vnTracking', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: trackingConfigFactory,\n})\nexport class TrackingConfig extends LazyClientConfigBase {\n isEnabled: boolean;\n dataLayerName: string;\n notTrackedQueryStrings: string[];\n tagManagerRenderers: string[];\n eventCallbackTimeoutInMilliseconds: number;\n dataLayerUpdateTimeoutInMilliseconds: number;\n pageViewDataProviderTimeout: number;\n clientTagManagers: ClientTagManager[];\n clientInjectionExcludes: string[];\n allowlist: string[];\n benchmarkThreshold: number;\n blocklist: string[];\n deviceBlockEnabled: boolean;\n deviceConcurrency: number;\n deviceMemory: number;\n enableLogging: boolean;\n enableOmitting: boolean;\n omitAll: boolean;\n omitPercentage: number;\n schedulerEnabled: boolean;\n trackingDelay: number;\n delayGTM: number;\n enableGTM: boolean;\n}\n\nexport function trackingConfigFactory(service: LazyClientConfigService) {\n return service.get(TrackingConfig);\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n CookieName,\n CookieService,\n DeviceService,\n FrontendHelperService,\n NativeAppService,\n NavigationService,\n Page,\n ParsedUrl,\n UrlService,\n UserService,\n WINDOW,\n} from '@frontend/vanilla/core';\nimport { BalancePropertiesConfig } from '@frontend/vanilla/features/balance-properties';\nimport { firstValueFrom } from 'rxjs';\n\nimport { TrackingConfig } from './tracking.client-config';\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TrackingValueGettersService {\n private referrer: string;\n private entryUrl: ParsedUrl;\n readonly #window = inject(WINDOW);\n\n constructor(\n private trackingConfig: TrackingConfig,\n private user: UserService,\n private navigationService: NavigationService,\n private urlService: UrlService,\n private page: Page,\n private cookieService: CookieService,\n private deviceService: DeviceService,\n private nativeAppService: NativeAppService,\n private frontendHelperService: FrontendHelperService,\n private balancePropertiesConfig: BalancePropertiesConfig,\n ) {}\n\n accountId() {\n return this.user.accountId;\n }\n\n async userBalance() {\n if (this.user.isAuthenticated) {\n await firstValueFrom(this.balancePropertiesConfig.whenReady);\n return this.balancePropertiesConfig.balanceProperties.accountBalance;\n }\n return 0;\n }\n\n userCurrency() {\n return this.user.currency;\n }\n\n userCountry() {\n return this.user.country;\n }\n\n userGeoCountry() {\n return this.user.geoCountry;\n }\n\n userLoyalty() {\n return this.user.loyalty || '';\n }\n\n userCustomerId() {\n return this.user.customerId;\n }\n\n userSegmentId() {\n return this.user.segmentId;\n }\n\n userStage() {\n return this.user.lifeCycleStage || '';\n }\n\n userPrestage() {\n return this.user.eWarningVip || '';\n }\n\n userMicroSegmentId() {\n return this.user.microSegmentId;\n }\n\n userChurnRate() {\n return this.user.churnRate;\n }\n\n userFutureValue() {\n return this.user.futureValue;\n }\n\n userPotentialVip() {\n return this.user.potentialVip;\n }\n\n userAgent() {\n return this.#window.navigator.userAgent;\n }\n\n isAuthenticated() {\n return !!this.user.username;\n }\n\n async hasPositiveBalance() {\n if (this.user.isAuthenticated) {\n await firstValueFrom(this.balancePropertiesConfig.whenReady);\n return this.balancePropertiesConfig.balanceProperties.accountBalance > 0;\n }\n return false;\n }\n\n locationAbsUrl() {\n return this.removeNotTrackedQueryStrings(this.navigationService.location.absUrl(), true);\n }\n\n locationHost() {\n return this.navigationService.location.host();\n }\n\n locationPathQueryAndFragment() {\n return TrackingValueGettersService.removeLeadingSlashes(this.removeNotTrackedQueryStrings(this.navigationService.location.url(), false));\n }\n\n browserScreenResolution() {\n if (this.#window) {\n const { width, height } = this.deviceService.windowRect();\n return `${width}x${height}`;\n } else {\n return `${this.deviceService.displayWidth}x${this.deviceService.displayHeight}`;\n }\n }\n\n redirectedFrom() {\n return this.cookieService.get(CookieName.RedirexOriginal);\n }\n\n trackerID() {\n return this.cookieService.get(CookieName.TrackerId);\n }\n\n trackingAffiliate() {\n return this.cookieService.get(CookieName.TrackingAffiliate);\n }\n\n abTestGroup() {\n return this.cookieService.get(CookieName.MmcoreBwinvar);\n }\n\n pageName() {\n return this.getPageName();\n }\n\n pageReferrer() {\n return this.removeNotTrackedQueryStrings(this.referrer, true);\n }\n\n browserOrientation() {\n return this.deviceService.currentOrientation;\n }\n\n nativeMode() {\n return this.nativeAppService.nativeMode;\n }\n\n isTouch() {\n return this.deviceService.isTouch;\n }\n\n cpuCores() {\n return this.deviceService.cpuCores;\n }\n\n cpuMaxFrequency() {\n return this.deviceService.cpuMaxFrequency;\n }\n\n totalRam() {\n return this.deviceService.totalRam;\n }\n\n model() {\n return this.deviceService.model;\n }\n\n nightMode() {\n return `Night Mode ${parseInt(this.cookieService.get(CookieName.DarkMode)) > 0 ? 'ON' : 'OFF'}`;\n }\n\n userKnown() {\n return !!this.cookieService.get(CookieName.LastVisitor);\n }\n\n internalCampaign() {\n return this.navigationService.location.search.get('trid');\n }\n\n deviceId() {\n return this.cookieService.get(CookieName.DeviceId);\n }\n\n lang() {\n return this.page.languageCode;\n }\n\n culture() {\n return this.page.lang;\n }\n\n frontend() {\n return this.frontendHelperService.getFrontendDescription();\n }\n\n medium() {\n return this.getMedium();\n }\n\n domain() {\n return this.page.domain;\n }\n\n fullEntryUrl() {\n return this.entryUrl;\n }\n\n entryUrlReferrer() {\n return this.cookieService.get(CookieName.EntryUrlReferrer);\n }\n\n packageVersion(packageName: string) {\n const nativeWindow = this.#window;\n if (nativeWindow.VERSIONS) {\n return nativeWindow.VERSIONS[packageName];\n }\n }\n\n setReferrer(referrer: string) {\n this.referrer = referrer;\n }\n\n setEntryUrl(entryUrl: string) {\n this.entryUrl = this.urlService.parse(entryUrl);\n }\n\n terminalId() {\n return this.cookieService.get(CookieName.TerminalId);\n }\n\n shopId() {\n return this.cookieService.get(CookieName.ShopId) || '0';\n }\n\n terminalType() {\n return this.nativeAppService.applicationName;\n }\n\n isTerminal() {\n return this.nativeAppService.isTerminal;\n }\n\n private removeNotTrackedQueryStrings(url: string, absolute: boolean): string {\n if (!url) {\n return '';\n }\n\n const parsedUrl = this.urlService.parse(url);\n for (const notTrackedQueryString of this.trackingConfig.notTrackedQueryStrings || []) {\n parsedUrl.search.delete(notTrackedQueryString);\n }\n return decodeURIComponent(absolute ? parsedUrl.absUrl() : parsedUrl.url());\n }\n\n private getPageName() {\n const langPrefix = `/${this.page.lang}`;\n const path = this.navigationService.location.path();\n const lowerCasePath = path.toLowerCase();\n let pageName: string;\n if (lowerCasePath.indexOf(langPrefix) === 0) {\n const result = path.substring(langPrefix.length);\n if (result === '') {\n pageName = '/';\n } else {\n pageName = result;\n }\n } else {\n pageName = path;\n }\n\n pageName = TrackingValueGettersService.removeLeadingSlashes(pageName);\n return pageName;\n }\n\n private getMedium() {\n if (this.nativeAppService.nativeMode === 'Unknown') {\n if (this.deviceService.isTablet) return 'tablet web';\n else if (this.deviceService.isMobile) return 'mobile web';\n else return 'desktop web';\n }\n\n let os = '';\n if (this.nativeAppService.isNativeApp || this.nativeAppService.isNativeWrapper) {\n if (this.deviceService.isiOS) os = 'ios';\n if (this.deviceService.isChrome) os = 'android';\n }\n\n return `${this.nativeAppService.nativeMode} ${os}`;\n }\n\n private static removeLeadingSlashes(input: string) {\n return input.replace(/^\\/*/, '');\n }\n}\n","/**\n * Represents a client-side tag manager script configured in {@link TrackingConfig}.\n *\n * @stable\n */\nexport interface ClientTagManager {\n name: string;\n script: string;\n}\n\n/**\n * @stable\n */\nexport interface TrackingServiceOptions {\n timeout: number;\n}\n\n/**\n * @stable\n */\nexport interface EventNames {\n pageView: string;\n userLogout: string;\n}\n\n/**\n * @internal\n */\nexport const eventNames: EventNames = {\n pageView: 'pageView',\n userLogout: 'Event.Logout',\n};\n\n/**\n * @internal\n */\nexport interface CommunicationType {\n id: string;\n name: string;\n selected: boolean;\n}\n\n/**\n * @internal\n */\nexport interface CommunicationSettings {\n settings: CommunicationType[];\n}\n\n/**\n * @internal\n */\nexport interface ContentItemTracking {\n event: string;\n data: { [key: string]: string };\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport {\n CookieName,\n CookieService,\n LocalStoreKey,\n LocalStoreService,\n Logger,\n MenuContentItem,\n SharedFeaturesApiService,\n TimerService,\n TrackingServiceProvider,\n TriggerEventPromiseResult,\n WINDOW,\n WebAnalyticsEventType,\n WebAnalyticsEvents,\n WebWorkerService,\n WindowEvent,\n WorkerType,\n} from '@frontend/vanilla/core';\nimport { isObject, mapKeys, pickBy } from 'lodash-es';\n\nimport { TrackingValueGettersService } from './tracking-value-getters.service';\nimport { TrackingConfig } from './tracking.client-config';\nimport { CommunicationSettings, CommunicationType, ContentItemTracking, TrackingServiceOptions, eventNames } from './tracking.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DataLayerTrackingService implements TrackingServiceProvider {\n readonly #window = inject(WINDOW);\n\n constructor(\n private trackingValueGettersService: TrackingValueGettersService,\n private trackingConfig: TrackingConfig,\n private cookieService: CookieService,\n private apiService: SharedFeaturesApiService,\n private log: Logger,\n private timerService: TimerService,\n private localStoreService: LocalStoreService,\n webWorkerService: WebWorkerService,\n ) {\n // Create interval to update data layer when GTM script loads.\n webWorkerService.createWorker(WorkerType.DataLayerTrackingInterval, { interval: 500 }, () => {\n if (this.gtmLoaded) {\n this.processLocalStore();\n webWorkerService.removeWorker(WorkerType.DataLayerTrackingInterval);\n }\n });\n }\n\n private get gtmEnabled(): boolean {\n return this.trackingConfig.tagManagerRenderers.includes('GoogleTagManagerRenderer') && !!this.#window.google_tag_manager;\n }\n\n private get gtmLoaded(): boolean {\n return (\n this.#window.dataLayer?.some((x: { event: string }) => x.event === WindowEvent.VanillaGtmLoaded) &&\n this.#window.dataLayer?.some((x: { event: string }) => x.event === WindowEvent.GtmLoad)\n );\n }\n\n async addInitialValues() {\n this.updateDataLayerEntryInfo();\n await this.updateUserValues();\n this.updateDataLayer({\n 'browser.userAgent': this.trackingValueGettersService.userAgent(),\n 'browser.isTouch': this.trackingValueGettersService.isTouch(),\n 'page.trackerID': this.trackingValueGettersService.trackerID(),\n 'page.redirectedFrom': this.trackingValueGettersService.redirectedFrom(),\n 'page.nightModeStatus': this.trackingValueGettersService.nightMode(),\n 'page.language': this.trackingValueGettersService.lang(),\n 'page.culture': this.trackingValueGettersService.culture(),\n 'page.frontend': this.trackingValueGettersService.frontend(),\n 'page.domain': this.trackingValueGettersService.domain(),\n 'page.medium': this.trackingValueGettersService.medium(),\n 'native.nativeMode': this.trackingValueGettersService.nativeMode(),\n 'user.profile.dvID': this.trackingValueGettersService.deviceId(),\n 'user.session.internalCampaign': this.trackingValueGettersService.internalCampaign(),\n 'device.cpuCores': this.trackingValueGettersService.cpuCores(),\n 'device.cpuMaxFrequency': this.trackingValueGettersService.cpuMaxFrequency(),\n 'device.totalRam': this.trackingValueGettersService.totalRam(),\n 'device.model': this.trackingValueGettersService.model(),\n 'page.trackingAffiliate': this.trackingValueGettersService.trackingAffiliate(),\n 'browser.orientation': this.trackingValueGettersService.browserOrientation(),\n 'browser.screenResolution': this.trackingValueGettersService.browserScreenResolution(),\n });\n\n this.updateDataLayerSessionId();\n }\n\n async updateUserValues() {\n this.updateDataLayer({\n 'user.profile.accountID': this.trackingValueGettersService.accountId(),\n 'user.profile.bal': await this.trackingValueGettersService.userBalance(),\n 'user.profile.currency': this.trackingValueGettersService.userCurrency(),\n 'user.profile.country': this.trackingValueGettersService.userCountry(),\n 'user.profile.loyaltyStatus': this.trackingValueGettersService.userLoyalty(),\n 'user.profile.opid': this.trackingValueGettersService.userCustomerId(),\n 'user.profile.vid': this.trackingValueGettersService.userSegmentId(),\n 'user.profile.stage': this.trackingValueGettersService.userStage(),\n 'user.profile.prestage': this.trackingValueGettersService.userPrestage(),\n 'user.profile.mid': this.trackingValueGettersService.userMicroSegmentId(),\n 'user.profile.chid': this.trackingValueGettersService.userChurnRate(),\n 'user.profile.fvid': this.trackingValueGettersService.userFutureValue(),\n 'user.profile.pvid': this.trackingValueGettersService.userPotentialVip(),\n 'user.session.geoIPCountry': this.trackingValueGettersService.userGeoCountry(),\n 'user.session.abTestGroup': this.trackingValueGettersService.abTestGroup(),\n 'user.hasPositiveBalance': await this.trackingValueGettersService.hasPositiveBalance(),\n 'user.isAuthenticated': this.trackingValueGettersService.isAuthenticated(),\n 'user.isExisting': this.trackingValueGettersService.userKnown(),\n 'browser.orientation': this.trackingValueGettersService.browserOrientation(),\n 'browser.screenResolution': this.trackingValueGettersService.browserScreenResolution(),\n });\n }\n\n async updateDataLayer(data?: any): Promise {\n return new Promise((resolve) => {\n if (isObject(data) && !Array.isArray(data)) {\n if (this.gtmLoaded) {\n if (!this.trackingConfig.schedulerEnabled && this.trackingConfig.dataLayerUpdateTimeoutInMilliseconds) {\n this.timerService.scheduleIdleCallback(() => {\n this.#window[this.trackingConfig.dataLayerName].push(data);\n resolve();\n }, this.trackingConfig.dataLayerUpdateTimeoutInMilliseconds);\n } else {\n this.#window[this.trackingConfig.dataLayerName].push(data);\n resolve();\n }\n } else {\n const tracking = this.getDataFromStore();\n tracking.push(data);\n\n this.localStoreService.set(LocalStoreKey.Tracking, JSON.stringify(tracking));\n resolve();\n }\n }\n });\n }\n\n async trackEvents(item: MenuContentItem, eventType: WebAnalyticsEventType) {\n if (item.webAnalytics) {\n try {\n const parsedValue: WebAnalyticsEvents = JSON.parse(item.webAnalytics);\n\n switch (eventType) {\n case WebAnalyticsEventType.load:\n const load = parsedValue?.load;\n\n if (load) {\n await this.triggerEvent(load.eventName, load.data);\n }\n break;\n case WebAnalyticsEventType.click:\n const click = parsedValue?.click;\n\n if (click) {\n if (click.data['component.URLClicked'] === 'link') {\n click.data['component.URLClicked'] = item.url;\n }\n await this.triggerEvent(click.eventName, click.data);\n }\n break;\n case WebAnalyticsEventType.close:\n const close = parsedValue?.close;\n\n if (close) {\n await this.triggerEvent(close.eventName, close.data);\n }\n break;\n }\n } catch (error) {\n this.log.errorRemote(\n `Failed to parse or track WebAnalytics data from item:${item.name}. Provided WebAnalytics data:${item.webAnalytics}`,\n error,\n );\n }\n }\n }\n\n async triggerEvent(eventName: string, data?: any, options?: TrackingServiceOptions): Promise {\n // GTM must be enabled, not only loaded to make sure it's injected into a page via Vanilla's data layer tracking implementation.\n const eventTimeout = this.gtmEnabled ? options?.timeout || this.trackingConfig.eventCallbackTimeoutInMilliseconds : 0;\n\n return this.runWithTimeout(\n new Promise((resolve, reject) => {\n if (eventName.indexOf('error.') === 0) {\n // \"error.*\" eventName is reserved for errors reporting\n return reject('The \"error.*\" eventName is reserved for errors reporting');\n }\n\n if (!data || Object.keys(data).length === 0) {\n return reject('Tracking data is required');\n }\n\n if (eventName === eventNames.userLogout) {\n this.updateUserValues();\n }\n\n data = {\n event: eventName,\n ...data,\n };\n\n if (this.gtmEnabled) {\n data = {\n eventCallback: resolve.bind(null, TriggerEventPromiseResult.Normal),\n eventTimeout,\n ...data,\n };\n }\n\n this.updateDataLayer(data);\n\n // Tracking cleanup\n this.cookieService.remove(CookieName.RedirexOriginal);\n\n // Resolve immediately when GTM is not present (other tag managers don't support event callback)\n if (!this.gtmEnabled) {\n resolve(TriggerEventPromiseResult.Normal);\n }\n }),\n eventTimeout,\n );\n }\n\n async reportErrorObject(error: any) {\n return this.updateDataLayer({\n event: 'error',\n error,\n });\n }\n\n reportError(errorDetail: any) {\n this.updateDataLayer({\n event: encodeURIComponent(`error.${JSON.stringify(errorDetail)}`),\n });\n }\n\n trackContentItemEvent(parameters: { [name: string]: string } | undefined, parameterName: string) {\n const tracking = this.getContentItemTracking(parameters, parameterName);\n\n if (tracking) {\n this.triggerEvent(tracking.event, tracking.data);\n }\n }\n\n setReferrer(referrer: string) {\n this.trackingValueGettersService.setReferrer(referrer);\n }\n\n /**\n * Gets user communication settings and trigger the tracking event `Event.Functionality.Cts`\n * with data formatted as follows: **Email:Yes|Post:No|SMS:Yes|Phone:No**\n */\n updateUserContactabilityStatus() {\n this.apiService.get('communicationsettings').subscribe((data: CommunicationSettings) => {\n const cts = data.settings.map((c: CommunicationType) => `${c.name}:${c.selected ? 'Yes' : 'No'}`).join('|');\n this.triggerEvent('Event.Functionality.Cts', { 'user.profile.cts': cts }); //Format to Send: Email:Yes|Post:No|SMS:Yes|Phone:No.\n });\n }\n\n getContentItemTracking(parameters: { [name: string]: string } | undefined, parameterName: string): ContentItemTracking | null {\n parameters = parameters || {};\n const event = parameters[parameterName];\n\n if (!event) {\n return null;\n }\n\n const trackingDataPrefix = parameterName + '.';\n const data = mapKeys(\n pickBy(parameters, (_: string, k: string) => k.startsWith(trackingDataPrefix)),\n (_: string, k: string) => k.replace(trackingDataPrefix, ''),\n );\n\n return { event, data };\n }\n\n private getDataFromStore(): any[] {\n const trackingData = this.localStoreService.get(LocalStoreKey.Tracking);\n\n return trackingData ? JSON.parse(trackingData) : [];\n }\n\n private processLocalStore() {\n const trackings = this.getDataFromStore();\n\n if (trackings.length > 0) {\n trackings.forEach((data: any) => this.updateDataLayer(data));\n\n this.localStoreService.remove(LocalStoreKey.Tracking);\n }\n }\n\n private runWithTimeout(promise: Promise, timeout: number): Promise {\n return new Promise((resolve, reject) => {\n const timeoutId = this.timerService.scheduleIdleCallback(() => resolve(TriggerEventPromiseResult.Timeout), timeout);\n\n promise.then(\n (result: TriggerEventPromiseResult) => {\n timeoutId();\n resolve(result);\n },\n (error: any) => {\n timeoutId();\n reject(error);\n },\n );\n });\n }\n\n private updateDataLayerEntryInfo() {\n const entryUrl = this.cookieService.get(CookieName.EntryUrl);\n\n if (entryUrl) {\n this.trackingValueGettersService.setEntryUrl(entryUrl);\n this.updateDataLayer({\n event: 'v8Launch',\n v8: {\n tech: {\n build: this.trackingValueGettersService.packageVersion('@frontend/vanilla'),\n label: this.trackingValueGettersService.domain(),\n },\n entry: {\n url: this.trackingValueGettersService.fullEntryUrl().absUrl(),\n path: this.trackingValueGettersService.fullEntryUrl().path(),\n referrer: this.trackingValueGettersService.entryUrlReferrer(),\n utms: {\n source: this.trackingValueGettersService.fullEntryUrl().search.get('utm_source'),\n medium: this.trackingValueGettersService.fullEntryUrl().search.get('utm_medium'),\n campaign: this.trackingValueGettersService.fullEntryUrl().search.get('utm_campaign'),\n content: this.trackingValueGettersService.fullEntryUrl().search.get('utm_content'),\n keyword: this.trackingValueGettersService.fullEntryUrl().search.get('utm_term'),\n },\n },\n },\n });\n }\n }\n\n private updateDataLayerSessionId() {\n if (this.#window.hasOwnProperty('decibelInsight')) {\n this.#window.decibelInsight('ready', () => {\n this.updateDataLayer({ 'user.decibelID': this.#window.decibelInsight('getSessionId') });\n });\n } else {\n this.#window._da_ready = () => {\n this.updateDataLayer({ 'user.decibelID': this.#window.decibelInsight('getSessionId') });\n };\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { PageViewContext, PageViewDataProvider, TrackingData } from '@frontend/vanilla/core';\nimport { Observable, of } from 'rxjs';\n\nimport { TrackingValueGettersService } from './tracking-value-getters.service';\n\n@Injectable()\nexport class DefaultPageViewDataProvider implements PageViewDataProvider {\n constructor(private valueGetters: TrackingValueGettersService) {}\n\n getData(context: PageViewContext = { navigationId: 0, utm: null }): Observable {\n let data: Record = {\n 'page.referrer': this.valueGetters.pageReferrer(),\n 'page.url': this.valueGetters.locationAbsUrl(),\n 'page.host': this.valueGetters.locationHost(),\n 'page.pathQueryAndFragment': this.valueGetters.locationPathQueryAndFragment(),\n 'page.name': this.valueGetters.pageName(),\n };\n\n if (this.valueGetters.isTerminal()) {\n data = {\n ...data,\n ...{\n 'page.terminalId': this.valueGetters.terminalId(),\n 'page.terminalType': this.valueGetters.terminalType(),\n 'page.shopId': this.valueGetters.shopId(),\n },\n };\n }\n\n if (context?.utm) {\n for (const key in context.utm) {\n if ((context.utm as any)[key]) {\n data[key.replace('utm_', 'utms.')] = (context.utm as any)[key];\n }\n }\n }\n\n return of(data);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport {\n PAGE_VIEW_DATA_PROVIDER,\n PageViewContext,\n PageViewDataProvider,\n ProductInjector,\n TrackingData,\n TrackingService,\n Utm,\n} from '@frontend/vanilla/core';\nimport { NEVER, Observable, combineLatest, of, race } from 'rxjs';\nimport { catchError, first, map, timeout } from 'rxjs/operators';\n\nimport { TrackingConfig } from './tracking.client-config';\nimport { eventNames } from './tracking.models';\n\nclass PageView {\n data: TrackingData | null;\n\n private dataCallback: (() => void) | undefined;\n\n constructor(dataSource: Observable) {\n dataSource.subscribe((data: TrackingData) => {\n this.data = data;\n\n if (this.dataCallback) {\n this.dataCallback();\n }\n });\n }\n\n onData(fn: () => void) {\n if (this.data) {\n fn();\n } else {\n this.dataCallback = fn;\n }\n }\n}\n\n@Injectable()\nexport class PageViewTrackingService {\n private pageViewQueue: PageView[] = [];\n\n constructor(\n private productInjector: ProductInjector,\n private trackingConfig: TrackingConfig,\n private trackingService: TrackingService,\n @Inject(PAGE_VIEW_DATA_PROVIDER) private currentDataProviders: PageViewDataProvider[],\n ) {}\n\n trackPageView(navigationId: number): void;\n trackPageView(utm: Utm): void;\n trackPageView(utm: Utm, navigationId: number): void;\n trackPageView(...args: any[]): void {\n const navigationId = this.toNumberOrDefault(args[0], this.toNumberOrDefault(args[1], 0));\n const context: PageViewContext = { navigationId, utm: args[0].utm_source === undefined ? {} : args[0] };\n const providers = Object.assign(this.productInjector.getMultiple(PAGE_VIEW_DATA_PROVIDER), this.currentDataProviders);\n const data = combineLatest(\n providers.map((p: PageViewDataProvider) => {\n return race(\n p.getData(context),\n NEVER.pipe(\n timeout(this.trackingConfig.pageViewDataProviderTimeout),\n catchError(() => of({})),\n ),\n ).pipe(first());\n }),\n ).pipe(\n map((data: TrackingData[]) => {\n return Object.assign({}, ...data);\n }),\n );\n const pageView = new PageView(data);\n this.pageViewQueue.push(pageView);\n\n pageView.onData(() => this.processPageViewQueue());\n }\n\n private processPageViewQueue() {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const pageView = this.pageViewQueue[0];\n\n if (!pageView || !pageView.data) {\n break;\n }\n this.trackingService.triggerEvent(eventNames.pageView, pageView.data);\n this.pageViewQueue.shift();\n }\n }\n\n private toNumberOrDefault = (v: any, d: number) => {\n const value = Number(v);\n\n return isNaN(value) ? d : v;\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport type RunAfterLcpType = {\n runAfterLcp(fn: () => void): void;\n};\nexport const RUN_AFTER_LCP_TOKEN = new InjectionToken('lcp-token', {\n providedIn: 'root',\n factory: () => ({\n runAfterLcp(fn: () => void) {\n fn();\n },\n }),\n});\n","import { Injectable, inject } from '@angular/core';\n\nimport { TagManagerService, TimerService, WINDOW } from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\n\nimport { RUN_AFTER_LCP_TOKEN } from './run-after-lcp.token';\nimport { TrackingConfig } from './tracking.client-config';\n\n@Injectable({ providedIn: 'root' })\nexport class GtmService {\n readonly #window = inject(WINDOW);\n private tagManagerService = inject(TagManagerService);\n private timerService = inject(TimerService);\n private gtmConfig = inject(TrackingConfig);\n private runAfterLcpToken = inject(RUN_AFTER_LCP_TOKEN);\n\n async renderGTMTag() {\n await firstValueFrom(this.gtmConfig.whenReady);\n if (this.gtmConfig?.enableGTM) {\n if (this.#window.partytown) {\n this.loadGTM();\n } else {\n this.runAfterLcpToken.runAfterLcp(() => {\n this.timerService.scheduleIdleCallback(() => this.loadGTM(), this.gtmConfig.delayGTM);\n });\n }\n }\n }\n\n private async loadGTM() {\n await firstValueFrom(this.tagManagerService.whenReady);\n this.tagManagerService.loadPartyTownGTM();\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { TimerService, WINDOW, WindowEvent } from '@frontend/vanilla/core';\nimport { RxStrategyProvider } from '@rx-angular/cdk/render-strategies';\nimport { firstValueFrom } from 'rxjs';\n\nimport { TrackingConfig } from './tracking.client-config';\n\n@Injectable({ providedIn: 'root' })\nexport class DataLayerProxyService {\n private trackingConfig = inject(TrackingConfig);\n private timerService = inject(TimerService);\n private strategyProvider = inject(RxStrategyProvider);\n readonly #window = inject(WINDOW);\n\n private requiredEvents = [\n WindowEvent.VanillaGtmLoaded,\n WindowEvent.GtmLoad,\n 'webVital',\n 'gtm.js',\n 'webVital',\n 'OptanonLoaded',\n 'OneTrustLoaded',\n 'OneTrustGroupsUpdated',\n ];\n private patched = false;\n private schedulerEnabled = false;\n\n async patchDataLayer(forceSchedulerDisabled = false) {\n await firstValueFrom(this.trackingConfig.whenReady);\n this.schedulerEnabled = !forceSchedulerDisabled && this.trackingConfig.schedulerEnabled;\n\n if (\n !this.patched &&\n this.trackingConfig.isEnabled &&\n (this.trackingConfig.enableLogging || this.schedulerEnabled || this.trackingConfig.enableOmitting)\n ) {\n this.#window[this.trackingConfig.dataLayerName] = this.createDataLayerProxy(this.#window[this.trackingConfig.dataLayerName]);\n this.patched = true;\n }\n }\n\n // this proxy is here to make sure the `requestIdleCallback` is always\n // wrapped around the most outer function call\n // all gtm containers apply monkey-patches to the dataLayer.push method\n // while respecting already applied patches\n // we end up in a chain of overridden function bodies\n // to make sure the `requestIdleCallback` is the most outer function\n // we use a Proxy that keeps track of overrides to the `push` method\n private createDataLayerProxy(origDataLayer = []) {\n const idleWrapper = (fn: Function) => {\n this.timerService.scheduleIdleCallback(() => {\n // make sure that tracking is executed after the render queue is empty\n this.strategyProvider\n .schedule(() => fn(), {\n patchZone: false,\n strategy: 'idle',\n })\n .subscribe();\n }, this.trackingConfig.trackingDelay);\n\n return origDataLayer.length + 1;\n };\n\n const { enableOmitting, omitAll, enableLogging } = this.trackingConfig;\n const schedulerEnabled = this.schedulerEnabled;\n const blockDevice = this.trackingConfig.deviceBlockEnabled && this.isLowTierDevice();\n const isNextCallSuppressed = this.isNextCallSuppressed.bind(this);\n const allowlist = new Set(...(this.trackingConfig.allowlist || []), ...this.requiredEvents);\n const blocklist = new Set(this.trackingConfig.blocklist || []);\n const window = this.#window;\n const measureTask = measureTaskDuration;\n\n return new Proxy(origDataLayer, {\n set(target, key, newValue: unknown) {\n if (key === 'push') {\n target[key] = (...args: any) => {\n const eventName = args?.[0]?.event;\n\n const shouldBeOmitted =\n // check if omitting feature is enabled\n enableOmitting &&\n // not in allowlist\n !allowlist.has(eventName) &&\n // omit all OR in blocklist OR low tier device blocking enabled and device is slow OR percentage blocking enabled and event got in range\n (omitAll || blocklist.has(eventName) || blockDevice || isNextCallSuppressed());\n\n if (shouldBeOmitted) {\n return () => 0;\n }\n\n const callback: Function = () => {\n const work = (newValue as Function).bind(target, ...args);\n\n if (enableLogging || window.logTrackingPerformance) {\n return measureTask(work, args, eventName);\n }\n return work();\n };\n\n return schedulerEnabled ? idleWrapper(callback) : callback();\n };\n } else {\n target[key as any] = newValue;\n }\n\n return true;\n },\n });\n }\n\n private isLowTierDevice(): boolean {\n const deviceConcurrency = navigator.hardwareConcurrency;\n const minDeviceConcurrency = this.trackingConfig.deviceConcurrency;\n\n if (minDeviceConcurrency && deviceConcurrency && deviceConcurrency <= minDeviceConcurrency) {\n return true;\n }\n\n const minDeviceMemory = this.trackingConfig.deviceMemory;\n const deviceMemory = (navigator as { deviceMemory?: number }).deviceMemory;\n\n if (minDeviceMemory && deviceMemory && deviceMemory <= minDeviceMemory) {\n return true;\n }\n\n const benchmarkThreshold = this.trackingConfig.benchmarkThreshold;\n\n return !!(benchmarkThreshold && benchmark() > benchmarkThreshold);\n }\n\n private isNextCallSuppressed(): boolean {\n const omitPercentage = this.trackingConfig.omitPercentage;\n\n return !!omitPercentage && Math.random() * 100 <= omitPercentage;\n }\n}\n\nfunction isPrime(num: number): boolean {\n for (let i = 2, s = Math.sqrt(num); i <= s; i++) {\n if (num % i === 0) {\n return false;\n }\n }\n\n return num > 1;\n}\n\nfunction calculatePrimes(max: number): number[] {\n const primes: number[] = [];\n\n for (let i = 1; i < max; i++) {\n if (isPrime(i)) {\n primes.push(i);\n }\n }\n\n return primes;\n}\n\nfunction benchmark(): number {\n const start = performance.now();\n calculatePrimes(20_000);\n\n return performance.now() - start;\n}\n\nfunction measureTaskDuration(work: Function, args: unknown, eventName: string) {\n const startTime = performance.now();\n const name = eventName || '[anonymous event]';\n const startMark = `GTM Event ${name} start`;\n performance.mark(`GTM Event ${name} start`);\n const r = work();\n const endMark = `GTM Event ${name} end`;\n performance.mark(endMark);\n performance.measure(`GTM Event ${name}`, startMark, endMark);\n const endTime = performance.now();\n\n const runtime = Math.ceil(endTime - startTime);\n const color = runtime >= 100 ? 'red' : 'green';\n\n // eslint-disable-next-line no-console\n console.log(`Analytics tracking: ${name} took %c${runtime}ms`, `color: ${color}`, {\n withArgs: args,\n });\n\n return r;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Injector, effect, inject } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CookieService, DeviceService, NavigationService, WINDOW } from '@frontend/vanilla/core';\nimport { debounceTime, distinctUntilChanged, fromEvent, interval, map, merge, startWith, switchMap } from 'rxjs';\n\nconst eventQueueKey = '_ptEventsQueue';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PartytownService {\n private deviceService = inject(DeviceService);\n private injector = inject(Injector);\n private navigationService = inject(NavigationService);\n private cookieService = inject(CookieService);\n private router = inject(Router);\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n private navigator = this.#window.navigator;\n private performance = this.#window.performance;\n\n readonly sharedStorageEnabled =\n this.#window.partytown &&\n this.#window.partytown.forward.some(\n (forward: string | [string, unknown]) =>\n forward === 'ptSharedStorage.set' || (Array.isArray(forward) && forward[0] === 'ptSharedStorage.set'),\n );\n readonly cookieStorageEnabled =\n this.#window.partytown &&\n this.#window.partytown.forward.some(\n (forward: string | [string, unknown]) =>\n forward === 'ptCookieStorage.set' || (Array.isArray(forward) && forward[0] === 'ptCookieStorage.set'),\n );\n\n private readonly ptSharedStorage: {\n set: (key: string, value: any) => void;\n } = this.#window.ptSharedStorage ?? {\n set: () => {},\n };\n\n private readonly ptWorkerLocation: {\n set: (location: Location) => void;\n } = this.#window.ptWorkerLocation ?? {\n set: () => {},\n };\n\n private readonly ptCookieStorage: {\n set: (cookies: string) => void;\n } = this.#window.ptCookieStorage ?? {\n set: () => {},\n };\n\n createEventReplayQueue() {\n const dataLayer = this.#window.dataLayer || [];\n replayEvents(dataLayer);\n const origPush = dataLayer.push;\n\n dataLayer.push = (...args: any) => {\n addToQueue(JSON.stringify(args));\n return origPush.apply(dataLayer, args);\n };\n }\n\n feedSharedStorage() {\n if (this.sharedStorageEnabled) {\n this.setStaticProps();\n\n this.createDimensionsEffect();\n\n this.subscribeToDynamicProps();\n }\n }\n\n feedCookieStorage() {\n if (this.cookieStorageEnabled) {\n this.cookieService.getCookieUpdates().subscribe((value) => {\n this.ptCookieStorage.set(value);\n });\n }\n }\n\n private getWindowOffsetUpdates() {\n return fromEvent(this.#window, 'scroll').pipe(debounceTime(50));\n }\n\n private setStaticProps() {\n // window props\n // ToDo: check if this patch doesn't break tracking\n // this.ptSharedStorage.set('window.opener', this.#window.opener);\n\n // document props\n this.ptSharedStorage.set('document.characterSet', this._doc.characterSet);\n this.ptSharedStorage.set('document.referrer', this._doc.referrer);\n this.ptSharedStorage.set('document.domain', this._doc.domain);\n // this.ptSharedStorage.set('document.prerendering', (this._doc as any).prerendering);\n\n // navigator props\n this.ptSharedStorage.set('window.navigator.loadPurpose', (this.navigator as any).loadPurpose);\n // this.ptSharedStorage.set('window.navigator.userLanguage', (this.navigator as any).userLanguage);\n this.ptSharedStorage.set('window.navigator.cookieEnabled', this.navigator.cookieEnabled);\n this.ptSharedStorage.set('window.navigator.cookieDeprecationLabel', (this.navigator as any).cookieDeprecationLabel);\n this.ptSharedStorage.set('window.navigator.vendor', this.navigator.vendor);\n this.ptSharedStorage.set('window.navigator.doNotTrack', this.navigator.doNotTrack);\n this.ptSharedStorage.set('window.navigator.maxTouchPoints', this.navigator.maxTouchPoints);\n this.ptSharedStorage.set('window.navigator.msDoNotTrack', (this.navigator as any)['msDoNotTrack']);\n\n // perf timings\n this.ptSharedStorage.set('performance.timeOrigin', this.performance.timeOrigin);\n this.ptSharedStorage.set('performancetiming.navigationStart', this.performance.timing.navigationStart);\n this.ptSharedStorage.set('performancetiming.redirectStart', this.performance.timing.redirectStart);\n this.ptSharedStorage.set('performancetiming.redirectEnd', this.performance.timing.redirectEnd);\n this.ptSharedStorage.set('performancetiming.fetchStart', this.performance.timing.fetchStart);\n this.ptSharedStorage.set('performancetiming.domainLookupStart', this.performance.timing.domainLookupStart);\n this.ptSharedStorage.set('performancetiming.domainLookupEnd', this.performance.timing.domainLookupEnd);\n this.ptSharedStorage.set('performancetiming.connectStart', this.performance.timing.connectStart);\n this.ptSharedStorage.set('performancetiming.secureConnectionStart', this.performance.timing.secureConnectionStart);\n this.ptSharedStorage.set('performancetiming.connectEnd', this.performance.timing.connectEnd);\n this.ptSharedStorage.set('performancetiming.requestStart', this.performance.timing.requestStart);\n this.ptSharedStorage.set('performancetiming.responseStart', this.performance.timing.responseStart);\n this.ptSharedStorage.set('performancetiming.responseEnd', this.performance.timing.responseEnd);\n this.ptSharedStorage.set('performancetiming.unloadEventStart', this.performance.timing.unloadEventStart);\n this.ptSharedStorage.set('performancetiming.unloadEventEnd', this.performance.timing.unloadEventEnd);\n this.ptSharedStorage.set('performancetiming.domLoading', this.performance.timing.domLoading);\n this.ptSharedStorage.set('performancetiming.domInteractive', this.performance.timing.domInteractive);\n this.ptSharedStorage.set('performancetiming.domContentLoadedEventStart', this.performance.timing.domContentLoadedEventStart);\n this.ptSharedStorage.set('performancetiming.domContentLoadedEventEnd', this.performance.timing.domContentLoadedEventEnd);\n this.ptSharedStorage.set('performancetiming.domComplete', this.performance.timing.domComplete);\n this.ptSharedStorage.set('performancetiming.loadEventStart', this.performance.timing.loadEventStart);\n this.ptSharedStorage.set('performancetiming.loadEventEnd', this.performance.timing.loadEventEnd);\n }\n\n private createDimensionsEffect() {\n effect(\n () => {\n const windowRect = this.deviceService.windowRect();\n const screenHeight = this.deviceService.visualViewportHeight();\n const screenWidth = this.deviceService.visualViewportWidth();\n\n // dimensions\n this.ptSharedStorage.set('screen.width', screenWidth);\n this.ptSharedStorage.set('screen.colorDepth', screen.colorDepth);\n this.ptSharedStorage.set('html.clientWidth', windowRect.width);\n this.ptSharedStorage.set('html.innerWidth', screenWidth);\n this.ptSharedStorage.set('html.scrollWidth', windowRect.width);\n this.ptSharedStorage.set('html.offsetWidth', windowRect.width);\n this.ptSharedStorage.set('html.offsetHeight', windowRect.height);\n this.ptSharedStorage.set('screen.height', screenHeight);\n this.ptSharedStorage.set('body.offsetHeight', windowRect.height);\n this.ptSharedStorage.set('body.scrollHeight', windowRect.height);\n this.ptSharedStorage.set('html.clientHeight', screenHeight);\n this.ptSharedStorage.set('html.innerHeight', screenHeight);\n this.ptSharedStorage.set('html.scrollHeight', windowRect.height);\n this.ptSharedStorage.set('window.innerWidth', windowRect.width);\n this.ptSharedStorage.set('window.innerHeight', windowRect.height);\n },\n { injector: this.injector },\n );\n }\n\n private subscribeToDynamicProps() {\n this.navigationService.locationChange\n .pipe(\n switchMap(() =>\n merge(\n // whenever queryParams change, update the route\n this.router.routerState.root.queryParamMap.pipe(startWith(this.router.routerState.root.snapshot.queryParamMap)),\n // We have to do polling here, as the angular router doesn't send us ANY\n // information that e.g. ?tab=score or ?market=5 changed\n // for the current hotfix state this is fine!\n interval(2500),\n ),\n ),\n startWith(true),\n map(() => this.#window.location.href),\n distinctUntilChanged(),\n )\n .subscribe(() => {\n this.ptWorkerLocation.set(this.#window.location);\n this.ptSharedStorage.set('document.title', this._doc.title);\n this.ptSharedStorage.set('window.location', this.#window.location);\n });\n\n this.getWindowOffsetUpdates()\n .pipe(startWith(true))\n .subscribe(() => {\n this.ptSharedStorage.set('window.pageYOffset', this.#window.pageYOffset);\n this.ptSharedStorage.set('window.scrollY', this.#window.scrollY);\n });\n }\n}\n\nconst getEventsQueue = (): string[] => {\n try {\n const savedEventsItem = localStorage.getItem(eventQueueKey);\n return savedEventsItem ? JSON.parse(savedEventsItem) : [];\n } catch (error) {\n console.error('Failed to parse events queue:', error);\n return [];\n }\n};\n\nconst addToQueue = (event: string) => {\n try {\n const eventsQueue = getEventsQueue();\n eventsQueue.push(event);\n localStorage.setItem(eventQueueKey, JSON.stringify(eventsQueue));\n } catch (error) {\n console.error('Failed to store event in a queue:', error);\n }\n};\n\nconst replayEvents = (dataLayer: unknown[]) => {\n try {\n const eventsQueue = getEventsQueue();\n\n eventsQueue.forEach((event) => {\n const parsedArgs = JSON.parse(event);\n dataLayer.push(...parsedArgs);\n });\n } catch (error) {\n console.error('Failed to restore events:', error);\n }\n\n localStorage.removeItem(eventQueueKey);\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, NgZone, inject } from '@angular/core';\n\nimport { WINDOW, WindowEvent } from '@frontend/vanilla/core';\nimport { fromEvent, take } from 'rxjs';\n\nimport { DataLayerProxyService } from './data-layer-proxy.service';\nimport { PartytownService } from './partytown.service';\nimport { TrackingConfig } from './tracking.client-config';\nimport { ClientTagManager } from './tracking.models';\n\n/**\n * @whatItDoes Injects all configured client-side tag manager scripts into the DOM.\n *\n * @description\n *\n * Client-side tag managers can be configured using TrackingConfig.\n *\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TagManagerService {\n private readonly _doc = inject(DOCUMENT);\n readonly #window = inject(WINDOW);\n private partytownService = inject(PartytownService);\n\n /**\n * @internal\n */\n constructor(\n private trackingConfig: TrackingConfig,\n private dataLayerProxy: DataLayerProxyService,\n private ngZone: NgZone,\n ) {}\n\n /** @internal */\n init() {\n if (!this.trackingConfig.isEnabled) {\n return;\n }\n\n const configured = this.trackingConfig.clientTagManagers || [];\n const excludes = this.trackingConfig.clientInjectionExcludes || [];\n\n configured.filter((current) => !excludes.includes(current.name)).forEach((current) => this.injectScript(current));\n }\n\n /** @stable */\n get availableClientTagManagers(): string[] {\n return (this.trackingConfig.clientTagManagers || []).map((t: ClientTagManager) => t.name);\n }\n\n /** Adds a tag manager init script for the given tag managerer renderer name to the script unless present.\n *\n * @stable\n */\n async load(rendererName: string, type?: string): Promise {\n const configured = this.trackingConfig.clientTagManagers || [];\n const tagManager = configured.find((current) => current.name === rendererName);\n\n if (!tagManager) {\n throw new Error(`Client TagManager \"${rendererName}\" does not exist.`);\n }\n\n const existing = this._doc.querySelector('#' + tagManager.name);\n\n if (existing) {\n return existing;\n }\n\n const forceSchedulerDisabled = type === 'text/partytown';\n\n await this.dataLayerProxy.patchDataLayer(forceSchedulerDisabled);\n return this.injectScript(tagManager, type);\n }\n\n private injectScript(tagManager: ClientTagManager, type = 'text/javascript'): Promise {\n const id = tagManager.name;\n const script = this._doc.createElement('script');\n script.async = true;\n script.id = id;\n script.text = tagManager.script;\n script.type = type;\n\n const promise = new Promise((resolve, reject) => {\n script.onload = () => resolve(script);\n script.onerror = () => reject(new Error(`Client TagManager \"${id}\" failed to load.`));\n });\n\n this._doc.body.append(script);\n\n return promise;\n }\n\n public loadPartyTownGTM() {\n const isDisabledLocally = localStorage.getItem('partytown-disabled') === '1';\n const isServiceWorkerSupported = 'serviceWorker' in navigator;\n if (isServiceWorkerSupported && !isDisabledLocally && this.#window.partytown && this.#window._ptReady) {\n this.#window._ptReady\n .then(() => {\n this.#window.dataLayer = this.#window.dataLayer ?? [];\n this.ngZone.runOutsideAngular(() => {\n this.partytownService.feedSharedStorage();\n this.partytownService.feedCookieStorage();\n fromEvent(this._doc, 'gtm_loaded')\n .pipe(take(1))\n .subscribe(() => {\n // tell tracking system gtm was loaded\n this.push({ event: WindowEvent.VanillaGtmLoaded });\n this.push({ event: WindowEvent.GtmLoad });\n if (this.#window.partytown.enableEventReplay) {\n setTimeout(() => {\n this.partytownService.createEventReplayQueue();\n }, 5000);\n }\n });\n\n this.load('GoogleTagManagerRenderer', 'text/partytown');\n\n if (this._doc.readyState === 'complete') {\n // we need to do that async, as the script injection also is async\n setTimeout(() => this.#window.dispatchEvent(new CustomEvent('ptupdate')));\n } else {\n this.#window.addEventListener('load', () => {\n setTimeout(() => {\n // notify partytown that we've added a new script\n this.#window.dispatchEvent(new CustomEvent('ptupdate'));\n });\n });\n }\n });\n })\n .catch(() => {\n this.load('GoogleTagManagerRenderer');\n });\n } else {\n this.load('GoogleTagManagerRenderer');\n }\n }\n\n private push(payload: object) {\n if (this.#window.dataLayer) {\n const dataLayer = this.#window.dataLayer;\n // workaround to don't trigger dataLayer.push\n // since it is patched by partytown and unnecessarily propagates data to the worker\n dataLayer[dataLayer.length] = payload;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { UrlService, Utm } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtmService {\n public static storageKey: string = 'utm';\n\n constructor(private urlService: UrlService) {}\n\n parseFromUrl(url: string): Utm {\n const queryParameters = this.urlService.parse(url).search;\n\n const utm: Utm = {\n utm_source: '',\n utm_medium: '',\n utm_campaign: '',\n utm_term: '',\n utm_content: '',\n utm_keyword: '',\n };\n\n queryParameters.keys().forEach((key) => {\n const value = queryParameters.get(key);\n if (key in utm && value !== null) {\n (utm as any)[key] = value;\n }\n });\n\n return utm;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, inject } from '@angular/core';\n\nimport {\n DeviceService,\n LocationChangeEvent,\n NavigationService,\n OnFeatureInit,\n TRACKING_SERVICE_PROVIDER,\n TagManagerService as TagManagerCoreService,\n TrackingService,\n TrackingServiceProvider,\n UserEvent,\n UserLoginEvent,\n UserService,\n WINDOW,\n} from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { GtmService } from './gtm.service';\nimport { PageViewTrackingService } from './page-view-tracking.service';\nimport { TagManagerService } from './tag-manager.service';\nimport { TrackingValueGettersService } from './tracking-value-getters.service';\nimport { TrackingConfig } from './tracking.client-config';\nimport { UtmService } from './utm-service';\n\n@Injectable()\nexport class TrackingBootstrapService implements OnFeatureInit {\n readonly #window = inject(WINDOW);\n private readonly _doc = inject(DOCUMENT);\n private gtmService = inject(GtmService);\n\n constructor(\n private navigationService: NavigationService,\n private pageViewTrackingService: PageViewTrackingService,\n private user: UserService,\n private trackingConfig: TrackingConfig,\n private tagManagerService: TagManagerService,\n private valueGetters: TrackingValueGettersService,\n private utmService: UtmService,\n private deviceService: DeviceService,\n private trackingService: TrackingService,\n private tagManagerCoreService: TagManagerCoreService,\n @Inject(TRACKING_SERVICE_PROVIDER) private trackingServiceProvider: TrackingServiceProvider,\n ) {}\n\n async onFeatureInit() {\n await firstValueFrom(this.trackingConfig.whenReady);\n if (!this.trackingConfig.isEnabled) {\n return;\n }\n\n this.gtmService.renderGTMTag();\n\n this.tagManagerCoreService.set(this.tagManagerService);\n this.trackingService.set(this.trackingServiceProvider);\n\n await this.trackingService.addInitialValues();\n\n // Browser data\n this.trackingServiceProvider.updateDataLayer({\n 'browser.screenResolution': this.valueGetters.browserScreenResolution(),\n });\n\n this.deviceService.orientation.subscribe(() => {\n this.trackingServiceProvider.updateDataLayer({\n 'browser.orientation': this.valueGetters.browserOrientation(),\n });\n });\n\n this.trackingServiceProvider.setReferrer(this._doc.referrer);\n this.pageViewTrackingService.trackPageView(this.utmService.parseFromUrl(this.#window.location.href));\n this.navigationService.locationChange.subscribe((e: LocationChangeEvent) => {\n if (e.previousUrl === e.nextUrl) {\n return;\n }\n\n this.trackingServiceProvider.setReferrer(e.previousUrl);\n this.pageViewTrackingService.trackPageView(this.utmService.parseFromUrl(e.nextUrl), e.id);\n });\n\n this.user.events.pipe(first((e: UserEvent) => e instanceof UserLoginEvent)).subscribe(() => {\n this.trackingServiceProvider.updateUserContactabilityStatus();\n });\n this.tagManagerService.init();\n }\n}\n","import { PAGE_VIEW_DATA_PROVIDER, TRACKING_SERVICE_PROVIDER, runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { DataLayerTrackingService } from './data-layer-tracking.service';\nimport { DefaultPageViewDataProvider } from './page-view-data-provider';\nimport { PageViewTrackingService } from './page-view-tracking.service';\nimport { TrackingBootstrapService } from './tracking-bootstrap.service';\n\nexport function provide() {\n return [\n { provide: PAGE_VIEW_DATA_PROVIDER, useClass: DefaultPageViewDataProvider, multi: true },\n { provide: TRACKING_SERVICE_PROVIDER, useClass: DataLayerTrackingService },\n PageViewTrackingService,\n runOnFeatureInit(TrackingBootstrapService),\n ];\n}\n"],"names":["TrackingConfig","_a","LazyClientConfigBase","__ngFactoryType__","d","factory","__ngConditionalFactory__","trackingConfigFactory","ɵɵinject","LazyClientConfigService","__decorate","LazyClientConfig","key","product","ClientConfigProductName","SF","service","get","TrackingValueGettersService","_window","constructor","trackingConfig","user","navigationService","urlService","page","cookieService","deviceService","nativeAppService","frontendHelperService","balancePropertiesConfig","__privateAdd","inject","WINDOW","accountId","userBalance","__async","isAuthenticated","firstValueFrom","whenReady","balanceProperties","accountBalance","userCurrency","currency","userCountry","country","userGeoCountry","geoCountry","userLoyalty","loyalty","userCustomerId","customerId","userSegmentId","segmentId","userStage","lifeCycleStage","userPrestage","eWarningVip","userMicroSegmentId","microSegmentId","userChurnRate","churnRate","userFutureValue","futureValue","userPotentialVip","potentialVip","userAgent","__privateGet","navigator","username","hasPositiveBalance","locationAbsUrl","removeNotTrackedQueryStrings","location","absUrl","locationHost","host","locationPathQueryAndFragment","removeLeadingSlashes","url","browserScreenResolution","width","height","windowRect","displayWidth","displayHeight","redirectedFrom","CookieName","RedirexOriginal","trackerID","TrackerId","trackingAffiliate","TrackingAffiliate","abTestGroup","MmcoreBwinvar","pageName","getPageName","pageReferrer","referrer","browserOrientation","currentOrientation","nativeMode","isTouch","cpuCores","cpuMaxFrequency","totalRam","model","nightMode","parseInt","DarkMode","userKnown","LastVisitor","internalCampaign","search","deviceId","DeviceId","lang","languageCode","culture","frontend","getFrontendDescription","medium","getMedium","domain","fullEntryUrl","entryUrl","entryUrlReferrer","EntryUrlReferrer","packageVersion","packageName","nativeWindow","VERSIONS","setReferrer","setEntryUrl","parse","terminalId","TerminalId","shopId","ShopId","terminalType","applicationName","isTerminal","absolute","parsedUrl","notTrackedQueryString","notTrackedQueryStrings","delete","decodeURIComponent","langPrefix","path","lowerCasePath","toLowerCase","indexOf","result","substring","length","isTablet","isMobile","os","isNativeApp","isNativeWrapper","isiOS","isChrome","input","replace","UserService","NavigationService","UrlService","Page","CookieService","DeviceService","NativeAppService","FrontendHelperService","BalancePropertiesConfig","ɵfac","providedIn","_TrackingValueGettersService","eventNames","pageView","userLogout","DataLayerTrackingService","trackingValueGettersService","apiService","log","timerService","localStoreService","webWorkerService","createWorker","WorkerType","DataLayerTrackingInterval","interval","gtmLoaded","processLocalStore","removeWorker","gtmEnabled","tagManagerRenderers","includes","google_tag_manager","dataLayer","some","x","event","WindowEvent","VanillaGtmLoaded","GtmLoad","addInitialValues","updateDataLayerEntryInfo","updateUserValues","updateDataLayer","updateDataLayerSessionId","data","Promise","resolve","isObject","Array","isArray","schedulerEnabled","dataLayerUpdateTimeoutInMilliseconds","scheduleIdleCallback","dataLayerName","push","tracking","getDataFromStore","set","LocalStoreKey","Tracking","JSON","stringify","trackEvents","item","eventType","webAnalytics","parsedValue","WebAnalyticsEventType","load","triggerEvent","eventName","click","close","error","errorRemote","name","options","eventTimeout","timeout","eventCallbackTimeoutInMilliseconds","runWithTimeout","reject","Object","keys","__spreadValues","eventCallback","bind","TriggerEventPromiseResult","Normal","remove","reportErrorObject","reportError","errorDetail","encodeURIComponent","trackContentItemEvent","parameters","parameterName","getContentItemTracking","updateUserContactabilityStatus","subscribe","cts","settings","map","c","selected","join","trackingDataPrefix","mapKeys","pickBy","_","k","startsWith","trackingData","trackings","forEach","promise","timeoutId","Timeout","then","EntryUrl","v8","tech","build","label","entry","utms","source","campaign","content","keyword","hasOwnProperty","decibelInsight","_da_ready","SharedFeaturesApiService","Logger","TimerService","LocalStoreService","WebWorkerService","_DataLayerTrackingService","DefaultPageViewDataProvider","valueGetters","getData","context","navigationId","utm","__spreadProps","of","_DefaultPageViewDataProvider","PageView","dataSource","dataCallback","onData","fn","PageViewTrackingService","productInjector","trackingService","currentDataProviders","pageViewQueue","toNumberOrDefault","v","value","Number","isNaN","trackPageView","args","utm_source","undefined","providers","assign","getMultiple","PAGE_VIEW_DATA_PROVIDER","combineLatest","p","race","NEVER","pipe","pageViewDataProviderTimeout","catchError","first","processPageViewQueue","shift","ProductInjector","TrackingService","_PageViewTrackingService","RUN_AFTER_LCP_TOKEN","InjectionToken","runAfterLcp","GtmService","__privateSet","tagManagerService","TagManagerService","gtmConfig","runAfterLcpToken","renderGTMTag","enableGTM","partytown","loadGTM","delayGTM","loadPartyTownGTM","_GtmService","DataLayerProxyService","strategyProvider","RxStrategyProvider","requiredEvents","patched","patchDataLayer","forceSchedulerDisabled","isEnabled","enableLogging","enableOmitting","createDataLayerProxy","origDataLayer","idleWrapper","schedule","patchZone","strategy","trackingDelay","omitAll","blockDevice","deviceBlockEnabled","isLowTierDevice","isNextCallSuppressed","allowlist","Set","blocklist","window","measureTask","measureTaskDuration","Proxy","target","newValue","has","callback","work","logTrackingPerformance","deviceConcurrency","hardwareConcurrency","minDeviceConcurrency","minDeviceMemory","deviceMemory","benchmarkThreshold","benchmark","omitPercentage","Math","random","_DataLayerProxyService","start","performance","now","calculatePrimes","startTime","startMark","mark","r","endMark","measure","endTime","runtime","ceil","color","console","withArgs","eventQueueKey","PartytownService","injector","Injector","router","Router","_doc","DOCUMENT","sharedStorageEnabled","forward","cookieStorageEnabled","ptSharedStorage","ptWorkerLocation","ptCookieStorage","createEventReplayQueue","replayEvents","origPush","addToQueue","apply","feedSharedStorage","setStaticProps","createDimensionsEffect","subscribeToDynamicProps","feedCookieStorage","getCookieUpdates","getWindowOffsetUpdates","fromEvent","debounceTime","characterSet","loadPurpose","cookieEnabled","cookieDeprecationLabel","vendor","doNotTrack","maxTouchPoints","timeOrigin","timing","navigationStart","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","responseEnd","unloadEventStart","unloadEventEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd","effect","screenHeight","visualViewportHeight","screenWidth","visualViewportWidth","screen","colorDepth","locationChange","switchMap","merge","routerState","root","queryParamMap","startWith","snapshot","href","distinctUntilChanged","title","pageYOffset","scrollY","_PartytownService","getEventsQueue","savedEventsItem","localStorage","getItem","eventsQueue","setItem","parsedArgs","removeItem","dataLayerProxy","ngZone","partytownService","init","configured","clientTagManagers","excludes","clientInjectionExcludes","filter","current","injectScript","availableClientTagManagers","t","rendererName","type","tagManager","find","Error","existing","querySelector","id","script","createElement","async","text","onload","onerror","body","append","isDisabledLocally","_ptReady","runOutsideAngular","take","enableEventReplay","setTimeout","readyState","dispatchEvent","CustomEvent","addEventListener","catch","payload","NgZone","_TagManagerService","UtmService","parseFromUrl","queryParameters","utm_medium","utm_campaign","utm_term","utm_content","utm_keyword","_UtmService","storageKey","TrackingBootstrapService","pageViewTrackingService","utmService","tagManagerCoreService","trackingServiceProvider","gtmService","onFeatureInit","orientation","e","previousUrl","nextUrl","events","UserLoginEvent","TRACKING_SERVICE_PROVIDER","_TrackingBootstrapService","provide","useClass","multi","runOnFeatureInit"],"mappings":"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"}