{"version":3,"file":"chunk-urfkk0u9.js","sources":["packages/vanilla/lib/shared/eds-group/src/eds-group-resource.service.ts","packages/vanilla/lib/shared/eds-group/src/eds-group.service.ts","packages/vanilla/lib/features/offer-button/src/offer-button.client-config.ts","packages/vanilla/lib/features/offer-button/src/offer-button.models.ts","packages/vanilla/lib/features/offer-button/src/offer-button-component-base.ts","packages/vanilla/lib/features/offer-button/src/offer-button-behavior.directive.ts","packages/vanilla/lib/features/offer-button/src/offer-button.component.ts","packages/vanilla/lib/features/offer-button/src/offer-button.directive.ts","packages/vanilla/lib/features/offer-button/src/offer-behavior-button.component.ts","packages/vanilla/lib/features/offer-button/src/offer-button-bootstrap.service.ts","packages/vanilla/lib/features/offer-button/src/offer-button.feature.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\n/**\n * @experimental\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class EdsGroupResourceService {\n constructor(private api: SharedFeaturesApiService) {}\n\n getGroupOptinStatus(groupId: string | null): Observable {\n return this.api.get(`edsgroup/${groupId}`);\n }\n\n updateCampaignOptinStatus(campaignId: string, optIn = true) {\n return this.api.post(`edsgroup/${campaignId}/${optIn}`);\n }\n}\n\nexport interface EdsGroupOptinStatus {\n campaignDetails: CampaignDetails[];\n}\n\nexport interface CampaignDetails {\n id: number;\n optInStatus: string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { Subject, catchError, debounceTime, firstValueFrom, switchMap } from 'rxjs';\n\nimport { CampaignDetails, EdsGroupResourceService } from './eds-group-resource.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EdsGroupService {\n public freshCampaignDetails: Subject = new Subject();\n public refreshEdsGroupStatus: Subject = new Subject();\n private campaignDetails: CampaignDetails[] = [];\n\n constructor(private edsGroupResourcesService: EdsGroupResourceService) {\n this.refreshEdsGroupStatus\n .pipe(\n debounceTime(200),\n switchMap(async (groupId) => {\n const groupOptinStatus = await firstValueFrom(\n this.edsGroupResourcesService.getGroupOptinStatus(groupId).pipe(catchError(() => Promise.resolve({ campaignDetails: [] }))),\n );\n return { groupOptinStatus, groupId };\n }),\n )\n .subscribe((result) => {\n this.campaignDetails = result.groupOptinStatus.campaignDetails;\n this.freshCampaignDetails.next(result.groupId);\n });\n }\n\n async updateCampaignStatus(groupId: string, campaignId: string, optIn = true): Promise {\n const status = await firstValueFrom(\n this.edsGroupResourcesService.updateCampaignOptinStatus(campaignId, optIn).pipe(catchError(() => Promise.resolve('error'))),\n );\n this.refreshEdsGroupStatus.next(groupId);\n return status;\n }\n\n getCampaignStatus(campaignId: string): string {\n return this.campaignDetails.find((campaign) => campaign?.id?.toString() === campaignId)?.optInStatus || 'error';\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService, ViewTemplate } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'vnOfferButton', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: offerButtonConfigFactory,\n})\nexport class OfferButtonConfig extends LazyClientConfigBase {\n content?: ViewTemplate;\n buttonClass?: ViewTemplate;\n iconClass?: ViewTemplate;\n v2: boolean;\n}\n\nexport function offerButtonConfigFactory(service: LazyClientConfigService) {\n return service.get(OfferButtonConfig);\n}\n","/**\n * @stable\n */\nexport enum OfferStatus {\n Offered = 'offered',\n OptedIn = 'opted-in',\n Expired = 'expired',\n NotOffered = 'not-offered',\n OptedOut = 'opted-out',\n Error = 'error',\n Invalid = 'invalid',\n Unknown = 'unknown',\n}\n\nexport enum QueryParam {\n OfferId = 'offerId',\n OfferType = 'offerType',\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Directive, ElementRef, HostBinding, HostListener, OnDestroy, OnInit, inject } from '@angular/core';\n\nimport {\n AnchorTrackingHelperService,\n CustomElement,\n MenuActionOrigin,\n MenuActionsService,\n NavigationService,\n TrackingService,\n UrlService,\n UserService,\n} from '@frontend/vanilla/core';\nimport { EdsGroupService } from '@frontend/vanilla/shared/eds-group';\nimport { OfferResponse, OfferType, OffersResourceService } from '@frontend/vanilla/shared/offers';\nimport { kebabCase } from 'lodash-es';\nimport { Subject, firstValueFrom } from 'rxjs';\nimport { catchError, filter, map, takeUntil } from 'rxjs/operators';\n\nimport { OfferButtonConfig } from './offer-button.client-config';\nimport { OfferStatus, QueryParam } from './offer-button.models';\n\n/**\n * @stable\n */\n@Directive()\nexport class OfferButtonComponentBase implements OnInit, OnDestroy, AfterViewInit {\n @HostBinding('class.offer-button-loading') loading: boolean;\n @HostBinding() innerText: string = '';\n @HostBinding('attr.data-offer-status') offerStatus: string;\n\n private offerId: string;\n private offerType: string;\n private edsGroupId: string | null;\n private unsubscribe = new Subject();\n private originalClass: string;\n private nativeElement: CustomElement;\n public doc = inject(DOCUMENT);\n\n protected elementRef = inject(ElementRef);\n protected user = inject(UserService);\n protected menuActionsService = inject(MenuActionsService);\n protected navigationService = inject(NavigationService);\n protected urlService = inject(UrlService);\n protected offersResourceService = inject(OffersResourceService);\n protected offerConfig = inject(OfferButtonConfig);\n protected edsGroupService = inject(EdsGroupService);\n protected anchorTrackingHelperService = inject(AnchorTrackingHelperService);\n protected trackingService = inject(TrackingService);\n private trackingEventName: string | null;\n private trackingData: { [key: string]: string };\n get isEdsGroupType(): boolean {\n return this.offerType?.toLowerCase() === OfferType.EDS_GROUP;\n }\n\n @HostListener('click', ['$event'])\n async onClick(event: Event) {\n event.preventDefault();\n\n if (!this.loading && this.offerStatus === OfferStatus.Offered) {\n const el = event.target as HTMLAnchorElement;\n this.trackingEventName = this.anchorTrackingHelperService.getTrackingEventName(el);\n this.trackingData = this.anchorTrackingHelperService.createTrackingData(el);\n this.triggerEvent({ 'component.ActionEvent': 'click' });\n\n if (!this.user.isAuthenticated) {\n this.gotoLogin(true);\n } else {\n this.updateButton(await this.makeRequest('POST', true));\n }\n }\n }\n\n ngOnInit() {\n this.nativeElement = this.elementRef.nativeElement as CustomElement;\n this.offerConfig.whenReady.subscribe(async () => {\n this.offerId = this.getAttributeValue('data-offer-id') || this.getAttributeValue('data-campaign-id');\n this.offerType = this.elementRef.nativeElement.getAttribute('data-offer-type')!;\n this.edsGroupId = this.elementRef.nativeElement.getAttribute('data-eds-group-id');\n this.originalClass = this.elementRef.nativeElement.getAttribute('class') || '';\n this.elementRef.nativeElement.classList.add('offer-button-md');\n\n if (this.nativeElement.originalHtmlString) {\n this.elementRef.nativeElement.innerHTML = this.nativeElement.originalHtmlString;\n }\n\n this.navigationService.locationChange.pipe(takeUntil(this.unsubscribe)).subscribe(async () => {\n await this.loadButton(true);\n });\n await this.loadButton();\n\n if (this.isEdsGroupType) {\n this.edsGroupService.freshCampaignDetails\n .pipe(\n filter((edsGroupId: string) => edsGroupId === this.edsGroupId),\n takeUntil(this.unsubscribe),\n )\n .subscribe(() => {\n const status = this.edsGroupService.getCampaignStatus(this.offerId);\n this.updateButton(status);\n });\n }\n });\n }\n ngAfterViewInit() {\n if (this.elementRef.nativeElement.hasAttribute('ds-button')) {\n this.originalClass = this.elementRef.nativeElement.getAttribute('class') || '';\n this.elementRef.nativeElement.setAttribute('class', '');\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n }\n\n private async makeRequest(method: string, shouldTrack: boolean = false): Promise {\n this.loading = true;\n\n if (this.isEdsGroupType) {\n if (method === 'GET') {\n this.edsGroupService.refreshEdsGroupStatus.next(this.edsGroupId!);\n await firstValueFrom(this.edsGroupService.freshCampaignDetails.pipe(filter((groupId) => groupId === this.edsGroupId)));\n }\n return new Promise((resolve) => {\n if (method === 'GET') {\n resolve(this.edsGroupService.getCampaignStatus(this.offerId));\n } else {\n this.edsGroupService.updateCampaignStatus(this.edsGroupId!, this.offerId);\n }\n });\n }\n\n const offerStatus = await firstValueFrom(\n method === 'GET'\n ? this.offersResourceService.getStatus(this.offerType, this.offerId).pipe(\n map((response: OfferResponse) => response.status),\n catchError(() => Promise.resolve('error')),\n )\n : this.offersResourceService.updateStatus(this.offerType, this.offerId).pipe(\n map((response: OfferResponse) => response.status),\n catchError(() => Promise.resolve('error')),\n ),\n );\n\n if (method === 'POST' && shouldTrack) {\n this.triggerEvent({ 'component.ActionEvent': 'success opt-in', 'component.EventDetails': 'you have opted in' });\n }\n\n return offerStatus;\n }\n\n private updateButton(offerStatus: string, text?: string | null) {\n const status = kebabCase(offerStatus);\n const content = this.offerConfig.content?.messages;\n const configMessage = content && (content[status] || content[OfferStatus.Unknown]);\n\n const innerText = text || this.getMessage(status) || configMessage || '';\n const buttonClass = this.offerConfig.buttonClass?.messages;\n const klass = (buttonClass && buttonClass[status]) || this.originalClass;\n\n const hasDsButton = this.elementRef.nativeElement.hasAttribute('ds-button');\n if (hasDsButton === true) {\n const optinClass = status !== OfferStatus.Offered ? klass : this.originalClass;\n this.elementRef.nativeElement.setAttribute('class', optinClass);\n } else {\n this.elementRef.nativeElement.setAttribute('class', klass);\n }\n if (this.offerConfig.v2) {\n // remove previously added children to reset to an empty state.\n while (this.nativeElement.firstChild) {\n this.nativeElement.removeChild(this.nativeElement.firstChild);\n }\n const textSpanElement = this.doc.createElement('span');\n\n const iconClass = this.offerConfig.iconClass?.messages?.[status] ?? '';\n if (iconClass) {\n const iconSpanElement = this.doc.createElement('span');\n iconSpanElement.setAttribute('class', iconClass);\n this.nativeElement.appendChild(iconSpanElement);\n }\n\n textSpanElement.innerText = innerText;\n this.nativeElement.appendChild(textSpanElement);\n } else {\n this.innerText = innerText;\n }\n\n this.elementRef.nativeElement.classList.add('offer-button-md');\n this.offerStatus = status;\n this.loading = false;\n }\n\n private getMessage(status: string): string | null {\n return this.elementRef.nativeElement.getAttribute(`data-offer-message-${status}`);\n }\n\n private async loadButton(shouldTrack: boolean = false) {\n const searchParam = this.navigationService.location.search;\n const offerIdQueryParam = searchParam.get(QueryParam.OfferId);\n const offerTypeQueryParam = searchParam.get(QueryParam.OfferType);\n\n if (this.user.isAuthenticated) {\n const status = await this.makeRequest('GET');\n this.updateButton(status);\n\n if (kebabCase(status) === OfferStatus.Offered && this.isSameOffer(offerIdQueryParam, offerTypeQueryParam)) {\n this.updateButton(await this.makeRequest('POST', shouldTrack));\n }\n } else {\n if (this.isSameOffer(offerIdQueryParam, offerTypeQueryParam)) {\n this.gotoLogin(false);\n }\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n this.updateButton(OfferStatus.Offered, this.getMessage(OfferStatus.Offered));\n }\n }\n\n private getAttributeValue(name: string): any {\n if (this.nativeElement.originalAttributes) {\n return this.nativeElement.originalAttributes.get(name);\n }\n\n return this.elementRef.nativeElement.getAttribute(name);\n }\n\n private gotoLogin(appendOfferDetails: boolean) {\n const returnUrl = this.urlService.current();\n if (appendOfferDetails) {\n returnUrl.search.set(QueryParam.OfferId, this.offerId);\n returnUrl.search.set(QueryParam.OfferType, this.offerType);\n } else {\n // append dummy querystring to force navigation after the login\n returnUrl.search.set('triggernav', '1');\n }\n\n this.menuActionsService.invoke('gotoLogin', MenuActionOrigin.OfferButton, [undefined, undefined, { returnUrl: returnUrl.absUrl() }]);\n }\n\n private isSameOffer(offerId: string | null, offerType: string | null): boolean {\n return offerId == this.offerId && offerType == this.offerType;\n }\n\n private triggerEvent(eventSpecificTrackData: { [key: string]: string }) {\n if (this.trackingEventName) {\n this.trackingService.triggerEvent(this.trackingEventName, { ...this.trackingData, ...eventSpecificTrackData });\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, inject } from '@angular/core';\n\nimport { OfferButtonComponentBase } from './offer-button-component-base';\n\n/**\n * @stable\n */\n@Directive({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[data-offer-id],[data-campaign-id]',\n})\nexport class OfferButtonBehaviorDirective extends OfferButtonComponentBase {\n private readonly _doc = inject(DOCUMENT);\n\n constructor() {\n super();\n this.doc = this._doc;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, inject } from '@angular/core';\n\nimport { OfferButtonComponentBase } from './offer-button-component-base';\n\n/**\n * @stable\n */\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[data-offer-id],[data-campaign-id]:not(a[ds-button])',\n template: '',\n})\nexport class OfferButtonComponent extends OfferButtonComponentBase {\n private readonly _doc = inject(DOCUMENT);\n\n constructor() {\n super();\n this.doc = this._doc;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, inject } from '@angular/core';\n\nimport { OfferButtonComponentBase } from './offer-button-component-base';\n\n/**\n * @stable\n */\n@Directive({\n standalone: true,\n})\nexport class OfferButtonDirective extends OfferButtonComponentBase {\n private readonly _doc = inject(DOCUMENT);\n\n constructor() {\n super();\n this.doc = this._doc;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { DsButton } from '@frontend/ui/button';\n\nimport { OfferButtonDirective } from './offer-button.directive';\n\n/**\n * @stable\n */\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[data-offer-id],[data-campaign-id]',\n template: '',\n hostDirectives: [OfferButtonDirective],\n})\nexport class OfferBehaviorButtonComponent extends DsButton {}\n","import { Injectable } from '@angular/core';\n\nimport { EmbeddableComponentsService, OnFeatureInit } from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\n\nimport { OfferBehaviorButtonComponent } from './offer-behavior-button.component';\nimport { OfferButtonConfig } from './offer-button.client-config';\n\n@Injectable()\nexport class OfferButtonBootstrapService implements OnFeatureInit {\n constructor(\n private embeddableComponentsService: EmbeddableComponentsService,\n private config: OfferButtonConfig,\n ) {}\n\n async onFeatureInit() {\n await firstValueFrom(this.config.whenReady);\n this.embeddableComponentsService.registerEmbeddableComponent(OfferBehaviorButtonComponent, 23);\n }\n}\n","import { runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { OfferButtonBootstrapService } from './offer-button-bootstrap.service';\n\nexport function provide() {\n return [runOnFeatureInit(OfferButtonBootstrapService)];\n}\n"],"names":["EdsGroupResourceService","constructor","api","getGroupOptinStatus","groupId","get","updateCampaignOptinStatus","campaignId","optIn","post","ɵɵinject","SharedFeaturesApiService","factory","ɵfac","providedIn","_EdsGroupResourceService","EdsGroupService","edsGroupResourcesService","freshCampaignDetails","Subject","refreshEdsGroupStatus","campaignDetails","pipe","debounceTime","switchMap","__async","groupOptinStatus","firstValueFrom","catchError","Promise","resolve","subscribe","result","next","updateCampaignStatus","status","getCampaignStatus","find","campaign","id","toString","optInStatus","_EdsGroupService","OfferButtonConfig","_a","LazyClientConfigBase","__ngFactoryType__","__ngConditionalFactory__","offerButtonConfigFactory","LazyClientConfigService","__decorate","LazyClientConfig","key","product","ClientConfigProductName","SF","service","OfferStatus","QueryParam","OfferButtonComponentBase","innerText","unsubscribe","doc","inject","DOCUMENT","elementRef","ElementRef","user","UserService","menuActionsService","MenuActionsService","navigationService","NavigationService","urlService","UrlService","offersResourceService","OffersResourceService","offerConfig","edsGroupService","anchorTrackingHelperService","AnchorTrackingHelperService","trackingService","TrackingService","isEdsGroupType","offerType","toLowerCase","OfferType","EDS_GROUP","onClick","event","preventDefault","loading","offerStatus","Offered","el","target","trackingEventName","getTrackingEventName","trackingData","createTrackingData","triggerEvent","isAuthenticated","updateButton","makeRequest","gotoLogin","ngOnInit","nativeElement","whenReady","offerId","getAttributeValue","getAttribute","edsGroupId","originalClass","classList","add","originalHtmlString","innerHTML","locationChange","takeUntil","loadButton","filter","ngAfterViewInit","hasAttribute","setAttribute","ngOnDestroy","complete","method","shouldTrack","getStatus","map","response","updateStatus","text","kebabCase","content","messages","configMessage","Unknown","getMessage","buttonClass","klass","optinClass","v2","firstChild","removeChild","textSpanElement","createElement","iconClass","iconSpanElement","appendChild","searchParam","location","search","offerIdQueryParam","OfferId","offerTypeQueryParam","isSameOffer","setTimeout","name","originalAttributes","appendOfferDetails","returnUrl","current","set","invoke","MenuActionOrigin","OfferButton","undefined","absUrl","eventSpecificTrackData","__spreadValues","C","hostVars","hostBindings","rf","ctx","ɵɵlistener","$event","ɵɵhostProperty","ɵɵclassProp","_OfferButtonComponentBase","OfferButtonBehaviorDirective","_doc","selectors","standalone","features","ɵɵInheritDefinitionFeature","_OfferButtonBehaviorDirective","OfferButtonComponent","ɵɵStandaloneFeature","attrs","_c0","ngContentSelectors","_c1","decls","vars","template","ɵɵprojection","_OfferButtonComponent","OfferButtonDirective","_OfferButtonDirective","OfferBehaviorButtonComponent","DsButton","B","ɵɵHostDirectivesFeature","_OfferBehaviorButtonComponent","OfferButtonBootstrapService","embeddableComponentsService","config","onFeatureInit","registerEmbeddableComponent","EmbeddableComponentsService","_OfferButtonBootstrapService","provide","runOnFeatureInit"],"mappings":"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"}