{"version":3,"file":"chunk-lzhk3kz0.js","sources":["packages/vanilla/lib/features/geolocation/src/geolocation.client-config.ts","packages/vanilla/lib/features/geolocation/src/geolocation-browser-api.service.ts","packages/vanilla/lib/features/geolocation/src/geolocation-cookie.service.ts","packages/vanilla/lib/features/geolocation/src/geolocation-resource.service.ts","packages/vanilla/lib/features/geolocation/src/geolocation.service.ts","packages/vanilla/lib/features/geolocation/src/geolocation-bootstrap.service.ts","packages/vanilla/lib/features/geolocation/src/geolocation-dsl-resolver.ts","packages/vanilla/lib/features/geolocation/src/geolocation-dsl-values-provider.ts","packages/vanilla/lib/features/geolocation/src/geolocation-launch-darkly-context-provider.ts","packages/vanilla/lib/features/geolocation/src/geolocation.feature.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'vnGeolocation', product: ClientConfigProductName.SF })\n@Injectable()\nexport class GeolocationConfig extends LazyClientConfigBase {\n minimumUpdateIntervalMilliseconds: number;\n cookieExpirationMilliseconds: number;\n watchOptions: PositionOptions;\n useBrowserGeolocation: boolean;\n watchBrowserPositionOnAppStart: boolean;\n clientApiUrl: string;\n}\n\nexport function configFactory(service: LazyClientConfigService) {\n return service.get(GeolocationConfig);\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { Coordinates, Position, WINDOW } from '@frontend/vanilla/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { GeolocationConfig } from './geolocation.client-config';\n\n/** The reason of an error occurring when using the geolocating device.\n * @experimental\n */\nexport interface PositionError {\n readonly code: number;\n readonly message: string;\n readonly PERMISSION_DENIED: number;\n readonly POSITION_UNAVAILABLE: number;\n readonly TIMEOUT: number;\n}\n\n/** Encapsulates browser API to observable and clones native objects to JSON friendly ones. */\n@Injectable()\nexport class GeolocationBrowserApiService {\n private changesSubject: Subject;\n readonly #window = inject(WINDOW);\n\n constructor(private config: GeolocationConfig) {}\n\n get positionChanges(): Observable {\n if (!this.changesSubject) {\n this.changesSubject = new Subject();\n const watchId = this.geolocationApi.watchPosition(\n (p) => this.onPositionChanged(p),\n (e) => this.onPositionFailed(e, watchId),\n this.config.watchOptions,\n );\n }\n return this.changesSubject;\n }\n\n private onPositionChanged(position: Position) {\n this.changesSubject.next({\n timestamp: position.timestamp,\n coords: cloneNativeCoordinatesToJsonObj(position.coords),\n });\n }\n\n private onPositionFailed(error: PositionError, watchId: number) {\n if (error.code === error.PERMISSION_DENIED) {\n this.geolocationApi.clearWatch(watchId);\n }\n\n this.changesSubject.error(cloneNativeErrorToJsonObj(error));\n }\n\n private get geolocationApi() {\n return this.#window.navigator.geolocation;\n }\n}\n\nexport function cloneNativeCoordinatesToJsonObj(coords: Coordinates): Coordinates {\n return {\n latitude: coords.latitude,\n longitude: coords.longitude,\n altitude: coords.altitude,\n accuracy: coords.accuracy,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed,\n };\n}\n\nfunction cloneNativeErrorToJsonObj(error: PositionError): PositionError {\n return {\n code: error.code,\n message: error.message,\n PERMISSION_DENIED: error.PERMISSION_DENIED,\n POSITION_UNAVAILABLE: error.POSITION_UNAVAILABLE,\n TIMEOUT: error.TIMEOUT,\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { CookieName, CookieService, DateTimeService, GeolocationPosition } from '@frontend/vanilla/core';\n\nimport { GeolocationConfig } from './geolocation.client-config';\n\n@Injectable()\nexport class GeolocationCookieService {\n constructor(\n private config: GeolocationConfig,\n private cookieService: CookieService,\n private dateTimeService: DateTimeService,\n ) {}\n\n read(): GeolocationPosition | null {\n const json = this.cookieService.get(CookieName.GeoLocation)?.trim();\n return json ? JSON.parse(json) : null;\n }\n\n write(position: GeolocationPosition) {\n const expires = this.calculateExpiration();\n this.cookieService.putObject(CookieName.GeoLocation, position, expires ? { expires } : undefined);\n }\n\n delete() {\n this.cookieService.remove(CookieName.GeoLocation);\n }\n\n private calculateExpiration(): Date | undefined {\n if (!this.config.cookieExpirationMilliseconds) {\n return;\n }\n\n const expiration = this.dateTimeService.now();\n expiration.setTime(expiration.getTime() + this.config.cookieExpirationMilliseconds);\n\n return expiration;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Coordinates, Logger, MappedGeolocation, SharedFeaturesApiService, UrlService } from '@frontend/vanilla/core';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { map, retry, tap } from 'rxjs/operators';\n\nimport { GeolocationConfig } from './geolocation.client-config';\n\n@Injectable()\nexport class GeolocationResourceService {\n constructor(\n private api: SharedFeaturesApiService,\n private config: GeolocationConfig,\n private urlService: UrlService,\n private httpClient: HttpClient,\n private logger: Logger,\n ) {}\n\n mapGeolocation(coords: Coordinates): Observable {\n const locationServerside = this.api.get('mappedgeolocation', coords);\n let locationClientSide = of({});\n\n if (this.config.clientApiUrl) {\n const url = this.urlService.parse(this.config.clientApiUrl);\n url.search.append('latitude', coords.latitude.toString());\n url.search.append('longitude', coords.longitude.toString());\n locationClientSide = this.httpClient.get(url.absUrl()).pipe(retry(2));\n }\n\n return forkJoin([locationServerside, locationClientSide]).pipe(\n map((result: any) => {\n const eventObj: any = {\n locationId: null,\n locationName: null,\n city: null,\n state: null,\n zip: null,\n country: null,\n\n locationNameClient: null,\n cityClient: null,\n countryClient: null,\n //comment to test pipeline.\n postCodeClient: null,\n stateClient: null,\n };\n\n // Location detail from server side\n if (result[0].location) {\n eventObj.locationId = result[0].location['locationId'];\n eventObj.locationName = result[0].location['locationName'];\n eventObj.city = result[0].location['city'];\n eventObj.state = result[0].location['state'];\n eventObj.zip = result[0].location['zip'];\n eventObj.country = result[0].location['country'];\n }\n\n // Location detail from Client side api\n if (result[1]) {\n eventObj.locationNameClient = result[1]['locality'];\n eventObj.cityClient = result[1]['city'];\n eventObj.countryClient = result[1]['countryName'];\n eventObj.postCodeClient = result[1]['postcode'];\n eventObj.stateClient = result[1]['principalSubdivision'];\n }\n\n return eventObj;\n }),\n tap({\n error: (error) => {\n this.logger.errorRemote('VanillaGeolocation failed mapping api response.', error);\n },\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CookieName,\n Coordinates,\n GeolocationPosition,\n Logger,\n MappedGeolocation,\n NativeAppService,\n NativeEventType,\n Position,\n TimerService,\n} from '@frontend/vanilla/core';\nimport { isEqual } from 'lodash-es';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { GeolocationBrowserApiService, cloneNativeCoordinatesToJsonObj } from './geolocation-browser-api.service';\nimport { GeolocationCookieService } from './geolocation-cookie.service';\nimport { GeolocationResourceService } from './geolocation-resource.service';\nimport { GeolocationConfig } from './geolocation.client-config';\n\nexport const LOG_PREFIX = 'VanillaGeolocation';\n\n/**\n * @whatItDoes Provides current geolocation position.\n * Gets null if position is not available yet or it's disabled by user in browser or the feature is disabled.\n *\n * @howToUse\n * ```\n * const locationId = geolocationService.currentPosition?.mappedLocation?.locationId;\n *\n * geolocationService.positionChanges.subscribe(position => {\n * // ...\n * });\n * ```\n *\n * @experimental\n */\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n /** Gets current position */\n get currentPosition(): GeolocationPosition | null {\n return this.lastPosition;\n }\n\n /** Gets current position and all future changes. */\n get positionChanges(): Observable {\n return this.positionSubject;\n }\n\n private lastPosition: GeolocationPosition | null = null;\n private positionSubject = new ReplaySubject(1);\n private timeoutId: NodeJS.Timeout;\n private isWatchBrowserPositionChangesStarted: boolean = false;\n\n constructor(\n private config: GeolocationConfig,\n private browserApi: GeolocationBrowserApiService,\n private cookie: GeolocationCookieService,\n private resource: GeolocationResourceService,\n private log: Logger,\n private timer: TimerService,\n private nativeApp: NativeAppService,\n ) {}\n\n watchBrowserPositionChanges() {\n if (this.config.useBrowserGeolocation && !this.isWatchBrowserPositionChangesStarted) {\n this.isWatchBrowserPositionChangesStarted = true;\n this.watchPositionChanges();\n }\n }\n\n /** @internal */\n watchNativePositionChanges() {\n if (this.nativeApp.isNative) {\n this.nativeApp.eventsFromNative\n .pipe(filter((e) => e.eventName?.toUpperCase() === NativeEventType.GEO_LOCATION_POSITION))\n .subscribe((e) => {\n const parameters = e.parameters || {};\n const newPosition: Position = {\n timestamp: Math.floor(parameters['time'] * 1000), // app is sending timestamp in seconds\n coords: cloneNativeCoordinatesToJsonObj(parameters as Coordinates),\n };\n\n if (this.isLastPositionEqualToNewPosition(newPosition)) return;\n\n this.mapGeolocation(newPosition);\n });\n\n this.nativeApp.sendToNative({ eventName: NativeEventType.GET_GEO_LOCATION_POSITION });\n }\n }\n\n /** @internal */\n restoreLastPositionFromCookie() {\n this.lastPosition = this.cookie.read();\n\n if (this.lastPosition) {\n this.positionSubject.next(this.lastPosition);\n this.log.debug(`${LOG_PREFIX} restored this position from the cookie:`, this.lastPosition);\n }\n }\n\n /** @internal */\n clearPositionForGood() {\n this.lastPosition = null;\n this.cookie.delete();\n }\n\n private watchPositionChanges() {\n this.browserApi.positionChanges.subscribe({\n next: (p) => this.onPositionChanged(p),\n error: (e) => this.onPositionError(e),\n });\n }\n\n private onPositionChanged(newPosition: Position) {\n if (this.isLastPositionEqualToNewPosition(newPosition)) return;\n\n const mappingDueTime = Math.max(\n 0,\n this.config.minimumUpdateIntervalMilliseconds - (newPosition.timestamp - (this.lastPosition?.timestamp ?? 0)),\n );\n this.log.debug(\n `${LOG_PREFIX} received new coordinates at time ${newPosition.timestamp}. Mapping them to a location on backend in ${mappingDueTime} milliseconds. New coordinates:`,\n newPosition.coords,\n );\n\n this.timer.clearTimeout(this.timeoutId);\n this.timeoutId = this.timer.setTimeout(() => this.mapGeolocation(newPosition), mappingDueTime);\n }\n\n private mapGeolocation(newPosition: Position) {\n this.log.infoRemote(`${LOG_PREFIX} mapping new coordinates.`);\n\n this.resource.mapGeolocation(newPosition.coords).subscribe({\n next: (location: MappedGeolocation | null) => {\n this.log.debug(\n `${LOG_PREFIX} mapped new coordinates to following location. Writing it all to '${CookieName.GeoLocation}' cookie.`,\n location,\n );\n this.log.infoRemote(\n `${LOG_PREFIX} mapped new coordinates to '${CookieName.GeoLocation}' cookie. StateClient:${location?.stateClient}, CountryClient:${location?.countryClient}, Country:${location?.country}`,\n );\n this.setLastPosition(newPosition, location);\n },\n error: (error: any) => {\n this.log.errorRemote(\n `${LOG_PREFIX} failed mapping new coordinates. Using them with null mapped location. Writing it all to '${CookieName.GeoLocation}' cookie. Error:`,\n error,\n );\n this.setLastPosition(newPosition, null);\n },\n });\n }\n\n private onPositionError(error: any) {\n if (error.code === error.PERMISSION_DENIED) {\n this.log.debug(`${LOG_PREFIX} is disabled by user in the browser.`);\n this.clearPositionForGood();\n } else {\n this.log.warn(`${LOG_PREFIX} failed to watch the position. Using the last one and watch continues. Error:`, error);\n }\n\n this.positionSubject.error(error);\n }\n\n private isLastPositionEqualToNewPosition(newPosition: Position): boolean {\n if (this.lastPosition && isEqual(newPosition.coords, this.lastPosition.coords)) {\n this.log.debug(\n `${LOG_PREFIX} received same coordinates as the last position has. Only updating timestamp to ${newPosition.timestamp}. Writing it all to '${CookieName.GeoLocation}' cookie. Last position:`,\n this.lastPosition,\n );\n this.setLastPosition(newPosition, this.lastPosition.mappedLocation, { publishEvent: false });\n\n return true;\n }\n\n return false;\n }\n\n private setLastPosition(apiPosition: Position, mappedLocation: MappedGeolocation | null, opts?: { publishEvent: boolean }) {\n this.lastPosition = {\n coords: apiPosition.coords,\n timestamp: apiPosition.timestamp,\n mappedLocation,\n };\n\n this.cookie.write(this.lastPosition);\n\n if (!opts || opts.publishEvent) {\n this.log.infoRemote(`${LOG_PREFIX} sending position changed event.`);\n this.positionSubject.next(this.lastPosition);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n CookieName,\n CookieService,\n GeolocationService as CoreGeolocationService,\n NativeAppService,\n OnFeatureInit,\n TrackingService,\n UserLoginEvent,\n UserService,\n} from '@frontend/vanilla/core';\nimport { filter, first, firstValueFrom, map, of, switchMap } from 'rxjs';\n\nimport { GeolocationConfig } from './geolocation.client-config';\nimport { GeolocationService } from './geolocation.service';\n\n@Injectable()\nexport class GeolocationBootstrapService implements OnFeatureInit {\n constructor(\n private config: GeolocationConfig,\n private geolocationService: GeolocationService,\n private coreGeolocationService: CoreGeolocationService,\n private user: UserService,\n private trackingService: TrackingService,\n private nativeAppService: NativeAppService,\n private cookieService: CookieService,\n ) {}\n\n async onFeatureInit() {\n await firstValueFrom(this.config.whenReady);\n\n this.geolocationService.clearPositionForGood();\n\n if (this.config.watchBrowserPositionOnAppStart) {\n this.geolocationService.watchBrowserPositionChanges();\n }\n\n this.geolocationService.restoreLastPositionFromCookie();\n this.geolocationService.watchNativePositionChanges();\n\n this.coreGeolocationService.set(this.geolocationService);\n\n this.trackGeolocationEventAfterLogin();\n }\n\n //Send Geolocation event to datalayer after login and location received, only once, for CIP to trigger geo targetted offers.\n private trackGeolocationEventAfterLogin() {\n this.geolocationService.positionChanges\n .pipe(\n first(),\n switchMap((geolocation) => {\n if (this.user.isAuthenticated) {\n return of(geolocation);\n } else {\n this.cookieService.remove(CookieName.VnGeolocationTracking);\n return this.user.events.pipe(\n filter((e) => e instanceof UserLoginEvent),\n first(),\n map(() => geolocation),\n );\n }\n }),\n )\n .subscribe((geolocation) => {\n const cookie = this.cookieService.get(CookieName.VnGeolocationTracking);\n if (!cookie && this.user.workflowType == 0) {\n this.sendToGA(geolocation);\n }\n });\n }\n\n private sendToGA(geolocation: GeolocationPosition) {\n this.trackingService.triggerEvent('geolocation', {\n 'user.profile.accountID': this.user.accountId,\n 'native.nativeMode': this.nativeAppService.nativeMode,\n 'GEO_LATITUDE': geolocation.coords.latitude,\n 'GEO_LONGITUDE': geolocation.coords.longitude,\n 'GEO_ALTITUDE': geolocation.coords.altitude,\n 'GEO_ACCURACY': geolocation.coords.accuracy,\n 'GEO_ALT_ACCURACY': geolocation.coords.altitudeAccuracy,\n 'GEO_HEADING': geolocation.coords.heading,\n 'GEO_SPEED': geolocation.coords.speed,\n });\n\n this.cookieService.put(CookieName.VnGeolocationTracking, '1');\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { GeolocationPosition, MappedGeolocation } from '@frontend/vanilla/core';\n\nimport { GeolocationService } from './geolocation.service';\n\n@Injectable()\nexport class GeolocationDslResolver {\n private currentPosition: GeolocationPosition | null;\n constructor(private geolocationService: GeolocationService) {\n this.geolocationService.positionChanges.subscribe((position: GeolocationPosition) => (this.currentPosition = position));\n }\n\n getPosition(getValue: (p: GeolocationPosition) => number | null): number {\n const position = this.currentPosition;\n if (!position) {\n throw new Error(\n `Currently there is no position resolved by browser so its properties cannot't be accessed.` +\n ` Returning zero would be misleading as far as it's a valid value. Check HasPosition first.`,\n );\n }\n return getValue(position) || 0;\n }\n\n getLocation(getValue: (l: MappedGeolocation) => string | null) {\n const location = this.currentPosition?.mappedLocation;\n return location ? getValue(location) || '' : ''; // Sanitize null b/c client DSL engine doesn't do it\n }\n\n hasPosition(): boolean {\n return !!this.currentPosition;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n DateTimeOffset,\n DslCacheService,\n DslRecordable,\n DslRecorderService,\n DslTimeConverterService,\n DslValuesProvider,\n MappedGeolocation,\n Position,\n TimeSpan,\n} from '@frontend/vanilla/core';\n\nimport { GeolocationDslResolver } from './geolocation-dsl-resolver';\nimport { GeolocationService } from './geolocation.service';\n\nconst DEPENDENCIES = ['geolocation'];\n\n@Injectable()\nexport class GeolocationDslValuesProvider implements DslValuesProvider {\n constructor(\n private dslRecorderService: DslRecorderService,\n dslCacheService: DslCacheService,\n private dslTimeConverter: DslTimeConverterService,\n private geolocationService: GeolocationService,\n private geolocationDslResolver: GeolocationDslResolver,\n ) {\n this.geolocationService.positionChanges.subscribe(() => dslCacheService.invalidate(DEPENDENCIES));\n }\n\n getProviders(): { [provider: string]: DslRecordable } {\n const recordable = this.dslRecorderService.createRecordable('geolocation');\n const resolver = this.geolocationDslResolver;\n\n createProperty('HasPosition', () => resolver.hasPosition());\n createPositionProperty('Timestamp', (p) => this.dslTimeConverter.fromTimeToDsl(new DateTimeOffset(p.timestamp, TimeSpan.ZERO)));\n createPositionProperty('Latitude', (p) => p.coords.latitude);\n createPositionProperty('Longitude', (p) => p.coords.longitude);\n createPositionProperty('Altitude', (p) => p.coords.altitude);\n createPositionProperty('Accuracy', (p) => p.coords.accuracy);\n createPositionProperty('AltitudeAccuracy', (p) => p.coords.altitudeAccuracy);\n createPositionProperty('Heading', (p) => p.coords.heading);\n createPositionProperty('Speed', (p) => p.coords.speed);\n\n createLocationProperty('LocationId', (l) => l.locationId);\n createLocationProperty('LocationName', (l) => l.locationName);\n createLocationProperty('City', (l) => l.city);\n createLocationProperty('State', (l) => l.state);\n createLocationProperty('Zip', (l) => l.zip);\n createLocationProperty('Country', (l) => l.country);\n\n createLocationProperty('LocationNameClient', (l) => l.locationNameClient);\n createLocationProperty('CityClient', (l) => l.cityClient);\n createLocationProperty('StateClient', (l) => l.stateClient);\n createLocationProperty('PostCodeClient', (l) => l.postCodeClient);\n createLocationProperty('CountryClient', (l) => l.countryClient);\n\n return { Geolocation: recordable };\n\n function createPositionProperty(name: string, get: (p: Position) => number | null) {\n createProperty(name, () => resolver.getPosition((p) => get(p)));\n }\n\n function createLocationProperty(name: string, get: (p: MappedGeolocation) => string | null) {\n createProperty(name, () => resolver.getLocation((p) => get(p)));\n }\n\n function createProperty(name: string, get: () => number | string | boolean | null) {\n recordable.createProperty({ name, get, deps: DEPENDENCIES });\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { LaunchDarklyLazyContextProvider, Logger } from '@frontend/vanilla/core';\nimport { LDContext } from 'launchdarkly-js-client-sdk';\nimport { firstValueFrom, timeout } from 'rxjs';\n\nimport { GeolocationService } from './geolocation.service';\n\n@Injectable()\nexport class GeolocationContextProvider extends LaunchDarklyLazyContextProvider {\n private readonly geolocationService = inject(GeolocationService);\n private readonly log = inject(Logger);\n\n async getLazyContext(): Promise {\n await firstValueFrom(this.geolocationService.positionChanges.pipe(timeout(10000))).catch(() => {\n this.log.warn('positionChanges failed of timed out in GeolocationContextProvider.');\n return {};\n });\n\n return {\n kind: 'multi',\n state: this.geolocationService.currentPosition?.mappedLocation?.stateClient\n ? { key: this.geolocationService.currentPosition?.mappedLocation.stateClient }\n : undefined,\n country: this.geolocationService.currentPosition?.mappedLocation?.countryClient\n ? { key: this.geolocationService.currentPosition?.mappedLocation.countryClient }\n : undefined,\n };\n }\n}\n","import { LazyClientConfigService, registerLazyDslOnModuleInit, runLaunchDarklyLazyContextProvider, runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { GeolocationBootstrapService } from './geolocation-bootstrap.service';\nimport { GeolocationBrowserApiService } from './geolocation-browser-api.service';\nimport { GeolocationCookieService } from './geolocation-cookie.service';\nimport { GeolocationDslResolver } from './geolocation-dsl-resolver';\nimport { GeolocationDslValuesProvider } from './geolocation-dsl-values-provider';\nimport { GeolocationContextProvider } from './geolocation-launch-darkly-context-provider';\nimport { GeolocationResourceService } from './geolocation-resource.service';\nimport { GeolocationConfig, configFactory } from './geolocation.client-config';\nimport { GeolocationService } from './geolocation.service';\n\nexport function provide() {\n return [\n GeolocationBrowserApiService,\n GeolocationResourceService,\n GeolocationService,\n GeolocationCookieService,\n GeolocationDslResolver,\n { provide: GeolocationConfig, useFactory: configFactory, deps: [LazyClientConfigService] },\n runOnFeatureInit(GeolocationBootstrapService),\n registerLazyDslOnModuleInit(GeolocationDslValuesProvider),\n runLaunchDarklyLazyContextProvider(GeolocationContextProvider),\n ];\n}\n"],"names":["GeolocationConfig","_a","LazyClientConfigBase","__ngFactoryType__","l","factory","ɵfac","__decorate","LazyClientConfig","key","product","ClientConfigProductName","SF","configFactory","service","get","GeolocationBrowserApiService","_window","constructor","config","__privateAdd","inject","WINDOW","positionChanges","changesSubject","Subject","watchId","geolocationApi","watchPosition","p","onPositionChanged","e","onPositionFailed","watchOptions","position","next","timestamp","coords","cloneNativeCoordinatesToJsonObj","error","code","PERMISSION_DENIED","clearWatch","cloneNativeErrorToJsonObj","__privateGet","navigator","geolocation","ɵɵinject","_GeolocationBrowserApiService","latitude","longitude","altitude","accuracy","altitudeAccuracy","heading","speed","message","POSITION_UNAVAILABLE","TIMEOUT","GeolocationCookieService","cookieService","dateTimeService","read","json","CookieName","GeoLocation","trim","JSON","parse","write","expires","calculateExpiration","putObject","undefined","delete","remove","cookieExpirationMilliseconds","expiration","now","setTime","getTime","CookieService","DateTimeService","_GeolocationCookieService","GeolocationResourceService","api","urlService","httpClient","logger","mapGeolocation","locationServerside","locationClientSide","of","clientApiUrl","url","search","append","toString","absUrl","pipe","retry","forkJoin","map","result","eventObj","locationId","locationName","city","state","zip","country","locationNameClient","cityClient","countryClient","postCodeClient","stateClient","location","tap","errorRemote","SharedFeaturesApiService","UrlService","HttpClient","Logger","_GeolocationResourceService","LOG_PREFIX","GeolocationService","currentPosition","lastPosition","positionSubject","browserApi","cookie","resource","log","timer","nativeApp","ReplaySubject","isWatchBrowserPositionChangesStarted","watchBrowserPositionChanges","useBrowserGeolocation","watchPositionChanges","watchNativePositionChanges","isNative","eventsFromNative","filter","eventName","toUpperCase","NativeEventType","GEO_LOCATION_POSITION","subscribe","parameters","newPosition","Math","floor","isLastPositionEqualToNewPosition","sendToNative","GET_GEO_LOCATION_POSITION","restoreLastPositionFromCookie","debug","clearPositionForGood","onPositionError","mappingDueTime","max","minimumUpdateIntervalMilliseconds","clearTimeout","timeoutId","setTimeout","infoRemote","setLastPosition","warn","isEqual","mappedLocation","publishEvent","apiPosition","opts","TimerService","NativeAppService","providedIn","_GeolocationService","GeolocationBootstrapService","geolocationService","coreGeolocationService","user","trackingService","nativeAppService","onFeatureInit","__async","firstValueFrom","whenReady","watchBrowserPositionOnAppStart","set","trackGeolocationEventAfterLogin","first","switchMap","isAuthenticated","VnGeolocationTracking","events","UserLoginEvent","workflowType","sendToGA","triggerEvent","accountId","nativeMode","put","UserService","TrackingService","_GeolocationBootstrapService","GeolocationDslResolver","getPosition","getValue","Error","getLocation","hasPosition","_GeolocationDslResolver","DEPENDENCIES","GeolocationDslValuesProvider","dslRecorderService","dslCacheService","dslTimeConverter","geolocationDslResolver","invalidate","getProviders","recordable","createRecordable","resolver","createProperty","createPositionProperty","fromTimeToDsl","DateTimeOffset","TimeSpan","ZERO","createLocationProperty","Geolocation","name","deps","DslRecorderService","DslCacheService","DslTimeConverterService","_GeolocationDslValuesProvider","GeolocationContextProvider","LaunchDarklyLazyContextProvider","getLazyContext","timeout","catch","kind","_GeolocationContextProvider","provide","useFactory","LazyClientConfigService","runOnFeatureInit","registerLazyDslOnModuleInit","runLaunchDarklyLazyContextProvider"],"mappings":"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"}