{"version":3,"file":"offer-button-exohwvnd.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: boolean = 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: boolean = 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","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","w","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","D","ɵɵprojection","_OfferButtonComponent","OfferButtonDirective","C","_OfferButtonDirective","OfferBehaviorButtonComponent","DsButton","B","ɵɵHostDirectivesFeature","_OfferBehaviorButtonComponent","OfferButtonBootstrapService","embeddableComponentsService","config","onFeatureInit","registerEmbeddableComponent","EmbeddableComponentsService","_OfferButtonBootstrapService","provide","runOnFeatureInit"],"mappings":"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"}