{"version":3,"file":"epp-lib.mjs","sources":["../../../projects/epp-lib/src/lib/translation/epp-lib-translate.service.ts","../../../projects/epp-lib/src/lib/translation/epp-lib-translation.service.ts","../../../projects/epp-lib/src/lib/translation/epp-lib-loader.ts","../../../projects/epp-lib/src/lib/translation/epp-lib.providers.ts","../../../projects/epp-lib/src/lib/model/domain.ts","../../../projects/epp-lib/src/lib/service/vodds-http.service.ts","../../../projects/epp-lib/src/lib/api-route.const.ts","../../../projects/epp-lib/src/lib/model/payment-type.ts","../../../projects/epp-lib/src/lib/model/iframe-message-type.ts","../../../projects/epp-lib/src/lib/service/iframe-message.service.ts","../../../projects/epp-lib/src/lib/service/common-util.ts","../../../projects/epp-lib/src/lib/model/payload.ts","../../../projects/epp-lib/src/lib/model/checkout.ts","../../../projects/epp-lib/src/lib/model/cancel-withdraw.ts","../../../projects/epp-lib/src/lib/model/count-down-time.ts","../../../projects/epp-lib/src/lib/model/iparam.ts","../../../projects/epp-lib/src/lib/model/timer.ts","../../../projects/epp-lib/src/lib/model/profile.ts","../../../projects/epp-lib/src/lib/pipe/transloco.pipe.ts","../../../projects/epp-lib/src/lib/component/vodds-loader/vodds-loader.component.ts","../../../projects/epp-lib/src/lib/component/vodds-loader/vodds-loader.component.html","../../../projects/epp-lib/src/lib/component/rapyd/rapyd.component.ts","../../../projects/epp-lib/src/lib/component/rapyd/rapyd.component.html","../../../projects/epp-lib/src/lib/component/cancel-withdraw/cancel-withdraw.component.ts","../../../projects/epp-lib/src/lib/component/cancel-withdraw/cancel-withdraw.component.html","../../../projects/epp-lib/src/lib/component/vodds-snack-bar/vodds-snack-bar.component.ts","../../../projects/epp-lib/src/lib/component/vodds-snack-bar/vodds-snack-bar.component.html","../../../projects/epp-lib/src/lib/component/vodds-snack-bar/vodds-snack-bar.service.ts","../../../projects/epp-lib/src/lib/component/payment.ts","../../../projects/epp-lib/src/public-api.ts","../../../projects/epp-lib/src/epp-lib.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\nimport enTranslations from './i18n/en.json';\r\nimport csTranslations from './i18n/cs.json';\r\nimport esTranslations from './i18n/es.json';\r\nimport ruTranslations from './i18n/ru.json';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class EppLibTranslateService {\r\n  private currentLang = signal<keyof typeof EPP_LIB_DICTIONARY>('en');\r\n\r\n  setLanguage(lang: keyof typeof EPP_LIB_DICTIONARY) {\r\n    this.currentLang.set(lang);\r\n  }\r\n\r\n  get(key: string): string {\r\n    const langData = EPP_LIB_DICTIONARY[this.currentLang()];\r\n    return (langData as any)[key] || key;\r\n  }\r\n}\r\n\r\nexport const EPP_LIB_DICTIONARY = {\r\n  en: enTranslations,\r\n  cs: csTranslations,\r\n  es: esTranslations,\r\n  ru: ruTranslations\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class EppLibTranslationService {\r\n    private transloco = inject(TranslocoService);\r\n\r\n    setLanguage(lang: string): void {\r\n        this.transloco.setActiveLang(lang);\r\n    }\r\n\r\n    getLanguage(): string {\r\n        return this.transloco.getActiveLang();\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslocoLoader } from '@jsverse/transloco';\r\n\r\n@Injectable()\r\nexport class EppLibLoader implements TranslocoLoader {\r\n    getTranslation(lang: string) {\r\n        switch (lang) {\r\n            case 'cs':\r\n                return import('./i18n/cs.json');\r\n            case 'ru':\r\n                return import('./i18n/ru.json');\r\n            case 'es':\r\n                return import('./i18n/es.json');\r\n            case 'en':\r\n            default:\r\n                return import('./i18n/en.json');\r\n        }\r\n    }\r\n}","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\nimport { provideTransloco, provideTranslocoScope } from '@jsverse/transloco';\r\nimport { EppLibLoader } from './epp-lib-loader';\r\n\r\nexport interface EppLibConfig {\r\n    defaultLang: string;\r\n    availableLangs: string[];\r\n}\r\n\r\nexport function provideEppLibTranslations(config: EppLibConfig): EnvironmentProviders {\r\n    return makeEnvironmentProviders([\r\n        provideTransloco({\r\n            config: {\r\n                availableLangs: config.availableLangs,\r\n                defaultLang: config.defaultLang,\r\n                reRenderOnLangChange: true,\r\n            },\r\n            loader: EppLibLoader,\r\n        }),\r\n        // provideTranslocoScope({\r\n        //     scope: 'epp-lib',\r\n        //     loader: {\r\n        //         en: () => import('./i18n/en.json'),\r\n        //         cs: () => import('./i18n/cs.json'),\r\n        //         es: () => import('./i18n/es.json'),\r\n        //         ru: () => import('./i18n/ru.json'),\r\n        //     },\r\n        // })\r\n    ]);\r\n}","export class Domain {\r\n    defaultDomain: string = '';\r\n    allowedOrigins: string[] = ['http://localhost:9000', 'http://localhost:4200', 'http://epp.com', 'https://epp.myvodds.com', 'https://myvodds.com', 'http://test.myvodds.com'];\r\n    specialDomain: string[] = [];\r\n    jetonDomain: string = '';\r\n    ecopayzDomain: string = '';\r\n    rapydDomain: string = 'https://sandboxcheckout.rapyd.net';\r\n    constructor() {}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IParam } from '../model/iparam';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class VoddsHttpService {\r\n    private httpClient = inject(HttpClient);\r\n\r\n    postJson<T>(url: string, request: IParam, token?: string): Observable<any> {\r\n        let headers = new HttpHeaders({ 'Content-type': 'application/json' });\r\n        if (token) {\r\n            headers = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8')\r\n                .append('Authorization', \"Bearer \" + token);\r\n        }\r\n        return this.httpClient.post<T>(url, request.toJson(), { headers });\r\n    }\r\n\r\n    get<T>(url: string, param?: IParam, token?: string): Observable<T> {\r\n        let headers = new HttpHeaders({ 'Content-type': 'application/json' });\r\n        if (token) {\r\n            headers = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8')\r\n                .append('Authorization', \"Bearer \" + token);\r\n        }\r\n        if(param) {\r\n            url = url + '?' + param.toFormUrlEncoded();\r\n        }\r\n        return this.httpClient.get<T>(url, { headers  });\r\n    }\r\n    get2<T>(url: string, option?: any): Observable<T> {\r\n        const observable: Observable<any> = new Observable(observer => {\r\n            this.httpClient.get<any>(url, option).subscribe(\r\n                res => {\r\n                    observer.next(res);\r\n                },\r\n                err => {\r\n                    observer.next(err);\r\n                }\r\n            );\r\n        });\r\n        return observable;\r\n    }\r\n\r\n    postFormUrlEncoded<T>(url: string, request: IParam, token?: string): Observable<T> {\r\n        let headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\r\n        if (token) {\r\n            headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')\r\n                .append('Authorization', \"Bearer \" + token);\r\n        }\r\n        return this.httpClient.post<T>(url, request.toFormUrlEncoded(), { headers });\r\n    }\r\n\r\n    getFullUrl(url: string, param: IParam): string {\r\n        return `${url}?${param.toFormUrlEncoded()}`;\r\n    }\r\n}\r\n","export const ApiRoute = {\r\n    GET_DOMAIN: { url: \"/payment/getDomain\", method: \"get\" }\r\n}\r\n\r\n","export enum PaymentType {\r\n    NA,\r\n    JETON,\r\n    ECOPAYZ,\r\n    RAPYD\r\n}\r\n","export enum IframeMessageType {\r\n    OPEN_PAYMENT_FORM,\r\n    PAYMENT_CALLBACK,\r\n    THIRD_PARTY_CALLBACK,\r\n    OPEN_DEPOSIT,\r\n    OPEN_WITHDRAW,\r\n    OPEN_TRANSACTION,\r\n    CANCEL_WITHDRAW,\r\n    NOTIFICATION,\r\n    IN_PROGRESS,\r\n    CONFIG_UPDATE,\r\n    OPEN_DEPOSIT_SUBMITED,\r\n    REFRESH_TOKEN,\r\n    REQUIRE_REFRESH_TOKEN,\r\n    TOKEN_INVALID,\r\n    TOKEN_EXPIRED,\r\n    REFRESH_IFRAME,\r\n    INIT_UTM_COOKIE,\r\n    TRACK_GA4,\r\n    OPEN_WITHDRAWAL_REQUEST_CONFIRMATION,\r\n    IFRAME_RESIZE,\r\n    OPEN_WITHDRAWAL_SUBMITTED,\r\n    RESULT_WITHDRAWAL_REQUEST_CONFIRMATION,\r\n    RESULT_WITHDRAWAL_SUBMITTED,\r\n    UPDATE_PROFILE\r\n}\r\n","import { ElementRef, inject, Injectable, NgZone } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Domain } from '../model/domain';\r\nimport { VoddsHttpService } from './vodds-http.service';\r\nimport { ApiRoute } from '../api-route.const';\r\nimport { PaymentType } from '../model/payment-type';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { Payload } from '../model/payload';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class IframeMessageService {\r\n    id: string = 'iframe';\r\n    private readonly messages$ = new Subject<IframeMessage>();\r\n\r\n    private readonly thirdPartyMessages$ = new Subject<MessageEvent>();\r\n    private domain: Domain;\r\n    private http = inject(VoddsHttpService);\r\n\r\n    private readonly listener = (event: MessageEvent) => {\r\n        if (event.data && event.data.target != \"metamask-inpage\") {\r\n            console.log(this.id, \"listener: \", event);\r\n        }\r\n        if (!this.domain.allowedOrigins.includes(event.origin)) {\r\n            if (this.isValidDomain(PaymentType.NA, event.origin)) {\r\n                this.ngZone.run(() => {\r\n                    console.log(this.id, \"Process message from 3th party\");\r\n                    this.thirdPartyMessages$.next(event);\r\n                });\r\n            }\r\n            return;\r\n        }\r\n        if (event.data && event.data.target == \"metamask-inpage\") {\r\n            return;\r\n        }\r\n        console.log(this.id, \"Process message\");\r\n        if (event.data && IframeMessageType[event.data.type]) {\r\n            this.ngZone.run(() => {\r\n                this.messages$.next(event.data);\r\n            });\r\n        }\r\n    };\r\n\r\n    constructor(private readonly ngZone: NgZone) {\r\n        this.domain = new Domain();\r\n        window.addEventListener('message', this.listener);\r\n    }\r\n    // Purpose only process the message come from allowed domain\r\n    getDomain(host: string) {\r\n        this.http.get((host ? host : '') + ApiRoute.GET_DOMAIN.url).subscribe({\r\n            next: (resp: any) => {\r\n                if (resp.data) {\r\n                    this.domain = resp.data;\r\n                }\r\n            },\r\n            error: err => { }\r\n        });\r\n    }\r\n\r\n    onMessages(): Observable<IframeMessage> {\r\n        return this.messages$.asObservable();\r\n    }\r\n    onThirdPartyMessages(): Observable<MessageEvent> {\r\n        return this.thirdPartyMessages$.asObservable();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        window.removeEventListener('message', this.listener);\r\n        this.messages$.complete();\r\n        this.thirdPartyMessages$.complete();\r\n    }\r\n\r\n    /**\r\n     * Skip for RAPYD - It will process when the dialog close\r\n     */\r\n    isValidDomain(paymentType: PaymentType, origin: string) {\r\n        if (paymentType == undefined || paymentType == null) return false;\r\n        switch(paymentType) {\r\n            case PaymentType.JETON:\r\n                return this.domain.jetonDomain == origin;\r\n            case PaymentType.ECOPAYZ:\r\n                return this.domain.ecopayzDomain == origin;\r\n            // case PaymentType.RAPYD:\r\n            //     return this.domain.rapydDomain == origin;\r\n            case PaymentType.NA:\r\n                return this.domain.jetonDomain == origin\r\n                    // || this.domain.rapydDomain == origin\r\n                    || this.domain.ecopayzDomain == origin;\r\n            default:\r\n                return false;\r\n        }\r\n\r\n    }\r\n    sendMessageToIframe(iframe: ElementRef<HTMLIFrameElement>, message: IframeMessage, iframeUrl: string = '*') {\r\n        if (iframe == undefined) return;\r\n        iframe.nativeElement.contentWindow?.postMessage(\r\n            message,\r\n            iframeUrl\r\n        );\r\n    }\r\n    \r\n    sendMessageToParrent<T extends Payload>(checkout: T, type: IframeMessageType, parrentUrl: string = '*') {\r\n        const message: IframeMessage = {\r\n            type: type,\r\n            payload: checkout\r\n        }\r\n        window.parent.postMessage(message, parrentUrl);\r\n    }\r\n}\r\n","export class CommonUtil {\r\n  static isMobileTemplate(): boolean {\r\n    const userAgent = navigator.userAgent || navigator.vendor || (window as any).opera;\r\n    return /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|Mobile/i.test(userAgent.toLowerCase());\r\n  }\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Payload {\r\n    requestId: number = 0;\r\n    errorMessage: string = '';\r\n    successMessage: string = '';\r\n    callback: any;\r\n    popup: any;\r\n    iframeUrl: string = '*';\r\n\r\n    setErrorMessage(errorMessage: string) {\r\n        this.errorMessage = errorMessage;\r\n        this.popup = undefined;\r\n    }\r\n\r\n    setCallback(callback: any) {\r\n        this.successMessage = 'success';\r\n        this.callback = callback;\r\n        this.popup = undefined;\r\n    }\r\n}\r\n","import { PaymentType } from \"./payment-type\";\r\n\r\nexport class Checkout {\r\n    requestId: number = 0;\r\n    paymentType: PaymentType = PaymentType.NA;\r\n    url: string  = '';\r\n    expiration: number = 300;\r\n    errorMessage: string = '';\r\n    successMessage: string = '';\r\n    callback: any;\r\n    popup: any;\r\n    iframeUrl: string = '*';\r\n\r\n    setErrorMessage(errorMessage: string) {\r\n        this.errorMessage = errorMessage;\r\n        this.popup = undefined;\r\n    }\r\n\r\n    setCallback(callback: any) {\r\n        this.successMessage = 'success';\r\n        this.callback = callback;\r\n        this.popup = undefined;\r\n    }\r\n}\r\n","import { Payload } from \"./payload\";\r\n\r\nexport class CancelWithdraw extends Payload {\r\n    data: any | undefined;\r\n}\r\n","import { Subject, takeUntil, timer } from \"rxjs\";\r\n\r\nexport class CountDownTime {\r\n\tisStart: boolean = false;\r\n    isStop: boolean = false;\r\n    nextRound: boolean = false;\r\n    initTime: number = 0;\r\n\ttimeLeft: number = 0;\r\n    isCancel: boolean = false;\r\n    private destroy$ = new Subject<void>();\r\n\r\n\tconstructor(initTime: number) {\r\n\t\tthis.initTime = initTime;\r\n\t}\r\n\r\n\tstart() {\r\n\t\tthis.isStart = true;\r\n\t\tthis.isStop = false;\r\n\t\tthis.timeLeft = this.initTime;\r\n\t}\r\n\r\n\tstop() {\r\n\t\tthis.isStart = false;\r\n\t\tthis.isStop = true;\r\n\t\tthis.timeLeft = 0;\r\n\t\tthis.nextRound = true;\r\n\t}\r\n\r\n\tdownTime() {\r\n\t\tthis.timeLeft = this.timeLeft - 1;\r\n\t}\r\n    cancel() {\r\n        this.isCancel = true;\r\n        this.stop();\r\n    }\r\n    oberserableTimer(isStop: any) {\r\n        timer(0, 1000)\r\n            .pipe(takeUntil(this.destroy$))\r\n            .subscribe(val => {\r\n                if (this.timeLeft === 0) {\r\n                    if (this.isStart) {\r\n                        this.stop();\r\n                    }\r\n                } else {\r\n                    this.downTime();\r\n                }\r\n                if (this.nextRound) {\r\n                    this.nextRound = false;\r\n                    if (isStop) {\r\n                        isStop.emit();\r\n                    }\r\n                }\r\n            });\r\n    }\r\n    onDestroy() {\r\n        this.destroy$.next();\r\n        this.destroy$.complete();\r\n    }\r\n}","export class IParam {\r\n    getMobileFlag(): boolean {\r\n        return /android|mobi/i.test(navigator.userAgent.toLowerCase());\r\n    }\r\n    \r\n    toJson(): string {\r\n        return JSON.stringify(this);\r\n    }\r\n\r\n    toFormUrlEncoded(): string {\r\n        return new URLSearchParams(Object.entries(this).map(([key, value]) => [key, String(value)])).toString();\r\n    }\r\n}\r\n","import { Checkout } from \"./checkout\";\r\n\r\nexport class Timer {\r\n    interval: number = 0;\r\n    maxTime: number = 120000; // 2 minute\r\n    currentTime: number = 0;\r\n    private popupTimer: ReturnType<typeof setInterval> | null = null;\r\n    private popup: Window | null = null;\r\n\r\n    constructor(interval: number, maxTime?: number) {\r\n        this.interval = interval;\r\n        if (maxTime) this.maxTime = maxTime;\r\n\t}\r\n    oberserableTimer(data: any, callback?: Function) {\r\n        this.popup = data.popup;\r\n        this.popupTimer = setInterval(() => {\r\n            if ((this.maxTime > 0 && this.currentTime >= this.maxTime) || !data) {\r\n                this.stopWatcher();\r\n                // TODO Hit expire time\r\n                return;\r\n            }\r\n            this.currentTime += this.interval;\r\n            if (data instanceof Checkout && (!data.popup || (data.popup && data.popup.closed))) { // Handle detect close popup by the user\r\n                console.log(\"Close popup\");\r\n                this.stopWatcher();\r\n                if (callback) {\r\n                    data.setErrorMessage(\"Payment popup is closed\");\r\n                    callback(data);\r\n                }\r\n            }\r\n        }, this.interval);\r\n    }\r\n    stopWatcher() {\r\n        if (this.popupTimer) {\r\n            clearInterval(this.popupTimer);\r\n            this.popupTimer = null;\r\n        }\r\n    }\r\n}","import { Payload } from \"./payload\";\r\n\r\nexport class Profile extends Payload {\r\n    firstName: string | undefined;\r\n    lastName: string | undefined;\r\n    dateOfBirth: string  | undefined;\r\n    fm: string | undefined;\r\n    fd: string  | undefined;\r\n    defaultFm: number | undefined;\r\n    documentStatus: string | undefined;\r\n\r\n    update(firstName: string, lastName: string, dateOfBirth: string, fm: string, fd: string, defaultFm: number) {\r\n        this.firstName = firstName;\r\n        this.lastName = lastName;\r\n        this.dateOfBirth = dateOfBirth;\r\n        this.fm = fm;\r\n        this.fd = fd;\r\n        this.defaultFm = defaultFm;\r\n    }\r\n    updateInWithdraw(fm: string, fd: string, defaultFm: number, documentStatus: string) {\r\n        this.fm = fm;\r\n        this.fd = fd;\r\n        this.defaultFm = defaultFm;\r\n        this.documentStatus = documentStatus;\r\n    }\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Pipe({\r\n  name: 'vTransloco',\r\n  standalone: true\r\n})\r\nexport class TranslocoPipe implements PipeTransform {\r\n    private transloco = inject(TranslocoService);\r\n\r\n    transform(key: string): Observable<string> {\r\n        return this.transloco.translate(key, {}, 'epp-lib');\r\n        // return this.transloco.selectTranslate(key, {}, 'epp-lib');\r\n    }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'vodds-loader',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './vodds-loader.component.html',\r\n  styleUrl: './vodds-loader.component.scss'\r\n})\r\nexport class VoddsLoaderComponent {\r\n  @Input() message: string = '';\r\n  @Input() showAjaxLoader: boolean = false;\r\n}\r\n","@if (showAjaxLoader) {\r\n  <div class=\"load-indicator\">\r\n    <img src=\"https://cdn.voddos.net/vodds/static/ajax-loader16.gif\">\r\n    {{message != undefined ? message : ''}}\r\n  </div>\r\n}\r\n","import { Component, Inject, Input } from '@angular/core';\r\nimport { VoddsLoaderComponent } from '../vodds-loader/vodds-loader.component';\r\nimport { Checkout } from '../../model/checkout';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { provideTranslocoScope, TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { CommonUtil } from '../../service/common-util';\r\nimport { NgStyle } from '@angular/common';\r\n\r\ndeclare var RapydCheckoutToolkit: any;\r\n\r\n@Component({\r\n  selector: 'v-rapyd',\r\n  standalone: true,\r\n  imports: [ NgStyle, VoddsLoaderComponent, MatDialogModule, MatProgressSpinnerModule, TranslocoModule ],\r\n  templateUrl: './rapyd.component.html',\r\n  styleUrl: './rapyd.component.scss'\r\n})\r\nexport class RapydComponent {\r\n    @Input() checkout: Checkout | undefined;\r\n\tisOpen: boolean = false;\r\n    checkoutToolKit: any = undefined;\r\n    visaMasterTimeout: number = 300;\r\n    visaMasterCheckoutId: string = '';\r\n    visaMasterTimer: any; // interval\r\n    displayTimer: string = \"00:00\";\r\n    isShow: boolean = false;\r\n    isLoading: boolean = true;\r\n    errorMessage: string = \"\";\r\n    defaultExpirationSec = 300; // 5mins\r\n    checkoutFailureMessage: string = '';\r\n\r\n    constructor(\r\n        public dialogRef: MatDialogRef<any>,\r\n        @Inject(MAT_DIALOG_DATA) public data: any,\r\n        // private translocoService: TranslocoService\r\n    ) {\r\n        this.visaMasterTimeout = data.expiration ?? data.expiration;\r\n        this.visaMasterCheckoutId = data.checkoutUrl;\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.stopTimer();\r\n        window.removeEventListener('onLoading', this.handleLoading);\r\n        window.removeEventListener('onCheckoutPaymentSuccess', this.handleCheckoutPaymentSuccess);\r\n        window.removeEventListener('onCheckoutPaymentFailure', this.handleCheckoutPaymentFailure);\r\n    }\r\n    ngAfterViewInit(): void {\r\n        if (this.checkout) {\r\n            this.visaMasterTimeout = this.checkout.expiration;\r\n            this.visaMasterCheckoutId = this.checkout.url;\r\n        }\r\n\r\n        // this.translocoService.selectTranslate('mobile_payment_form_title').subscribe(buttonText => {\r\n        //     console.log('Async translations loaded:', buttonText);\r\n        this.checkoutToolKit = this.isMobile() ? this.createCheckoutToolKitOnMobile(\"DEPOSIT\") : this.createCheckoutToolKitOnDesktop(\"DEPOSIT\");\r\n            this.displayCheckout();\r\n            window.addEventListener('onLoading', this.handleLoading);\r\n            window.addEventListener('onCheckoutPaymentSuccess', this.handleCheckoutPaymentSuccess);\r\n            window.addEventListener('onCheckoutPaymentFailure', this.handleCheckoutPaymentFailure);\r\n        // });\r\n    }\r\n\r\n    createCheckoutToolKitOnDesktop(buttonText: string) {\r\n        return new RapydCheckoutToolkit({\r\n            pay_button_text: buttonText,\r\n            id: this.visaMasterCheckoutId,\r\n            wait_on_payment_redirect: true,\r\n\r\n            style: {\r\n                cardFields: {\r\n                    title: {\r\n                        color: '#80807F'\r\n                    },\r\n                    saveForFutureLabel:{\r\n                        color: '#80807F'\r\n                    }\r\n                },\r\n                input: {\r\n                    base: {\r\n                        fontWeight: \"400\",\r\n                        borderRadius: \"5px\",\r\n                    }\r\n                },\r\n                 orderDetails: {\r\n                    title: {\r\n                        color: '#80807F'\r\n                    },\r\n                    totalLabel: {\r\n                        color: '#80807F'\r\n                    },\r\n                    totalValue: {\r\n                        color: '#80807F'\r\n                    }\r\n                },\r\n                submit: {\r\n                    base: {\r\n                        backgroundColor: \"#F48215\",\r\n                        color: \"#FFFFFF\",\r\n                        fontWeight: \"900\",\r\n                        borderRadius: \"5px\",\r\n                        border: \"none\",\r\n                        boxShadow: \"0px 0px 20px 0px #28303A33\",\r\n                        height: \"35px\",\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    createCheckoutToolKitOnMobile(buttonText: string) {\r\n        return new RapydCheckoutToolkit({\r\n            pay_button_text: buttonText,\r\n            id: this.visaMasterCheckoutId,\r\n            wait_on_payment_redirect: true,\r\n            style: {\r\n                input: {\r\n                    base: {\r\n                        fontWeight: \"400\",\r\n                        borderRadius: \"5px\",\r\n                        fontSize: \"12px\"\r\n                    },\r\n                    placeholder: {\r\n                        fontSize: \"12px !important\",\r\n                        fontWeight: \"700\",\r\n                        fontFamily: \"Manrope\",\r\n                        color: '#8C8C8C',\r\n                    },\r\n                },\r\n                cardFields: {\r\n                    title: {\r\n                        color: '#8C8C8C'\r\n                    },\r\n                    saveForFutureLabel: {\r\n                        color: '#8C8C8C',\r\n                    }\r\n                },\r\n                orderDetails: {\r\n                    title: {\r\n                        color: '#8C8C8C',\r\n                    },\r\n                    totalLabel: {\r\n                        color: '#8C8C8C',\r\n                    },\r\n                    totalValue: {\r\n                        color: '#8C8C8C',\r\n                    }\r\n                },\r\n                submit: {\r\n                    base: {\r\n                        backgroundColor: \"#28303A\",\r\n                        color: \"#FFFFFF\",\r\n                        fontWeight: \"900 !important\",\r\n                        borderRadius: \"12px\",\r\n                        boxShadow: \"0 0 8.57px #ff6b0066 !important\",\r\n                        height: \"40px\",\r\n                        width: \"100%\",\r\n                        fontSize: \"12px !important\",\r\n                        border: \"none\"\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    handleLoading = (event: any) => {\r\n        if (!event.detail.loading && this.isLoading) {\r\n            this.isShow = true;\r\n            this.isLoading = false;\r\n            this.startTimer();\r\n        }\r\n    }\r\n\r\n    handleCheckoutPaymentSuccess = (event: any) => {\r\n        this.closeDialog(false);\r\n    }\r\n\r\n    handleCheckoutPaymentFailure = (event: any) => {\r\n        this.stopTimer();\r\n        this.isShow = false;\r\n        this.checkoutFailureMessage = event.detail.message;\r\n    }\r\n\r\n    closeDialog(isCloseCheckout = true) {\r\n        this.stopTimer();\r\n        if(this.checkoutToolKit && isCloseCheckout) {\r\n            try {\r\n                this.checkoutToolKit.closeCheckout();\r\n            } catch(err) {\r\n                console.error(\"Error when closing checkout\", err);\r\n            }\r\n        }\r\n        this.checkoutToolKit = undefined;\r\n        this.isShow = false;\r\n        this.dialogRef.close(this.checkoutFailureMessage);\r\n\t};\r\n\r\n    startTimer() {\r\n        if(this.visaMasterTimer) this.stopTimer();\r\n        this.visaMasterTimer = setInterval(() => {\r\n            if(this.visaMasterTimeout <= 0) {\r\n                this.closeDialog();\r\n                return;\r\n            }\r\n            this.visaMasterTimeout--;\r\n            this.displayTimer = `${this.pad(Math.floor(this.visaMasterTimeout / 60))}:${this.pad(this.visaMasterTimeout % 60)}`;\r\n        }, 1000);\r\n    }\r\n\r\n    stopTimer() {\r\n        clearInterval(this.visaMasterTimer);\r\n    }\r\n\r\n    pad(number: number) {\r\n        return `${number < 10 ? '0' : ''}${number}`;\r\n    }\r\n\r\n    displayCheckout() {\r\n        if(document.getElementById(\"rapyd-checkout\")) {\r\n            this.checkoutToolKit.displayCheckout();\r\n        } else {\r\n            setTimeout(() => {\r\n                this.displayCheckout();\r\n            }, 10);\r\n        }\r\n    }\r\n\r\n    isMobile() {\r\n        return CommonUtil.isMobileTemplate();\r\n    }\r\n}\r\n","@if(isMobile()) {\r\n    <div class=\"v-dialog mobile\">\r\n        <div class=\"v-flex-center-between header text-black-cs\">\r\n            <div class=\"v-flex-center-none\">\r\n                <span class=\"ml-8\">{{ 'mobile_payment_form_title' | transloco }}</span>\r\n            </div>\r\n            <div class=\"v-flex-center-between mr-8\">\r\n                <div (click)=\"closeDialog()\">\r\n                    <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                            d=\"M11.0121 12.3959L16.6455 18.0293C16.8333 18.2107 17.0849 18.3111 17.346 18.3088C17.6071 18.3065 17.8569 18.2018 18.0415 18.0172C18.2261 17.8325 18.3309 17.5828 18.3331 17.3217C18.3354 17.0606 18.235 16.809 18.0536 16.6212L12.4202 10.9878L18.0536 5.35431C18.235 5.16649 18.3354 4.91494 18.3331 4.65384C18.3309 4.39273 18.2261 4.14297 18.0415 3.95833C17.8569 3.77369 17.6071 3.66896 17.346 3.66669C17.0849 3.66443 16.8333 3.7648 16.6455 3.9462L11.0121 9.57964L5.37863 3.9462C5.18997 3.76928 4.93988 3.67271 4.68128 3.67691C4.42268 3.68111 4.17585 3.78575 3.99304 3.9687C3.81022 4.15165 3.70575 4.39854 3.70173 4.65715C3.69772 4.91575 3.79447 5.16577 3.97152 5.35431L9.60396 10.9878L3.97052 16.6212C3.87541 16.7131 3.79954 16.8229 3.74735 16.9444C3.69516 17.0659 3.66769 17.1966 3.66654 17.3288C3.66539 17.4611 3.69059 17.5922 3.74066 17.7146C3.79073 17.837 3.86468 17.9481 3.95818 18.0416C4.05168 18.1352 4.16287 18.2091 4.28525 18.2592C4.40764 18.3092 4.53877 18.3344 4.67099 18.3333C4.80322 18.3321 4.93389 18.3047 5.05539 18.2525C5.17688 18.2003 5.28677 18.1244 5.37863 18.0293L11.0121 12.3959Z\" />\r\n                    </svg>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        @if (isLoading) {\r\n        <div class=\"v-spinner\">\r\n            <mat-spinner diameter=\"50\" strokeWidth=\"4\"></mat-spinner>\r\n        </div>\r\n        }\r\n        <div class=\"v-content\" id=\"deposit-id\">\r\n            @if (!isLoading && !isShow) {\r\n            <div class=\"visa-card-message\">\r\n                {{ 'visaCardErrorMessage' | transloco }} <br> {{ 'visaCardErrorMessage2' | transloco }}\r\n            </div>\r\n            }\r\n            <div class=\"vodds-checkout-deposit\">\r\n                @if(!isLoading && isShow) {\r\n                <div class=\"vodds-checkout-expiration\">\r\n                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <path\r\n                            d=\"M7 2.56067C9.76142 2.56067 12 4.79925 12 7.56067C12 10.3221 9.76142 12.5607 7 12.5607C4.23858 12.5607 2 10.3221 2 7.56067C2 4.79925 4.23858 2.56067 7 2.56067ZM6.25 4.06067V7.93567L6.5498 8.16028L8.5498 9.66028L9.4502 8.46106L7.75 7.18567V4.06067H6.25Z\"\r\n                            fill=\"#8C8C8C\" />\r\n                        <line x1=\"10.0303\" y1=\"0.530339\" x2=\"12.8588\" y2=\"3.35877\" stroke=\"#8C8C8C\" stroke-width=\"1.5\" />\r\n                        <line y1=\"-0.75\" x2=\"4\" y2=\"-0.75\" transform=\"matrix(-0.707107 0.707107 0.707107 0.707107 4.82843 1.06067)\"\r\n                            stroke=\"#8C8C8C\" stroke-width=\"1.5\" />\r\n                    </svg>\r\n                    <span>{{ 'visaCardTimeout' | transloco }} <span class=\"countdown-timer\">{{displayTimer}}</span></span>\r\n                </div>\r\n                }\r\n                <div id=\"rapyd-checkout\" class=\"iframe-wrapper\"></div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n} @else {\r\n    <div id=\"visa-card\">\r\n        <div class=\"top\">\r\n            <h2>{{ 'payment_form_title' | transloco }}</h2>\r\n            <svg class=\"clsbtn my-account\" (click)=\"closeDialog()\" width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\"\r\n                xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path\r\n                    d=\"M9.89214 0L5.5 4.39214L1.10786 0L0 1.10786L4.39214 5.5L0 9.89214L1.10786 11L5.5 6.60786L9.89214 11L11 9.89214L6.60786 5.5L11 1.10786L9.89214 0Z\"\r\n                    fill=\"white\" />\r\n            </svg>\r\n        </div>\r\n        <div class=\"flex-center\">\r\n            <vodds-loader [showAjaxLoader]=\"isLoading\"></vodds-loader>\r\n        </div>\r\n        @if (!isLoading && !isShow) {\r\n        <div class=\"visa-card-message\">\r\n            {{ 'visaCardErrorMessage' | transloco }} <br> {{ 'visaCardErrorMessage2' | transloco }}\r\n        </div>\r\n        }\r\n        <div class=\"visa-card-form\" [style]=\"{display: isShow ? 'flex' : 'none'}\">\r\n            <div class=\"timer\">\r\n                <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <path\r\n                        d=\"M7 2.56067C9.76142 2.56067 12 4.79925 12 7.56067C12 10.3221 9.76142 12.5607 7 12.5607C4.23858 12.5607 2 10.3221 2 7.56067C2 4.79925 4.23858 2.56067 7 2.56067ZM6.25 4.06067V7.93567L6.5498 8.16028L8.5498 9.66028L9.4502 8.46106L7.75 7.18567V4.06067H6.25Z\"\r\n                        fill=\"#B5B5B5\" />\r\n                    <line x1=\"10.0303\" y1=\"0.530339\" x2=\"12.8588\" y2=\"3.35877\" stroke=\"#B5B5B5\" stroke-width=\"1.5\" />\r\n                    <line y1=\"-0.75\" x2=\"4\" y2=\"-0.75\"\r\n                        transform=\"matrix(-0.707107 0.707107 0.707107 0.707107 4.82861 1.06067)\" stroke=\"#B5B5B5\"\r\n                        stroke-width=\"1.5\" />\r\n                </svg>\r\n                <span class=\"label\">&nbsp;{{ 'visaCardTimeout' | transloco }}&nbsp;</span> <span class=\"display-time\">\r\n                    {{displayTimer}}</span>\r\n            </div>\r\n            <div id=\"rapyd-checkout\"></div>\r\n        </div>\r\n    </div>\r\n}","import { Component, inject, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { EppLibTranslateService } from '../../translation/epp-lib-translate.service';\r\n\r\n@Component({\r\n  selector: 'epp-cancel-withdraw',\r\n  standalone: true,\r\n  templateUrl: './cancel-withdraw.component.html',\r\n  styleUrl: './cancel-withdraw.component.scss'\r\n})\r\nexport class CancelWithdrawDialog {\r\n    title: string = '';\r\n    protected ts = inject(EppLibTranslateService);\r\n\r\n    constructor(\r\n        public dialogRef: MatDialogRef<CancelWithdrawDialog>,\r\n        @Inject(MAT_DIALOG_DATA) public data: string) {\r\n        this.title = \"Are you sure you want to cancel withdraw request \" + data + \"?\";\r\n        console.log(\"test translation in the library\", this.ts.get('payment_form_title'));\r\n    }\r\n    \r\n    onClose(isCancel: boolean): void {\r\n        this.dialogRef.close(isCancel);\r\n    }\r\n}","<div class=\"v-dialog\">\r\n    <div class=\"title\">{{title}}</div>\r\n    <div class=\"button-group v-flex-center-between history\">\r\n        <div class=\"left\" (click)=\"onClose(true)\">\r\n            <span>Yes</span>\r\n        </div>\r\n        <div class=\"right\" (click)=\"onClose(false)\">\r\n            <span>No</span>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA, MatSnackBarModule, MatSnackBarRef } from '@angular/material/snack-bar';\r\n// import { SvgIconComponent } from '../svg-icon/svg-icon.component';\r\n\r\n/* How to use\r\n  1. import MatSnackbar\r\n  2. inject matSnackBar in constructor\r\n  3. call open snackbar like below code\r\n\r\n  this.snackBar.openFromComponent(VoddsSnackBarComponent, {\r\n    data: {\r\n      message: msg,\r\n      allowClose: true,\r\n    },\r\n    duration: 2000,\r\n    panelClass: [isErr === true ? 'v-error' : 'v-success']\r\n  });\r\n*/\r\n\r\n@Component({\r\n    selector: 'vodds-snack-bar',\r\n    standalone: true,\r\n    imports: [MatSnackBarModule],\r\n    templateUrl: './vodds-snack-bar.component.html',\r\n    styleUrls: ['./vodds-snack-bar.component.scss']\r\n})\r\nexport class VoddsSnackBarComponent implements OnInit {\r\n    data = inject(MAT_SNACK_BAR_DATA);\r\n    snackBarRef = inject(MatSnackBarRef<VoddsSnackBarComponent>);\r\n\r\n    constructor() {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n}\r\n","<div class=\"snack-bar\">\r\n  <span class=\"message\">{{data.message}}</span>\r\n  <!-- @if(data.allowClose) {\r\n    <svg-icon [fileName]=\"'menu-close.svg'\" customColorClass=\"close-icon\" [width]=\"20\" [height]=\"20\" (click)=\"snackBarRef.dismiss()\"></svg-icon>\r\n  } -->\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { VoddsSnackBarComponent } from './vodds-snack-bar.component';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class VoddsSnackBarService {\r\n\r\n  constructor(\r\n    private snackBar: MatSnackBar,\r\n  ) { }\r\n\r\n  openSnackbar(snackBarConfig: VoddsSnackbarConfig) {\r\n    this.snackBar.openFromComponent(VoddsSnackBarComponent, {\r\n      data: {\r\n        message: snackBarConfig.message,\r\n        allowClose: snackBarConfig.allowClose\r\n      },\r\n      duration: snackBarConfig.duration,\r\n      panelClass: ['v-custom-snackbar', ...snackBarConfig.panelClass],\r\n      verticalPosition: 'top',\r\n      horizontalPosition: 'center'\r\n    });\r\n  }\r\n    open(isError: boolean, message: string) {\r\n        this.openSnackbar(new VoddsSnackbarConfig({\r\n        message: message,\r\n            panelClass: ['v-text-center', isError ? 'v-error' : 'v-success'],\r\n        }));\r\n    }\r\n}\r\n\r\nexport class VoddsSnackbarConfig {\r\n  message: string = \"\";\r\n  allowClose: boolean = false;\r\n  duration: number = 2000;// default 2second\r\n  panelClass: string[] = [];\r\n\r\n  constructor(config?: Partial<VoddsSnackbarConfig>) {\r\n    Object.assign(this, config);\r\n  }\r\n}\r\n","import { ElementRef, inject } from '@angular/core';\r\nimport { IframeMessageService } from '../service/iframe-message.service';\r\nimport { IframeMessageType } from '../model/iframe-message-type';\r\nimport { Checkout } from '../model/checkout';\r\nimport { IframeMessage } from '../model/iframe-message';\r\nimport { Timer } from '../model/timer';\r\nimport { PaymentType } from '../model/payment-type';\r\nimport { RapydComponent } from './rapyd/rapyd.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subscription, timer } from 'rxjs';\r\nimport { CancelWithdraw } from '../model/cancel-withdraw';\r\nimport { CancelWithdrawDialog } from './cancel-withdraw/cancel-withdraw.component';\r\nimport { Payload } from '../model/payload';\r\nimport { VoddsSnackbarConfig, VoddsSnackBarService } from './vodds-snack-bar/vodds-snack-bar.service';\r\n\r\nexport class Payment {\r\n    cache: Map<number, Checkout> = new Map();\r\n    iframe: ElementRef<HTMLIFrameElement> | undefined;//Set from the component\r\n    timer: Timer = new Timer(500); // 0.5s\r\n    result: Checkout | undefined;\r\n    tokenExpire: number | undefined;\r\n    token: string | undefined;\r\n    private iframeMessageService = inject(IframeMessageService);\r\n    private snackBar = inject(VoddsSnackBarService);\r\n    private rapydScriptLoaded = false;\r\n    private timerSubscription?: Subscription;\r\n    constructor(public dialog: MatDialog) {\r\n        /**\r\n         * Listen OPEN_PAYMENT_FORM message to open 3th party page\r\n         */\r\n        this.iframeMessageService.onMessages().subscribe(message => {\r\n            console.log('Received from iframe:', message);\r\n            if (!message || message.type == undefined) return;\r\n            switch (message.type) {\r\n                case IframeMessageType.OPEN_PAYMENT_FORM:\r\n                    const checkout = Object.assign(new Checkout(), message.payload);\r\n                    if (!checkout || this.cache.get(checkout.requestId)) {\r\n                        return;\r\n                    }\r\n                    // if (this.cache.size > 0) {\r\n                    //     this.cache.clear();\r\n                    //     //TODO clear the current popup\r\n                    // }\r\n                    switch (checkout.paymentType) {\r\n                        case PaymentType.JETON:\r\n                        case PaymentType.ECOPAYZ:\r\n                            this.openWindow(checkout);\r\n                            break;\r\n                        case PaymentType.RAPYD:\r\n                            this.openVisaCheckout(checkout);\r\n                            break;\r\n                        default:\r\n                    }\r\n                    break;\r\n                case IframeMessageType.THIRD_PARTY_CALLBACK:\r\n                    const checkout1 = new Checkout();\r\n                    checkout1.setCallback(message.payload);\r\n                    this.timer.stopWatcher();\r\n                    this.sendMessageToIframe(checkout1);\r\n                    break;\r\n                case IframeMessageType.PAYMENT_CALLBACK:\r\n                    const checkout2 = new Checkout();\r\n                    if (message.payload) {\r\n                        checkout2.setErrorMessage(message.payload as string);\r\n                    } else {\r\n                        checkout2.setCallback(message.payload);\r\n                    }\r\n                    this.timer.stopWatcher();\r\n                    this.sendMessageToIframe(checkout2);\r\n                    break;\r\n                case IframeMessageType.CANCEL_WITHDRAW:\r\n                    const payload = Object.assign(new CancelWithdraw(), message.payload);\r\n                    if (!payload || this.cache.get(payload.requestId)) {\r\n                        return;\r\n                    }\r\n                    this.cache.set(payload.requestId, new Checkout());\r\n                    this.dialog.open(CancelWithdrawDialog, {\r\n                        data: payload.data.id,\r\n                        panelClass: 'vodds-dialog',\r\n                        position: { bottom: '0px' }\r\n                    }).afterClosed().subscribe(isCancel => {\r\n                        payload.callback = isCancel;\r\n                        this.sendMessageToIframe(payload);\r\n                    })\r\n                    break;\r\n                case IframeMessageType.NOTIFICATION:\r\n                    const notity = Object.assign(new Payload(), message.payload);\r\n                    if (!notity.errorMessage && !notity.successMessage) return;\r\n                    const classes = [notity.successMessage ? 'v-success' : 'v-error', undefined].filter((c): c is string => !!c);\r\n\r\n                    this.snackBar.openSnackbar(new VoddsSnackbarConfig({\r\n                        message: notity.errorMessage ? notity.errorMessage : notity.successMessage,\r\n                        panelClass: classes\r\n                    }))\r\n                    break;\r\n                case IframeMessageType.OPEN_DEPOSIT:\r\n                case IframeMessageType.OPEN_TRANSACTION:\r\n                case IframeMessageType.OPEN_WITHDRAW:\r\n                case IframeMessageType.IN_PROGRESS:\r\n                case IframeMessageType.REFRESH_TOKEN:\r\n                case IframeMessageType.REFRESH_IFRAME:\r\n                case IframeMessageType.REQUIRE_REFRESH_TOKEN:\r\n                case IframeMessageType.TRACK_GA4:\r\n                case IframeMessageType.IFRAME_RESIZE:\r\n                case IframeMessageType.OPEN_WITHDRAWAL_REQUEST_CONFIRMATION:\r\n                case IframeMessageType.OPEN_WITHDRAWAL_SUBMITTED:\r\n                case IframeMessageType.RESULT_WITHDRAWAL_REQUEST_CONFIRMATION:\r\n                case IframeMessageType.RESULT_WITHDRAWAL_SUBMITTED:\r\n                case IframeMessageType.OPEN_DEPOSIT_SUBMITED:\r\n                case IframeMessageType.UPDATE_PROFILE:\r\n                    this.processMessage(message);\r\n                    break;\r\n            }\r\n        });\r\n    }\r\n    getDomain(host: string) {\r\n        if (!host) return;\r\n        this.iframeMessageService.getDomain(host);\r\n    }\r\n    processMessage(message: IframeMessage) {\r\n        //TODO\r\n    }\r\n\r\n    /**\r\n     * Open 3th party page on the popup windown or new tab\r\n     */\r\n    openWindow(checkout: Checkout) {\r\n        this.cache.set(checkout.requestId, checkout);\r\n        console.log(\"Open windown: \", this.cache);\r\n        const width = 470;\r\n        const height = 550;\r\n        var left = Math.max(0, (screen.width - width) / 2),\r\n        top = Math.max(0, (screen.height - height) / 2);\r\n        // var popup = window.open(url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n        let popup = window.open(checkout.url, \"VOdds\", 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top + ',status=0,location=0,menubar=0,toolbar=0');\r\n        if (!popup) {\r\n            checkout.errorMessage = 'Your setting prevents popups. Please change your setting to allow it.';\r\n            this.sendMessageToIframe(checkout);\r\n            this.cache.delete(checkout.requestId);\r\n            return;\r\n        }\r\n        checkout.popup = popup;\r\n        popup.focus();\r\n        this.onThirdPartyMessage(checkout);\r\n        this.timer.oberserableTimer(checkout, () => this.sendMessageToIframe(checkout));\r\n    }\r\n    async openVisaCheckout(checkout: Checkout) {\r\n        try {\r\n            await this.load();\r\n            this.dialog.open(RapydComponent, {\r\n                data: {\r\n                    checkoutUrl: checkout.url,\r\n                    expiration: checkout.expiration\r\n                },\r\n                width: '500px',\r\n                maxWidth: '90vw'\r\n            }).afterClosed().subscribe(checkoutFailureMessage => {\r\n                checkout.errorMessage = checkoutFailureMessage;\r\n                this.sendMessageToIframe(checkout);\r\n            })\r\n        } catch (error) {\r\n            console.error(error);\r\n        }\r\n    }\r\n    load(): Promise<void> {\r\n        if (this.rapydScriptLoaded) {\r\n            return Promise.resolve();\r\n        }\r\n\r\n        return new Promise((resolve, reject) => {\r\n            const script = document.createElement('script');\r\n\r\n            script.src = 'https://sandboxcheckouttoolkit.rapyd.net';\r\n            script.async = true;\r\n\r\n            script.onload = () => {\r\n                this.rapydScriptLoaded = true;\r\n                resolve();\r\n            };\r\n\r\n            script.onerror = () => {\r\n                reject(new Error('Failed to load Rapyd Checkout Toolkit'));\r\n            };\r\n\r\n            document.head.appendChild(script);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Listen message or action from 3th party on the popup\r\n     * Skip for RAPYD - It will process when the dialog close\r\n     */\r\n    onThirdPartyMessage(checkout: Checkout) {\r\n        this.iframeMessageService.onThirdPartyMessages().subscribe(event => {\r\n            if (this.iframeMessageService.isValidDomain(checkout.paymentType, event.origin)) {\r\n                switch (checkout.paymentType) {\r\n                    case PaymentType.NA:\r\n                        break;\r\n                    case PaymentType.JETON:\r\n                    case PaymentType.ECOPAYZ:\r\n\r\n                }\r\n                console.log('Received from 3th party:', event.data);\r\n                checkout.setCallback(event.data);\r\n                this.timer.stopWatcher();\r\n                this.sendMessageToIframe(checkout);\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * send the message from the parent to the iframe\r\n     */\r\n    sendMessageToIframe<T extends Payload>(checkout: T) {\r\n        if (this.iframe == undefined) return;\r\n        console.log(\"send the message from the parent into the iframe: \", checkout);\r\n        let message: IframeMessage = {\r\n            type: IframeMessageType.PAYMENT_CALLBACK,\r\n            payload: checkout\r\n        }\r\n        this.iframeMessageService.sendMessageToIframe(this.iframe, message, checkout.iframeUrl);\r\n        this.cache.delete(checkout.requestId);\r\n    }\r\n\r\n    removePaymentIframe() {\r\n        //TODO\r\n        this.iframe = undefined;\r\n        this.token = undefined;\r\n        this.tokenExpire = undefined;\r\n        this.stopRefreshedTokenSchedule();\r\n    }\r\n\r\n    setConfig(tokenExpireAt: number, token: string){\r\n      this.token = token;\r\n      this.tokenExpire = tokenExpireAt\r\n      this.startRefreshedTokenSchedule(this.tokenExpire);\r\n    }\r\n\r\n    stopRefreshedTokenSchedule(): void {\r\n      if (this.timerSubscription) {\r\n        this.timerSubscription.unsubscribe();\r\n        this.timerSubscription = undefined;\r\n      }\r\n    }\r\n\r\n\r\n    startRefreshedTokenSchedule(timeExpire: number): void {\r\n      this.stopRefreshedTokenSchedule();\r\n\r\n      const delayTime = timeExpire - 60;\r\n      const safeDelay = Math.max(0, delayTime);\r\n\r\n      this.timerSubscription = timer(safeDelay * 1000).subscribe(() => {\r\n        this.processMessage({type: IframeMessageType.REQUIRE_REFRESH_TOKEN} as IframeMessage);\r\n        this.stopRefreshedTokenSchedule();\r\n      });\r\n    }\r\n\r\n    sendMessageParentToIframe(message: IframeMessage, target: string){\r\n      if(this.iframe){\r\n        this.iframeMessageService.sendMessageToIframe(this.iframe, message, target);\r\n      }\r\n    }\r\n}\r\n","/*\r\n * Public API Surface of epp-lib\r\n */\r\nexport * from './lib/translation';\r\n\r\nexport * from './lib/service';\r\nexport * from './lib/model';\r\nexport * from './lib/pipe';\r\nexport * from './lib/component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}