{"version":3,"file":"chunk-g83codwt.js","sources":["packages/vanilla/lib/shared/cashier/cashier.client-config.ts","packages/vanilla/lib/shared/cashier/cashier-iframe.models.ts","packages/vanilla/lib/shared/cashier/cashier-iframe.component.ts","packages/vanilla/lib/shared/cashier/cashier-iframe.html"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { ClientConfigProductName, LazyClientConfig, LazyClientConfigBase, LazyClientConfigService } from '@frontend/vanilla/core';\n\n/**\n * @stable\n */\n@LazyClientConfig({ key: 'vnCashier', product: ClientConfigProductName.SF })\n@Injectable({\n providedIn: 'root',\n deps: [LazyClientConfigService],\n useFactory: cashierConfigFactory,\n})\nexport class CashierConfig extends LazyClientConfigBase {\n depositUrlTemplate: string;\n withdrawUrlTemplate: string;\n transactionHistoryUrlTemplate: string;\n urlTemplate: string;\n manageMyCardsUrlTemplate: string;\n paymentPreferencesUrlTemplate: string;\n host: string;\n singleSignOnIntegrationType: string = 'query' || 'cookie';\n trackerIds: { [origin: string]: string };\n quickDepositAllowedOrigins: { [origin: string]: boolean };\n quickDepositUrlTemplate: string;\n isQuickDepositEnabled: boolean;\n isPaymentsAppEnabled: boolean;\n isPaymentsAppQuickDepositEnabled: boolean;\n paymentsAppUrl: string;\n}\n\nexport function cashierConfigFactory(service: LazyClientConfigService) {\n return service.get(CashierConfig);\n}\n","/**\n * @stable\n */\nexport enum CashierIframeAction {\n Chat = 'CHAT',\n Close = 'CLOSE',\n DepositSuccess = 'DEPOSITSUCCESSQD',\n FetchLocation = 'FETCHLOCATION',\n Open = 'OPEN',\n Resize = 'RESIZE',\n UpdateBalance = 'UPDATEBALANCE',\n}\n\n/**\n * @stable\n */\nexport enum CashierIframeType {\n PaymentPreferences = 'paymentpreferences',\n QuickDeposit = 'quickdeposit',\n}\n\n/**\n * @stable\n * @param {target}: quickDeposit by default\n */\nexport interface CashierIframeEvent {\n action?: string;\n target?: string;\n\n [key: string]: any;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n OnChanges,\n OnInit,\n Output,\n ViewChild,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport {\n CashierService,\n DeviceService,\n ElementRepositoryService,\n EventsService,\n MediaQueryService,\n NativeAppService,\n NativeEventType,\n NavigationService,\n VanillaElements,\n VanillaEventNames,\n WINDOW,\n} from '@frontend/vanilla/core';\nimport { BalancePropertiesService } from '@frontend/vanilla/features/balance-properties';\nimport { IFrameComponent } from '@frontend/vanilla/shared/browser';\nimport { firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { CashierIframeAction, CashierIframeEvent } from './cashier-iframe.models';\nimport { CashierConfig } from './cashier.client-config';\n\n@Component({\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, IFrameComponent],\n selector: 'vn-cashier-iframe',\n templateUrl: 'cashier-iframe.html',\n})\nexport class CashierIframeComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild(IFrameComponent) iframe: IFrameComponent;\n @ViewChild('wrapper') wrapper: ElementRef;\n\n url = input('');\n /** Indicates cashier page. Possible values: deposit */\n readonly page = input('');\n readonly iframeClass = input('');\n readonly cssClass = input('');\n\n @Output() onLoaded = new EventEmitter();\n @Output() onClosed = new EventEmitter();\n @Output() onResized = new EventEmitter();\n\n readonly host = signal('');\n readonly #window = inject(WINDOW);\n\n constructor(\n public deviceService: DeviceService,\n private config: CashierConfig,\n private navigation: NavigationService,\n private balancePropertiesService: BalancePropertiesService,\n private cashierService: CashierService,\n private mediaQueryService: MediaQueryService,\n private navigationService: NavigationService,\n private eventsService: EventsService,\n private nativeAppService: NativeAppService,\n private elementRepositoryService: ElementRepositoryService,\n private changeDetectorRef: ChangeDetectorRef,\n private destroyRef: DestroyRef,\n ) {}\n\n // Note: ngOnChanges runs before ngOnInit\n ngOnChanges() {\n if (!this.url() && this.host()) {\n this.setUrl();\n }\n }\n\n async ngOnInit() {\n await Promise.all([firstValueFrom(this.config.whenReady), firstValueFrom(this.cashierService.whenReady)]);\n this.host.set(this.config.host);\n this.changeDetectorRef.detectChanges();\n\n if (!this.url()) {\n this.setUrl();\n }\n }\n\n ngAfterViewInit() {\n this.iframe.events\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n map((uri: any) => decodeURIComponent(uri)),\n )\n .subscribe((data: string) => {\n const message: CashierIframeEvent = data.split('&').reduce((seed: Record, cur: string) => {\n const param = cur.trim().split('=');\n\n if (param[0] && param[1]) {\n seed[param[0]] = param[1];\n }\n\n return seed;\n }, {});\n\n switch (message.action?.toUpperCase()) {\n case CashierIframeAction.Close:\n if (this.onClosed.observers.length) {\n this.onClosed.next(message);\n break;\n }\n // for now, until known where to redirect\n this.navigation.goToLastKnownProduct();\n break;\n case CashierIframeAction.Open:\n this.onLoaded.next();\n if (this.onResized.observers.length) {\n this.onResized.next(message);\n } else {\n this.resize(message);\n this.#window.scrollTo(0, 0);\n }\n break;\n case CashierIframeAction.Resize:\n if (this.onResized.observers.length) {\n this.onResized.next(message);\n } else {\n this.resize(message);\n this.#window.scrollTo(0, 0);\n }\n break;\n case CashierIframeAction.UpdateBalance:\n this.balancePropertiesService.refresh();\n break;\n case CashierIframeAction.Chat:\n this.onClosed.next(message);\n const url = this.navigationService.location.clone();\n url.search.set('cashierId', message['Web_site_URL']);\n url.search.set('chat', 'open');\n this.navigationService.goTo(url);\n break;\n case CashierIframeAction.DepositSuccess:\n this.eventsService.raise({\n eventName: VanillaEventNames.DepositSuccessQD,\n data: { currency: message['currency'], value: message['amount'] },\n });\n this.onClosed.next(message);\n break;\n case CashierIframeAction.FetchLocation:\n this.nativeAppService.sendToNative({\n eventName: NativeEventType.TRIGGER_GEO_LOCATION,\n parameters: message,\n });\n break;\n }\n });\n }\n\n private setUrl() {\n const pathTemplate = (this.config as any)[`${this.page()}UrlTemplate`];\n this.url = this.cashierService.generateCashierUrl({ pathTemplate });\n }\n\n private resize(message: CashierIframeEvent) {\n // Resize targeted by URL iframe\n const isValidTarget = this.wrapper.nativeElement.dataset['url']?.toLowerCase().indexOf(message.target?.toLowerCase() || '') !== -1;\n\n if (!isValidTarget) {\n return;\n }\n\n const isNotMobile = this.mediaQueryService.isActive('gt-xs');\n const parsedWidth = isNotMobile && message['width'].length ? `${parseInt(message['width'], 10)}px` : null;\n const parsedHeight = message['height'].length ? `${parseInt(message['height'], 10)}px` : null;\n\n if (parsedWidth != null) {\n this.wrapper.nativeElement.style.width = parsedWidth;\n }\n\n if (parsedHeight != null) {\n this.wrapper.nativeElement.style.height = parsedHeight;\n }\n\n const mainSlot = this.elementRepositoryService.get(VanillaElements.MAIN_SLOT);\n\n if (mainSlot) {\n this.wrapper.nativeElement.getBoundingClientRect().height > mainSlot.getBoundingClientRect().height\n ? mainSlot.classList.add('overflow-visible')\n : mainSlot.classList.remove('overflow-visible');\n }\n }\n}\n","
\n \n
\n"],"names":["CashierConfig","_a","LazyClientConfigBase","constructor","singleSignOnIntegrationType","__ngFactoryType__","factory","__ngConditionalFactory__","cashierConfigFactory","ɵɵinject","LazyClientConfigService","__decorate","LazyClientConfig","key","product","ClientConfigProductName","SF","service","get","CashierIframeAction","CashierIframeType","CashierIframeComponent","_window","deviceService","config","navigation","balancePropertiesService","cashierService","mediaQueryService","navigationService","eventsService","nativeAppService","elementRepositoryService","changeDetectorRef","destroyRef","__privateAdd","url","input","page","iframeClass","cssClass","onLoaded","EventEmitter","onClosed","onResized","host","signal","__privateSet","inject","WINDOW","ngOnChanges","setUrl","ngOnInit","__async","Promise","all","firstValueFrom","whenReady","set","detectChanges","ngAfterViewInit","iframe","events","pipe","takeUntilDestroyed","map","uri","decodeURIComponent","subscribe","data","message","split","reduce","seed","cur","param","trim","action","toUpperCase","Close","observers","length","next","goToLastKnownProduct","Open","resize","__privateGet","scrollTo","Resize","UpdateBalance","refresh","Chat","location","clone","search","goTo","DepositSuccess","raise","eventName","VanillaEventNames","DepositSuccessQD","currency","value","FetchLocation","sendToNative","NativeEventType","TRIGGER_GEO_LOCATION","parameters","pathTemplate","generateCashierUrl","wrapper","nativeElement","dataset","toLowerCase","indexOf","target","parsedWidth","isActive","parseInt","parsedHeight","style","width","height","mainSlot","VanillaElements","MAIN_SLOT","getBoundingClientRect","classList","add","remove","ɵɵdirectiveInject","DeviceService","NavigationService","BalancePropertiesService","CashierService","MediaQueryService","EventsService","NativeAppService","ElementRepositoryService","ChangeDetectorRef","DestroyRef","selectors","viewQuery","rf","ctx","IFrameComponent","y","R","w","k","q","ɵɵelementStart","ɵɵtext","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵclassMap","CommonModule","NgClass","encapsulation","changeDetection","_CashierIframeComponent"],"mappings":"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"}