{"version":3,"file":"ClearentHelpers.js","sourceRoot":"","sources":["../../TS/ClearentHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { IJSModule } from \"./IJSModule.js\";\r\nimport { LoadScriptsHelpers } from \"./LoadScriptsHelpers.js\";\r\n\r\ndeclare global {\r\n    interface Window {\r\n        ClearentEntryModeChange(mode: any): void;\r\n        ClearentCardReadStart(): void;\r\n        ClearentCardReadComplete(): void;\r\n        ClearentTokenSuccess(responseRaw: any, responseJSON: any): void;\r\n        ClearentTokenError(responseRaw: any, responseJSON: any): void;\r\n        ClearentValidation(messages: any): void;\r\n    }\r\n}\r\n\r\nexport class ClearentHelpers implements IJSModule {\r\n    //IJSService\r\n    public serviceName: string;\r\n\r\n    private componentInstanceObj = null;\r\n\r\n    private formContainerId: string;\r\n\r\n    public initialize(): boolean {\r\n        this.serviceName = 'ClearentHelpers';\r\n\r\n        window['ClearentHelpers'] = this;\r\n\r\n        return true;\r\n    }\r\n\r\n    public passComponentInstance(obj: object) {\r\n        this.componentInstanceObj = obj;\r\n    }\r\n\r\n    public initClearent(formContainerId: string, clearentSdkBaseUrl: string, publicKey: string, cardPlaceholder: string, expDatePlaceholder: string, cvcPlaceholder: string, cardMasked: boolean, expDateMasked: boolean, cvcMasked: boolean, ccFormCustomStyles: string, clearFormOnSuccess: boolean) {\r\n        this.formContainerId = formContainerId;\r\n\r\n        const baseUrl = clearentSdkBaseUrl;\r\n        const pk = publicKey;\r\n\r\n        let clearentInitData = {\r\n            paymentFormId: formContainerId,\r\n            baseUrl: baseUrl,\r\n            pk: pk,\r\n            cardPlaceholder: cardPlaceholder,\r\n            expDatePlaceholder: expDatePlaceholder,\r\n            cvcPlaceholder: cvcPlaceholder,\r\n\r\n            cardMasked: cardMasked,\r\n            expDateMasked: expDateMasked,\r\n            cvcMasked: cvcMasked,\r\n\r\n            showValidationMessages: false,\r\n\r\n            styles: ccFormCustomStyles,\r\n\r\n            clearFormOnSuccess: clearFormOnSuccess\r\n        };\r\n\r\n        this.loadClearentSdk(clearentSdkBaseUrl, clearentInitData);\r\n\r\n        window.ClearentEntryModeChange = (mode: any) => { window.postMessage({ name: 'onClearentEntryModeChange_' + this.formContainerId, data: { mode: mode } }, '*'); }\r\n\r\n        window.ClearentCardReadStart = () => { window.postMessage({ name: 'onClearentCardReadStart_' + this.formContainerId }, '*'); }\r\n\r\n        window.ClearentCardReadComplete = () => { window.postMessage({ name: 'onClearentCardReadComplete_' + this.formContainerId }, '*'); }\r\n\r\n        window.ClearentTokenSuccess = (responseRaw, responseJSON) => { window.postMessage({ name: 'onClearentTokenSuccess_' + this.formContainerId, data: { responseRaw: responseRaw, responseJSON: responseJSON } }, '*'); }\r\n\r\n        window.ClearentTokenError = (responseRaw, responseJSON) => { window.postMessage({ name: 'onClearentTokenError_' + this.formContainerId, data: { responseRaw: responseRaw, responseJSON: responseJSON } }, '*'); }\r\n\r\n        window.ClearentValidation = (messages) => { window.postMessage({ name: 'onClearentValidation_' + this.formContainerId, data: { messages: messages } }, '*'); }\r\n\r\n        this.unsubscribeFromClearentIframeMessages();\r\n\r\n        window.addEventListener(\"message\", (e) => this.receiveIframeWindowMessage(e, formContainerId), false);\r\n    }\r\n\r\n    private receiveIframeWindowMessage(event: any, formContainerId: string) {\r\n        if (event.origin !== location.origin || !event.data) return;\r\n\r\n        var message = event.data;\r\n\r\n        if (!message || message.name == undefined || message.name == null || message.name == '')\r\n            return;\r\n\r\n        switch (message.name) {\r\n            case `onClearentEntryModeChange_${formContainerId}`:\r\n                if (message.data) {\r\n                    this.componentInstanceObj.invokeMethodAsync('OnClearentEntryModeChange', message.data.mode);\r\n                }\r\n                break;\r\n\r\n            case `onClearentCardReadStart_${formContainerId}`:\r\n                this.componentInstanceObj.invokeMethodAsync('OnClearentCardReadStart');\r\n                break;\r\n\r\n            case `onClearentCardReadComplete_${formContainerId}`:\r\n                this.componentInstanceObj.invokeMethodAsync('OnClearentCardReadComplete');\r\n                break;\r\n\r\n            case `onClearentTokenSuccess_${formContainerId}`:\r\n                if (message.data) {\r\n                    let res = new ClearentResponseDataModel();\r\n                    res.RawData = message.data.responseRaw;\r\n                    res.JsonData = message.data.responseJSON;\r\n                    res.TokenData = this.getTokenData(message.data.responseJSON);\r\n\r\n                    this.componentInstanceObj.invokeMethodAsync('OnClearentTokenSuccess', res);\r\n                }\r\n                break;\r\n\r\n            case `onClearentTokenError_${formContainerId}`:\r\n                if (message.data) {\r\n                    let res = new ClearentResponseDataModel();\r\n                    res.RawData = message.data.responseRaw;\r\n                    res.JsonData = message.data.responseJSON;\r\n\r\n                    this.componentInstanceObj.invokeMethodAsync('OnClearentTokenError', res);\r\n                }\r\n                break;\r\n\r\n            case `onClearentValidation_${formContainerId}`:\r\n                if (message.data) {\r\n                    this.componentInstanceObj.invokeMethodAsync('OnClearentValidation', message.data.messages);\r\n                }\r\n                break;\r\n\r\n            default:\r\n                break;\r\n        }\r\n    }\r\n\r\n    public unsubscribeFromClearentIframeMessages() {\r\n        window.removeEventListener(\"message\", (e) => this.receiveIframeWindowMessage(e, this.formContainerId), false);\r\n    }\r\n\r\n    private getTokenData(responseJson: any): ClarentTokenDataModel {\r\n        if (!responseJson || responseJson['status'] != 'success') return null;\r\n\r\n        let tokenResponse = responseJson.payload['mobile-jwt'];\r\n\r\n        let res = new ClarentTokenDataModel();\r\n\r\n        res.Type = tokenResponse['card-type'];\r\n        res.LastFourDigits = tokenResponse['last-four'];\r\n        res.TransactionToken = tokenResponse['jwt'];\r\n        //res.Info = `${this.creditCardHelper.getCCTypeByName(res.Type)} *${res.LastFourDigits}`;\r\n        res.ExpDate = tokenResponse['exp-date'];\r\n\r\n        return res;\r\n    }\r\n\r\n    public getPaymentToken() {\r\n        window['ClearentSDK'].getPaymentToken();\r\n    }\r\n\r\n    private loadClearentSdk(clearentSdkBaseUrl: string, clearentInitData: any) {\r\n        if (window['ClearentSDK'] && window['ClearentSDK'].init) {\r\n            window['ClearentSDK'].reset();\r\n            window['ClearentSDK'].init(clearentInitData);\r\n\r\n            return;\r\n        }\r\n\r\n        let loadScriptsHelpers = window['LoadScriptsHelpers'] as LoadScriptsHelpers;\r\n        loadScriptsHelpers.loadScript(\r\n            'clearent-sdk',\r\n            `${clearentSdkBaseUrl}/js-sdk/js/clearent-host.js`,\r\n            () => window['ClearentSDK'].init(clearentInitData));\r\n    }\r\n}\r\n\r\nexport class ClearentResponseDataModel {\r\n    RawData: any;\r\n    JsonData: any;\r\n\r\n    TokenData: ClarentTokenDataModel;\r\n}\r\n\r\nexport class ClarentTokenDataModel {\r\n    Type: string;\r\n    ExpDate: string;\r\n    LastFourDigits: string;\r\n    Token: string;\r\n    TransactionToken: string;\r\n    Info: string;\r\n}"]}