{"version":3,"file":"offer-button-gk38kufn.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.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","/**\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","h","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","_a","find","campaign","id","toString","optInStatus","_EdsGroupService","OfferButtonConfig","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","_b","_c","_d","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","features","ɵɵInheritDefinitionFeature","_OfferButtonBehaviorDirective","OfferButtonComponent","ngContentSelectors","_c1","decls","vars","template","ɵɵprojection","_OfferButtonComponent","OfferButtonDirective","_OfferButtonDirective","OfferBehaviorButtonComponent","DsButton","B","ɵɵHostDirectivesFeature","attrs","_OfferBehaviorButtonComponent","OfferButtonBootstrapService","embeddableComponentsService","config","onFeatureInit","registerEmbeddableComponent","EmbeddableComponentsService","_OfferButtonBootstrapService","provide","runOnFeatureInit"],"mappings":"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"}