@flittpayments/js-sdk 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/checkout.js +20 -13
- package/dist/esm/checkout.js +19 -12
- package/dist/umd/checkout.js +1 -1
- package/dist/umd/checkout.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/checkout.js
CHANGED
|
@@ -551,7 +551,7 @@ function Deferred() {
|
|
|
551
551
|
const promise = {
|
|
552
552
|
done(callback) {
|
|
553
553
|
if (isFunction(callback)) {
|
|
554
|
-
if (status ===
|
|
554
|
+
if (status === RESOLVED) {
|
|
555
555
|
callback.apply(resultContext, resultArgs);
|
|
556
556
|
}
|
|
557
557
|
resolveCallbacks.push(callback);
|
|
@@ -1642,7 +1642,8 @@ const PaymentRequestApi = PaymentRequestInterface.extend({
|
|
|
1642
1642
|
},
|
|
1643
1643
|
setPending(state) {
|
|
1644
1644
|
this.pendingState = state;
|
|
1645
|
-
|
|
1645
|
+
clearTimeout(this.pendingTimeoutEvent);
|
|
1646
|
+
this.pendingTimeoutEvent = setTimeout(() => {
|
|
1646
1647
|
this.trigger('pending', state);
|
|
1647
1648
|
}, 100);
|
|
1648
1649
|
},
|
|
@@ -1656,14 +1657,15 @@ const PaymentRequestApi = PaymentRequestInterface.extend({
|
|
|
1656
1657
|
return this;
|
|
1657
1658
|
},
|
|
1658
1659
|
before() {
|
|
1659
|
-
if (this.
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1660
|
+
if (this.beforeDeferred) {
|
|
1661
|
+
return this.beforeDeferred;
|
|
1662
|
+
}
|
|
1663
|
+
this.beforeDeferred = Deferred();
|
|
1664
|
+
this.beforeDeferred.always(this.proxy(function () {
|
|
1665
|
+
this.beforeDeferred = null;
|
|
1664
1666
|
}));
|
|
1665
|
-
this.beforeCallback(
|
|
1666
|
-
return
|
|
1667
|
+
this.beforeCallback(this.beforeDeferred);
|
|
1668
|
+
return this.beforeDeferred;
|
|
1667
1669
|
},
|
|
1668
1670
|
pay(method) {
|
|
1669
1671
|
if (this.isPending()) return;
|
|
@@ -1813,9 +1815,7 @@ const PaymentElement = Module.extend({
|
|
|
1813
1815
|
this.element.appendChild(this.iframe);
|
|
1814
1816
|
this.element.appendChild(this.button);
|
|
1815
1817
|
},
|
|
1816
|
-
errorConnector() {
|
|
1817
|
-
log('frame load error');
|
|
1818
|
-
},
|
|
1818
|
+
errorConnector() {},
|
|
1819
1819
|
onloadConnector() {
|
|
1820
1820
|
this.connector = new Connector({
|
|
1821
1821
|
target: this.iframe.contentWindow,
|
|
@@ -1950,6 +1950,12 @@ const PaymentButton = Module.extend({
|
|
|
1950
1950
|
this.initApi(params.api);
|
|
1951
1951
|
this.initPaymentRequestApi();
|
|
1952
1952
|
this.initElements();
|
|
1953
|
+
this.initData();
|
|
1954
|
+
},
|
|
1955
|
+
initData() {
|
|
1956
|
+
const data = this.params.data;
|
|
1957
|
+
if (!data.merchant_id) return;
|
|
1958
|
+
if ((!data.currency || !data.amount) && !data.token) return;
|
|
1953
1959
|
this.update();
|
|
1954
1960
|
},
|
|
1955
1961
|
initApi(api) {
|
|
@@ -2017,7 +2023,8 @@ const PaymentButton = Module.extend({
|
|
|
2017
2023
|
const parseConfig = config => {
|
|
2018
2024
|
const data = {
|
|
2019
2025
|
payment_system: config.payment_system,
|
|
2020
|
-
provider: {}
|
|
2026
|
+
provider: {},
|
|
2027
|
+
allowed: []
|
|
2021
2028
|
};
|
|
2022
2029
|
const methods = config.methods || [];
|
|
2023
2030
|
const details = config.details || {};
|
package/dist/esm/checkout.js
CHANGED
|
@@ -642,7 +642,7 @@ function Deferred() {
|
|
|
642
642
|
const promise = {
|
|
643
643
|
done(callback) {
|
|
644
644
|
if (isFunction(callback)) {
|
|
645
|
-
if (status ===
|
|
645
|
+
if (status === RESOLVED) {
|
|
646
646
|
callback.apply(resultContext, resultArgs);
|
|
647
647
|
}
|
|
648
648
|
resolveCallbacks.push(callback);
|
|
@@ -1803,7 +1803,8 @@ const PaymentRequestApi = PaymentRequestInterface.extend({
|
|
|
1803
1803
|
},
|
|
1804
1804
|
setPending(state) {
|
|
1805
1805
|
this.pendingState = state;
|
|
1806
|
-
|
|
1806
|
+
clearTimeout(this.pendingTimeoutEvent);
|
|
1807
|
+
this.pendingTimeoutEvent = setTimeout(() => {
|
|
1807
1808
|
this.trigger('pending', state);
|
|
1808
1809
|
}, 100);
|
|
1809
1810
|
},
|
|
@@ -1817,16 +1818,17 @@ const PaymentRequestApi = PaymentRequestInterface.extend({
|
|
|
1817
1818
|
return this
|
|
1818
1819
|
},
|
|
1819
1820
|
before() {
|
|
1820
|
-
if (this.
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1821
|
+
if (this.beforeDeferred) {
|
|
1822
|
+
return this.beforeDeferred
|
|
1823
|
+
}
|
|
1824
|
+
this.beforeDeferred = Deferred();
|
|
1825
|
+
this.beforeDeferred.always(
|
|
1824
1826
|
this.proxy(function () {
|
|
1825
|
-
this.
|
|
1827
|
+
this.beforeDeferred = null;
|
|
1826
1828
|
})
|
|
1827
1829
|
);
|
|
1828
|
-
this.beforeCallback(
|
|
1829
|
-
return
|
|
1830
|
+
this.beforeCallback(this.beforeDeferred);
|
|
1831
|
+
return this.beforeDeferred
|
|
1830
1832
|
},
|
|
1831
1833
|
pay(method) {
|
|
1832
1834
|
if (this.isPending()) return
|
|
@@ -1978,9 +1980,7 @@ const PaymentElement = Module.extend({
|
|
|
1978
1980
|
this.element.appendChild(this.iframe);
|
|
1979
1981
|
this.element.appendChild(this.button);
|
|
1980
1982
|
},
|
|
1981
|
-
errorConnector() {
|
|
1982
|
-
log('frame load error');
|
|
1983
|
-
},
|
|
1983
|
+
errorConnector() {},
|
|
1984
1984
|
onloadConnector() {
|
|
1985
1985
|
this.connector = new Connector({
|
|
1986
1986
|
target: this.iframe.contentWindow,
|
|
@@ -2112,6 +2112,12 @@ const PaymentButton = Module.extend({
|
|
|
2112
2112
|
this.initApi(params.api);
|
|
2113
2113
|
this.initPaymentRequestApi();
|
|
2114
2114
|
this.initElements();
|
|
2115
|
+
this.initData();
|
|
2116
|
+
},
|
|
2117
|
+
initData() {
|
|
2118
|
+
const data = this.params.data;
|
|
2119
|
+
if (!data.merchant_id) return
|
|
2120
|
+
if ((!data.currency || !data.amount) && !data.token) return
|
|
2115
2121
|
this.update();
|
|
2116
2122
|
},
|
|
2117
2123
|
initApi(api) {
|
|
@@ -2183,6 +2189,7 @@ const parseConfig = (config) => {
|
|
|
2183
2189
|
const data = {
|
|
2184
2190
|
payment_system: config.payment_system,
|
|
2185
2191
|
provider: {},
|
|
2192
|
+
allowed: [],
|
|
2186
2193
|
};
|
|
2187
2194
|
const methods = config.methods || [];
|
|
2188
2195
|
const details = config.details || {};
|
package/dist/umd/checkout.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).$checkout=e()}(this,(function(){"use strict";var t={},e={},i=function(e,i){if(!t[e])throw Error(["module is undefined",e].join(" "));return new t[e](i||{})};function n(t,n){return e[t]?e[t]:e[t]=i(t,n)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}n.get=function(t,e){return i(t,e)},n.add=function(e,i){return function(e,i){if(t[e])throw Error(["module already added",e].join(" "));t[e]=i}(e,i),this};var s,o,a=/^\d+$/,h=/([^\[\]]+)|(\[\])/g,u=/([^?#]*)(#.*)?$/,l=/%20/g,c=/\[\]$/,d=/\s([a-zA-Z]+)/,p=function(t){return decodeURIComponent(t.replace(/\+/g," "))},f=function(t){var e=[];return P(t,(function(t){e=e.concat(b(t)?f(t):t)})),e},m=function(t,e,i){b(e)?P(e,(function(n,r){c.test(t)?i(t,n):m(t+"["+(y(e)?r:"")+"]",n,i)})):y(e)?P(e,(function(e,n){m(t+"["+n+"]",e,i)})):i(t,e)},g=function(t){return{}.toString.call(t).match(d)[1].toLowerCase()},y=function(t){return!!t&&"object"===r(t)&&t.constructor===Object},v=function(t){return"function"===g(t)},b=function(t){return"array"===g(t)},x=function(t){return t&&1===t.nodeType},w=function(t){return[].slice.call(t)},E=function(t,e){return t&&t.hasOwnProperty(e)},P=function(t,e,i){for(var n in t)E(t,n)&&e.call(i||null,t[n],n)},_=function(t){for(var e in t)E(t,e)&&(0===t[e].length?(b(t)&&t.splice(e,1),y(t)&&delete t[e]):y(t[e])&&_(t[e]));return t},C=function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return P(i,(function(e){null!==e&&P(e,(function(e,i){y(e)?t[i]=C(t[i]||{},e):t[i]=e}))})),t},k=function(){for(var t=0,e="";t++<36;)e+=51*t&52?(15^t?8^Math.random()*(20^t?16:4):4).toString(16):"-";return e},S=(s=window,E(s,"PaymentRequest")&&v(s.PaymentRequest)&&(o=s.PaymentRequest),function(t,e,i){var n=null;if((e=e||{}).id=k(),i=i||{},o)try{n=new o(t,e,i)}catch(t){n=null}return n}),A=Object.freeze({__proto__:null,addAttr:function(t,e){if(!1===x(t))return!1;y(e)&&P(e,(function(e,i){t.setAttribute(i,e)}))},addClass:function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n=e.shift();if(!1!==x(n)){var r=n.className.trim().split(/\s+/);f(e.map((function(t){return t.trim().split(/\s+/)}))).forEach((function(t){t&&!~r.indexOf(t)&&r.push(t)})),n.className=r.join(" ").trim()}},cleanObject:_,createElement:function(t){return document.createElement(t)},cssUnit:function(t,e){return String(t||0).concat(e||"").concat(" !important")},deparam:function(t){var e={};return"?"===t.charAt(0)&&(t=t.slice(1)),t&&u.test(t)&&P(t.split("&"),(function(t){var i=t.split("="),n=p(i.shift()),r=p(i.join("=")),s=e;if(n){for(var o=0,u=(i=n.match(h)).length-1;o<u;o++)s[i[o]]||(s[i[o]]=a.test(i[o+1])||"[]"===i[o+1]?[]:{}),s=s[i[o]];var l=i.pop();"[]"===l?s.push(r):s[l]=r}})),e},extend:C,forEach:P,getPath:function(t){var e=t.split("."),i=e.shift(),n=null;return E(window,i)&&(n=window[i],P(e,(function(t){n=E(n,t)?n[t]:null}))),n},getPaymentRequest:S,getStyle:function(t,e,i){return((i=window.getComputedStyle)?i(t):t.currentStyle)[e.replace(/-(\w)/gi,(function(t,e){return e.toUpperCase()}))]},getType:g,hasProp:E,isArguments:function(t){return"arguments"===g(t)},isArray:b,isDate:function(t){return"date"===g(t)},isElement:x,isError:function(t){return"error"===g(t)},isFunction:v,isNumber:function(t){return"number"===g(t)},isObject:function(t){return"object"===g(t)},isPlainObject:y,isRegexp:function(t){return"regexp"===g(t)},isString:function(t){return"string"===g(t)},jsonParse:function(t,e){try{return JSON.parse(t)}catch(t){return e}},map:function(t,e,i){var n,r,s=[];for(n in t)E(t,n)&&void 0!==(r=e.call(i||null,t[n],n))&&(s[n]=r);return s},param:function(t){var e=[];return P(t,(function(t,i){m(i,t,(function(t,i){i=null==i?"":i,e.push([encodeURIComponent(t),encodeURIComponent(i)].join("="))}))})),e.join("&").replace(l,"+")},querySelector:function(t,e){return(e||document).querySelector(t)},querySelectorAll:function(t,e){return w((e||document).querySelectorAll(t))},removeAttr:function(t,e){if(!1===x(t))return!1;y(e)&&P(e,(function(e){t.removeAttribute(e)}))},removeClass:function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n=e.shift();if(!1!==x(n)){var r=n.className.trim().split(/\s+/);f(e.map((function(t){return t.trim().split(/\s+/)}))).forEach((function(t){if(t){var e=r.indexOf(t);~e&&r.splice(e,1)}})),n.className=r.join(" ").trim()}},removeElement:function(t){t.parentNode.removeChild(t)},stringFormat:function(t,e,i){return(t||"").replace(i||/{(.+?)}/g,(function(t,i){return e[i]||t}))},toArray:w,uuid:k}),q="https://pay.flitt.com",j={gateway:"/latest/checkout-v2/index.html",element:"/latest/checkout-v2/button/element.html"},R="http://secure-redirect.cloudipsp.com/submit/",O="https://pay.google.com/gp/p/js/pay.js",M={apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:[{type:"CARD",parameters:{allowedAuthMethods:["PAN_ONLY","CRYPTOGRAM_3DS"],allowedCardNetworks:["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"]}}]},L=["ar","bg","ca","zh","hr","cs","da","nl","en","et","fi","fr","de","el","id","it","ja","ko","ms","no","pl","pt","ru","sr","sk","sl","es","sv","th","tr","uk"],T={total:{label:"Total",amount:{currency:"USD",value:"0.00"}}},D={width:"1px !important",height:"1px !important",left:"1px !important",bottom:"1px !important",position:"fixed !important",border:"0px !important"},W={border:"none !important",margin:"0 !important",padding:"0 !important",display:"block !important",width:"1px !important","min-width":"100% !important",background:"transparent !important",position:"relative !important",opacity:"0 !important",overflow:"hidden !important",height:"100% !important",outline:"none !important","z-index":"1 !important"},z={tabindex:"-1",scrolling:"no",frameborder:0,allowtransparency:!0,allowpaymentrequest:!0},F={"z-index":"2 !important",position:"absolute !important",border:"none !important",background:"transparent !important",left:"0 !important",top:"0 !important",cursor:"pointer !important",outline:"none !important",width:"100% !important",height:"100% !important"},U={role:"button","aria-pressed":"false"},B={border:"0 !important",margin:"0 !important",padding:"0 !important",display:"block !important",background:"transparent !important","user-select":"none !important",overflow:"hidden !important",position:"relative !important",opacity:"1 !important",height:"0 !important",width:"100% !important",outline:"none !important"},N="dark",I={dark:"dark",light:"light",black:"dark",white:"light"},G={ar:"",bg:"",ca:"",zh:"",hr:"",cs:"",da:"",nl:"",en:"Pay with",et:"",es:"Comprar con",el:"",fi:"",fr:"Acheter avec",de:"Zahlen über",id:"",it:"Acquista con",ja:"",ko:"",ms:"",no:"",pl:"Zapłać przez",pt:"",ru:"Оплатить через",sr:"",sk:"Zaplatiť cez",sl:"",sv:"",th:"",tr:"",uk:"Оплатити через"},V=Object.freeze({__proto__:null,ApiEndpoint:j,ApiFrameCss:D,ApiOrigin:q,ButtonColorMap:I,ButtonContainerCss:B,ButtonCoverAttrs:U,ButtonCoverCss:F,ButtonDefaultColor:N,ButtonFrameAttrs:z,ButtonFrameCss:W,ButtonLabelMap:G,GoogleBaseRequest:M,GooglePayApi:O,GooglePayLanguages:L,PaymentRequestDetails:T,ProxyUrl:R});function J(){var t=[],e=[],i=[],n=0,r=void 0,s=null,o=null,a=function(t,e,i){var n=[].concat(i),a=function(t,e){s=e?Array.from(t):[t]},h=function(){var t=n.shift();t&&(void 0!==(o=t.apply(r,s))?o&&o.then?o.then((function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];a(e,!0),h()})):(a(o),h()):h())};r=t,s=e,h()},h={done:function(e){return v(e)&&(2===n&&e.apply(r,s),t.push(e)),this},fail:function(t){return v(t)&&(2===n&&t.apply(r,s),e.push(t)),this},progress:function(t){return v(t)&&(3===n&&t.apply(r,s),i.push(t)),this},always:function(t){return this.done(t).fail(t)},then:function(t,e,i){return v(t)&&this.done(t),v(e)&&this.fail(e),v(i)&&this.progress(e),this},promise:function(t){return null===t?h:(P(h,(function(e,i){t[i]=e})),t)},state:function(){return n},isPending:function(){return 0===n},isRejected:function(){return 2===n},isResolved:function(){return 1===n},resetState:function(){return n=0,this},resolveWith:function(e,i){return 0===n&&(n=1,a(e,i,t)),this},rejectWith:function(t,i){return 0===n&&(n=2,a(t,i,e)),this},notifyWith:function(t,e){return 0===n&&(n=3,a(t,e,i),n=0),this},resolve:function(){return this.resolveWith(this,Array.from(arguments))},reject:function(){return this.rejectWith(this,Array.from(arguments))},notify:function(){return this.notifyWith(this,Array.from(arguments))}};return h}var $=!1,Z=/xyz/.test(function(){return"xyz"}.toString())?/\b_super\b/:/.*/;function H(){}function Y(t,e,i){return function(){var n,r=this._super;return this._super=t[e],n=i.apply(this,arguments),this._super=r,n}}H.prototype._super=function(){},H.prototype.instance=function(t){return new this.constructor(t)},H.prototype.proxy=function(t){return function(t,e){return function(){return e.apply(t,[this].concat(Array.prototype.slice.call(arguments)))}}(this,t="string"==typeof t?this[t]:t)},H.extend=function t(e){function i(){!$&&this&&this.init.apply(this,arguments)}return i.prototype=function(t,e){var i,n,r=t.prototype;for(i in $=!0,n=new t,$=!1,e)e.hasOwnProperty(i)&&("function"==typeof r[i]&&"function"==typeof e[i]&&Z.test(e[i])?n[i]=Y(r,i,e[i]):n[i]=e[i]);return n}(this,e),i.prototype.constructor=i,i.extend=t,i};var X=H.extend({init:function(){this.events={},this.empty=[]},on:function(t,e){return(this.events[t]=this.events[t]||[]).push(e),this},off:function(t,e){t||(this.events={});for(var i=this.events[t]||this.empty,n=i.length=e?i.length:0;n--;)e===i[n]&&i.splice(n,1);return this},trigger:function(t){for(var e,i=this.events[t]||this.empty,n=i.length>0?i.slice(0,i.length):i,r=0;e=n[r++];)e.apply(e,this.empty.slice.call(arguments,1));return this}}),K=H.extend({utils:A,getListener:function(){return this._listener_||(this._listener_=new X),this._listener_},destroy:function(){this.off()},on:function(t,e){return this.getListener().on(t,e),this},off:function(t,e){return this.getListener().off(t,e),this},proxy:function(t){return this._proxy_cache_||(this._proxy_cache_={}),this.utils.isString(t)?(this._proxy_cache_[t]||(this._proxy_cache_[t]=this._super(t)),this._proxy_cache_[t]):this._super(t)},trigger:function(){return this.getListener().trigger.apply(this.getListener(),arguments),this},each:function(t,e){this.utils.forEach(t,this.proxy(e))},addAttr:function(t,e){if(!this.utils.isElement(t))return!1;this.utils.forEach(e,(function(e,i){t.setAttribute(i,e)}))},addCss:function(t,e){if(!this.utils.isElement(t))return!1;this.utils.forEach(e,(function(e,i){this.addCssProperty(t,i,e)}),this)},addCssProperty:function(t,e,i){var n,r=t.style.cssText.match(new RegExp("(?:[;\\s]|^)("+e.replace("-","\\-")+"\\s*:(.*?)(;|$))"));r?(n=r.index+r[0].indexOf(r[1]),t.style.cssText=t.style.cssText.substring(0,n)+e+": "+i+";"+t.style.cssText.substring(n+r[1].length)):t.style.cssText+=" "+e+": "+i+";"},addEvent:function(t,e,i){if(!t||!e||!i)return!1;i=this.proxy(i),t.addEventListener?t.addEventListener(e,i):t.attachEvent&&t.attachEvent("on"+e,i)},removeEvent:function(t,e,i){if(!t||!e||!i)return!1;i=this.proxy(i),t.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent&&t.detachEvent("on"+e,i)},prepareForm:function(t,e,i,n){var r=this.utils.createElement("form");return this.addAttr(r,{action:t,target:i||"_self",method:n||"POST"}),this.addCss(r,{display:"none"}),this.utils.forEach(e,(function(t,e,i){(i=this.utils.createElement("input")).type="hidden",i.name=e,i.value=t,r.appendChild(i)}),this),r}}),Q=K.extend({ns:"crossDomain",origin:"*",uniqueId:1,signature:null,init:function(t){this.setTarget(t.target),this.setOrigin(t.origin),this.create()},create:function(){this.addEvent(window,"message","router")},setOrigin:function(t){this.origin=t||"*"},setTarget:function(t){return this.target=t,this},getUID:function(){return++this.uniqueId},destroy:function(){this.removeEvent(window,"message","router"),this._super()},router:function(t,e,i){if(this.target!==e.source)return!1;try{i=JSON.parse(e.data)}catch(t){}i&&i.action&&i.data&&this.trigger(i.action,i.data)},send:function(t,e,i,n){if(this.target){i=JSON.stringify({action:t,data:e}),n={targetOrigin:this.origin,delegate:"payment"};try{this.target.postMessage(i,n)}catch(t){this.target.postMessage(i,this.origin,[])}}}}),tt=Object.freeze({__proto__:null,acs:function(t){return"\n".concat('\n<style>\n .flitt-modal {\n box-sizing: border-box;\n margin: 100px auto;\n max-width: 680px;\n background-color: #fff;\n border-radius: 5px;\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n }\n\n @media (max-width: 850px) {\n .flitt-modal {\n margin: 50px auto;\n }\n }\n\n @media (max-width: 695px) {\n .flitt-modal {\n max-width: 100%;\n margin: 5px;\n }\n }\n\n .flitt-modal-wrapper {\n box-sizing: border-box;\n overflow: auto;\n position: fixed;\n z-index: 99999;\n left: 0;\n bottom: 0;\n top: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.2);\n }\n\n .flitt-modal-header {\n box-sizing: border-box;\n background-color: #fafafa;\n height: 50px;\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n }\n\n .flitt-modal-close {\n box-sizing: border-box;\n float: right;\n overflow: hidden;\n height: 50px;\n text-decoration: none;\n border-top-right-radius: 5px;\n color: #949494;\n }\n\n .flitt-modal-close:hover, .flitt-modal-close:focus, .flitt-modal-close:active {\n text-decoration: none;\n color: #646464;\n }\n\n .flitt-modal-close:before {\n content: "×";\n font-size: 50px;\n line-height: 50px;\n padding: 0 10px;\n }\n\n .flitt-modal-title {\n box-sizing: border-box;\n border-top-left-radius: 5px;\n line-height: 20px;\n height: 50px;\n padding: 5px 15px;\n font-size: 12px;\n display: table-cell;\n vertical-align: middle;\n }\n .flitt-modal-content {\n box-sizing: border-box;\n border-bottom-left-radius: 5px;\n min-height: 650px;\n }\n .flitt-modal-iframe {\n overflow-x: hidden;\n border: 0;\n display: block;\n width: 100%;\n height: 750px;\n }\n</style>\n','\n<div class="flitt-modal-wrapper">\n <div class="flitt-modal">\n <div class="flitt-modal-header">\n <a href="javascript:void(0)" class="flitt-modal-close"></a>\n <div class="flitt-modal-title">\n ').concat(t.messages.modalHeader,"\n <a href='javascript:void(0)'>").concat(t.messages.modalLinkLabel,'</a>\n </div>\n </div>\n <div class="flitt-modal-content">\n <iframe src="about:blank" class="flitt-modal-iframe" frameborder="0" allowtransparency="true"></iframe>\n </div>\n </div>\n</div>\n')}});var et=H.extend({init:function(t){this.view=tt[t]||function(t){return function(e){return["template",t,"not found"].join(" ")}}(t)},render:function(t){return this.view(t)}}),it=K.extend({init:function(t){this.checkout=t.checkout,this.model=t.model||{},this.messages=t.checkout.params.messages||{},this.template=new et("acs"),this.body=this.utils.querySelector("body"),this.initModal(),this.initConnector()},initModal:function(){this.name=["modal-iframe",this.getRandomNumber()].join("-"),this.modal=this.utils.createElement("div"),this.modal.innerHTML=this.template.render({model:this.model,messages:this.messages}),this.iframe=this.find(".flitt-modal-iframe"),this.addAttr(this.iframe,{name:this.name,id:this.name}),this.model.send_data?(this.form=this.prepareForm(this.model.url,this.model.send_data,this.name),this.modal.appendChild(this.form)):this.iframe.src=this.model.url,this.addEvent(this.find(".flitt-modal-close"),"click","closeModal"),this.addEvent(this.find(".flitt-modal-title a"),"click","submitForm"),this.initScrollbar(),this.body.appendChild(this.modal),this.form&&this.form.submit()},measureScrollbar:function(){var t=document.createElement("div");return t.className="modal-scrollbar-measure",this.body.appendChild(t),this.utils.removeElement(t),t.offsetWidth-t.clientWidth},checkScrollbar:function(){var t,e=window.innerWidth;e||(e=(t=document.documentElement.getBoundingClientRect()).right-Math.abs(t.left)),this.bodyIsOverflowing=document.body.clientWidth<e,this.scrollbarWidth=this.measureScrollbar()},initScrollbar:function(){this.checkScrollbar(),this.bodyPad=parseInt(this.utils.getStyle(this.body,"padding-right")||0,10),this.originalBodyPad=document.body.style.paddingRight||"",this.originalOverflow=document.body.style.overflow||"",this.bodyIsOverflowing&&this.addCss(this.body,{paddingRight:[this.bodyPad+this.scrollbarWidth,"px"].join(""),overflow:"hidden"})},resetScrollbar:function(){this.addCss(this.body,{paddingRight:this.originalBodyPad?[this.originalBodyPad,"px"].join(""):"",overflow:this.originalOverflow})},getRandomNumber:function(){return Math.round(1e9*Math.random())},find:function(t){return this.utils.querySelector(t,this.modal)},closeModal:function(t,e){e.preventDefault(),this.trigger("close",this.data),this.removeModal()},submitForm:function(t,e){e.preventDefault(),this.trigger("submit",this.data),this.addAttr(this.form,{target:"_blank"}),this.form.submit()},removeModal:function(){this.destroy()},destroy:function(){this.utils.removeElement(this.modal),this.resetScrollbar(),this.connector.destroy(),this._super()},initConnector:function(){this.connector=new Q({target:this.iframe.contentWindow}),this.connector.on("response",this.proxy("onResponse"))},onResponse:function(t,e){this.sendResponse(e),this.removeModal()},sendResponse:function(t){this.checkout.connector.send("request",{uid:t.uid,action:"api.checkout.proxy",method:"send",params:t})}}),nt=K.extend({init:function(t){this.data=t||{},this.create()},create:function(){},eachProps:function(t){var e=t[1]?t[0]:null,i=t[1]?t[1]:t[0];return{list:e?this.alt(e,[]):this.data,callback:i}},each:function(){var t=this.eachProps(arguments);for(var e in t.list)t.list.hasOwnProperty(e)&&t.callback(this.instance(t.list[e]),t.list[e],e)},filter:function(){var t=this.eachProps(arguments);for(var e in t.list)if(t.list.hasOwnProperty(e)){var i=this.instance(t.list[e]);if(t.callback(i,t.list[e],e))return t.list[e]}},find:function(){var t=this.eachProps(arguments);for(var e in t.list)if(t.list.hasOwnProperty(e)){var i=this.instance(t.list[e]);if(t.callback(i,t.list[e],e))return i}return!1},alt:function(t,e){return void 0===(t=this.attr(t))?e:t},attr:function(t,e){for(var i=0,n=this.data,r=(t||"").split("."),s=r.pop(),o=arguments.length;i<r.length;i++)if(n&&n.hasOwnProperty(r[i]))n=n[r[i]];else{if(2!==o)break;n=n[r[i]]={}}return 1===o?n?n[s]:void 0:(2===o&&(n[s]=e),this)},stringify:function(){return JSON.stringify(this.serialize())},serialize:function(){return this.data}}),rt=nt.extend({stringFormat:function(t){var e=this;return(t||"").replace(/{(.+?)}/g,(function(t,i){return e.attr(["order.order_data",i].join("."))||t}))},setConnector:function(t){return this.connector=t,this},setUID:function(t){return this.uid=t,this},getUID:function(){return this.uid},formDataProxy:function(t,e,i,n){location.assign([R,JSON.stringify({url:t,params:e,target:i,method:n})].join("#"))},formDataSubmit:function(t,e,i,n){if(t.match(/^http:/))return this.formDataProxy(t,e,i,n);var r=this.stringFormat(t),s=this.prepareForm(r,e,i,n);this.utils.querySelector("body").appendChild(s),s.submit(),s.parentNode.removeChild(s)},inProgress:function(){return this.attr("order.in_progress")},readyToSubmit:function(){return this.attr("order.ready_to_submit")},waitForResponse:function(){return this.attr("order.pending")},needVerifyCode:function(){return this.attr("order.need_verify_code")},redirectUrl:function(){return!!this.attr("url")&&(this.redirectToUrl(this.attr("url")),!0)},redirectToUrl:function(t){location.assign(t)},submitToMerchant:function(){var t=this.attr("order.ready_to_submit"),e=this.attr("model.url")||this.attr("order.response_url"),i=this.attr("order.method"),n=this.attr("order.action"),r=this.attr("model.send_data")||this.attr("order.order_data");if(t&&e&&r)return"redirect"===n||!0===r.get_without_parameters?this.redirectToUrl(e):this.formDataSubmit(e,r,"_self",i),!0},submitForm:function(){var t=this.attr("method"),e=this.attr("url"),i=this.attr("send_data");return!(!e||!i)&&(this.formDataSubmit(e,i,"_self",t),!0)},sendResponse:function(){var t=this.attr("action");return"submit"===t?this.submitForm():"redirect"===t&&this.redirectUrl()},prepare3dsData:function(){var t={},e=this.attr("submit3ds");return e["3ds"]&&(t.token=this.attr("token"),t.uid=this.getUID(),t.frame=!0,e.send_data.TermUrl&&(e.send_data.TermUrl=[e.send_data.TermUrl,this.utils.param(t)].join("#!!"))),e},waitOn3dsDecline:function(){var t=this.alt("submit3ds.checkout_data",{js_wait_on_3ds_decline:!1,js_wait_on_3ds_decline_duration:0});return t.js_wait_on_3ds_decline?t.js_wait_on_3ds_decline_duration:0},submit3dsForm:function(){this.attr("submit3ds.checkout_data")&&this.connector.trigger("modal",this.prepare3dsData())},supportedMethod:function(t){var e=this.find("methods",(function(e){return e.alt("supportedMethods","").match(t)}));e?this.attr("methods",[e.serialize()]):this.attr("methods",[])}}),st=K.extend({defaults:{origin:q,endpoint:j,messages:{modalHeader:"Now you will be redirected to your bank 3DSecure. If you are not redirected please refer",modalLinkLabel:"link"}},init:function(t){this.initParams(t)},url:function(t,e){return[this.params.origin,this.params.endpoint[t]||"/",e||""].join("")},extendParams:function(t){return this.utils.extend(this.params,t),this},initParams:function(t){this.params=this.utils.extend({},this.defaults),this.extendParams(t),this.setOrigin(this.params.origin),this.loaded=!1,this.created=!1},setOrigin:function(t){return this.utils.isString(t)&&(this.params.origin=t),this},scope:function(t){t=this.proxy(t),!0===this.createFrame().loaded?t():this.on("checkout.api",t)},request:function(t,e,i){var n=J(),r={uid:this.connector.getUID(),action:t,method:e,params:i||{}};return this.connector.send("request",r),this.connector.on(r.uid,this.proxy((function(t,e,i,s){var o=new rt(e);o.setUID(r.uid),o.setConnector(this.connector),s="resolveWith",o.attr("submit3ds")&&(s="notifyWith"),o.attr("error")&&(s="rejectWith"),n[s](this,[o])}))),n},loadFrame:function(t){return this.iframe=this.utils.createElement("iframe"),this.addAttr(this.iframe,{allowtransparency:!0,frameborder:0,scrolling:"no"}),this.addAttr(this.iframe,{src:t}),this.addCss(this.iframe,D),this.body=this.utils.querySelector("body"),this.body.firstChild?this.body.insertBefore(this.iframe,this.body.firstChild):this.body.appendChild(this.iframe),this.iframe},createFrame:function(){return!1===this.created&&(this.created=!0,this.iframe=this.loadFrame(this.url("gateway")),this.connector=new Q({target:this.iframe.contentWindow,origin:this.params.origin}),this.connector.on("load",this.proxy("onLoadConnector")),this.connector.on("modal",this.proxy("onOpenModal"))),this},onOpenModal:function(t,e){this.modal=new it({checkout:this,model:e}),this.modal.on("close",this.proxy("onCloseModal"))},onCloseModal:function(t,e){this.trigger("modal.close",t,e)},onLoadConnector:function(){this.loaded=!0,this.connector.off("load"),this.trigger("checkout.api"),this.off("checkout.api")}}),ot=new(K.extend({id:"google-payments-api",init:function(){this.client=null,this.wrapper=this.utils.querySelector("head"),this.defer=J()},load:function(){return this.utils.getPath("google.payments.api.PaymentsClient")?this.defer.resolveWith(this):(this.utils.querySelector("#".concat(this.id))||(this.script=this.utils.createElement("script"),this.addAttr(this.script,{id:this.id,async:!0,src:O}),this.utils.isElement(this.wrapper)&&this.wrapper.appendChild(this.script),this.addEvent(this.script,"load","onLoadSuccess"),this.addEvent(this.script,"error","onLoadError")),this.defer)},show:function(t){var e=t.find((function(t){return"https://google.com/pay"===t.supportedMethods}));return this.getClient({environment:e.data.environment}).loadPaymentData(e.data)},readyToPay:function(t,e){e.result&&this.defer.resolveWith(this)},onError:function(t,e){this.defer.rejectWith(this,e)},onLoadSuccess:function(){var t=this.getClient();t&&t.isReadyToPay(M).then(this.proxy("readyToPay")).catch(this.proxy("onError"))},onLoadError:function(){this.defer.rejectWith(this)},getClient:function(t){if(t||null===this.client){var e=this.utils.getPath("google.payments.api.PaymentsClient");e?this.client=new e(t):this.onError(null,new Error("Google Client Error"))}return this.client}})),at=null,ht={fallback:!1,provider:[]},ut=function(){if(at)return at;at=J();var t=[["google",{supportedMethods:"https://google.com/pay",data:M}],["apple",{supportedMethods:"https://apple.com/apple-pay"},function(){return E(window,"ApplePaySession")}]],e=T;return function i(){var n=t.shift();if(void 0===n)return-1===ht.provider.indexOf("google")&&(ht.fallback=!0,ht.provider.push("google")),at.resolve(ht);var r=n.shift(),s=n.shift(),o=n.shift();if(v(o)&&!1===o())return setTimeout(i,25),!1;var a=S([s],e,{});a?a.canMakePayment().then((function(t){!0===t&&ht.provider.push(r),setTimeout(i,25)})).catch((function(){setTimeout(i,25)})):setTimeout(i,25)}(),at},lt=K.extend({config:{payment_system:"",fallback:!1,methods:[],details:{},options:{}},supported:{fallback:!1,provider:[]},payload:{payment_system:null,provider:[]},params:{},getSupportedMethods:function(){var t=this;return ut().then((function(e){return t.setSupported(e),e}))},init:function(t){this.params=t||{}},setSupported:function(t){return this.supported=t,this.trigger("supported",t),this},setPayload:function(t){return this.payload=t,this.trigger("payload",t),this},setMerchant:function(t){this.merchant=t},setApi:function(t){return t instanceof st&&(this.api=t),this},getProviderPayload:function(t){return this.payload.provider[t]||{}},isMethodSupported:function(t){return-1!==this.supported.provider.indexOf(t)},isFallbackMethod:function(t){return"google"===t&&this.supported.fallback}}).extend({request:function(t,e,i,n){this.api&&this.api.scope(this.proxy((function(){this.api.request("api.checkout.pay",t,e).done(this.proxy(i)).fail(this.proxy(n))})))},update:function(t){var e=J();return this.request("methods",t,(function(t,i){this.onUpdate(t,i),e.resolveWith(this,[i])}),(function(t,i){this.onError(t,i),e.rejectWith(this,[i])})),e},onUpdate:function(t,e){this.setPayload(e.serialize())},onError:function(t,e){this.trigger("error",e)},isPending:function(){return!0===this.pendingState},setPending:function(t){var e=this;this.pendingState=t,setTimeout((function(){e.trigger("pending",t)}),100)},beforeCallback:function(t){t.resolve()},setBeforeCallback:function(t){return v(t)&&(this.beforeCallback=t),this},before:function(){if(!this.isPending()){this.setPending(!0);var t=J();return t.always(this.proxy((function(){this.setPending(!1)}))),this.beforeCallback(t),t}},pay:function(t){if(!this.isPending()){this.setPending(!0);var e=this.getProviderPayload(t),i=J();return i.always((function(){this.setPending(!1)})),!1===this.isMethodSupported(t)?i.rejectWith(this,[{test:!0}]):(this.isFallbackMethod(t)?this.makePaymentFallback(i,e.methods):this.makeNativePayment(i,e),i.done((function(t){this.trigger("details",{payment_system:this.payload.payment_system,data:t})})).fail((function(t){this.trigger("error",t),!0===this.params.embedded&&(location.reload(),this.trigger("reload",this.params))})))}},makeNativePayment:function(t,e){var i=this,n=S(e.methods,e.details,e.options);this.addEvent(n,"merchantvalidation","merchantValidation"),n.canMakePayment().then((function(){n.show().then((function(e){e.complete("success").then((function(){t.resolveWith(i,[e.details])}))})).catch((function(e){t.rejectWith(i,[{code:e.code,message:e.message}])}))})).catch((function(e){t.rejectWith(i,[{code:e.code,message:e.message}])}))},makePaymentFallback:function(t,e){var i=this;ot.load().then((function(){ot.show(e).then((function(e){t.resolveWith(i,[e])})).catch((function(e){t.rejectWith(i,[{code:e.code,message:e.message}])}))}))},appleSession:function(t){var e=J();return this.request("session",t,(function(t,i){e.resolveWith(this,[i.serialize()])}),(function(t,i){e.rejectWith(this,[i])})),e},merchantValidation:function(t,e){var i=e.validationURL,n=location.host;this.appleSession({url:i,domain:n,merchant_id:this.merchant}).done((function(t){try{e.complete(t.data)}catch(t){this.trigger("error",t)}})).fail((function(t){this.trigger("error",t)}))}}),ct=K.extend({defaults:{method:null,appendTo:null,className:"payment-element",origin:q,endpoint:j.element,mode:"plain",color:"black",lang:"en",height:38},init:function(t){this.params={},this.utils.extend(this.params,this.defaults),this.utils.extend(this.params,t),this.initElement()},getElementUrl:function(){return[this.params.origin,this.params.endpoint].join("")},getElementOptions:function(){return this.utils.param({method:this.params.method,mode:this.params.mode,style:this.params.style,color:this.params.color,lang:this.params.lang})},initElement:function(){this.element=this.utils.createElement("div"),this.iframe=this.utils.createElement("iframe"),this.button=this.utils.createElement("a"),this.addCss(this.element,B),this.addCss(this.button,F),this.addAttr(this.button,U),this.addCss(this.iframe,W),this.addAttr(this.iframe,z),this.addAttr(this.iframe,{src:[this.getElementUrl(),this.getElementOptions()].join("?")}),this.addEvent(this.iframe,"load","onloadConnector"),this.addEvent(this.iframe,"error","errorConnector"),this.addAttr(this.element,{class:this.params.className}),this.element.appendChild(this.iframe),this.element.appendChild(this.button)},errorConnector:function(){log("frame load error")},onloadConnector:function(){this.connector=new Q({target:this.iframe.contentWindow,origin:this.params.origin})},send:function(t,e){this.connector&&this.connector.send(t,e)},onEvent:function(t,e){if(e.preventDefault(),this.pending)return!1;this.send("event",{type:e.type})},onClick:function(){if(this.pending)return!1;this.request.before().done(this.proxy("onClickDone")).fail(this.proxy("onClickFail"))},onClickDone:function(){this.request.pay(this.params.method)},onClickFail:function(){},onSupported:function(t,e){e.provider.includes(this.params.method)&&this.mount()},onPayload:function(t,e){e.allowed.includes(this.params.method)&&this.show()},onPending:function(t,e){this.pending=e,this.send("pending",{state:e})},initEvents:function(){this.addEvent(this.button,"mouseenter","onEvent"),this.addEvent(this.button,"mouseleave","onEvent"),this.addEvent(this.button,"blur","onEvent"),this.addEvent(this.button,"focus","onEvent"),this.addEvent(this.button,"click","onClick")},setPaymentRequest:function(t){if(!(t instanceof lt))throw Error("request is not instance of PaymentRequestApi");this.request=t;var e=this.proxy("onSupported"),i=this.proxy("onPayload"),n=this.proxy("onPending");return this.request.off("supported",e).on("supported",e),this.request.off("payload",i).on("payload",i),this.request.off("pending",n).on("pending",n),this},appendTo:function(t){var e=this.utils.querySelector(t);return e&&e.appendChild(this.element),this.initEvents(),this},mount:function(){this.appendTo(this.params.appendTo)},isMounted:function(){return document.body.contains(this.element)},show:function(){return!1===this.isMounted()||(this.addCss(this.iframe,{transition:"opacity 0.6s 0.4s ease-out",opacity:this.utils.cssUnit(1)}),this.addCss(this.element,{transition:"height 0.2s ease-out",height:this.utils.cssUnit(this.params.height,"px")}),this.trigger("show",{})),this},hide:function(){return!1===this.isMounted()||(this.addCss(this.iframe,{transition:"opacity 0.4s ease-out",opacity:this.utils.cssUnit(0)}),this.addCss(this.element,{transition:"height 0.2s 0.4s ease-out",height:this.utils.cssUnit(0,"px")}),this.trigger("hide",{})),this}}),dt=K.extend({defaults:{origin:q,endpoint:j,methods:["apple","google"],element:null,style:{height:38,mode:"default",type:"long",color:"black"},data:{lang:"en"},before:function(t){t.resolve()}},init:function(t){this.elements={},this.supported=!1,this.params={element:t.element,methods:t.methods||this.defaults.methods,origin:t.origin||this.defaults.origin,endpoint:this.utils.extend({},this.defaults.endpoint,t.endpoint),style:this.utils.extend({},this.defaults.style,t.style),before:t.before||this.defaults.before,data:this.utils.extend({},this.defaults.data,t.data)},this.initApi(t.api),this.initPaymentRequestApi(),this.initElements(),this.update()},initApi:function(t){this.api=t instanceof st?t:new st({origin:this.params.origin,endpoint:this.params.endpoint})},initPaymentRequestApi:function(){this.request=new lt,this.request.setApi(this.api),this.request.setMerchant(this.params.data.merchant_id),this.request.setBeforeCallback(this.params.before),this.request.on("details",this.proxy("onDetails")),this.request.on("error",this.proxy("onError"))},initElements:function(){var t=this.params.style,e=this.params.data,i=this.params.origin,n=this.params.element,r=this.params.endpoint.element,s=this.request;this.container=this.utils.querySelector(this.params.element),this.addCss(this.container,{display:"flex",gap:"1rem","flex-direction":"column"}),P(this.params.methods,(function(o){new ct({origin:i,endpoint:r,method:o,appendTo:n,color:t.color,mode:t.mode,lang:e.lang,height:t.height}).setPaymentRequest(s)})),s.getSupportedMethods()},update:function(t){return this.request.update(this.utils.extend(this.params.data,t||{}))},onDetails:function(t,e){var i=this;this.api.scope((function(){i.api.request("api.checkout.form","request",i.utils.extend({},i.params.data,e)).done(i.proxy("onSuccess")).fail(i.proxy("onError"))}))},onSuccess:function(t,e){this.trigger("success",e)},onError:function(t,e){this.trigger("error",e)}}),pt=K.extend({defaults:{element:null,method:"card",data:{lang:"en"},style:{}},init:function(t){this.initParams(t),this.initEvents()},initParams:function(t){this.params=this.utils.extend({},this.defaults,t),this.element=this.utils.querySelector(this.params.element),this.connector=new Q({target:window.parent}),this.payment=new lt({embedded:!0})},extendParams:function(t){this.utils.extend(this.params,{method:t.method,style:t.style,data:t.data,css:t.css})},getGoogleLangSupport:function(t,e){return-1!==L.indexOf(t)?t:e},getButtonColor:function(t){return I[t]||N},getGoogleSvg:function(t,e,i){var n={endpoint:"https://www.gstatic.com/instantbuy/svg",color:this.getButtonColor(t),mode:i||"plain",lang:e||"en"},r='url("{endpoint}/{color}/{mode}/{lang}.svg")';return"plain"===i&&(r='url("{endpoint}/{color}_gpay.svg")'),"buy"===i&&(r='url("{endpoint}/{color}/{lang}.svg")'),this.utils.stringFormat(r,n)},getAppleSvg:function(t){var e={color:this.getButtonColor(t)};return this.utils.stringFormat('url("svg/apple-pay-{color}.svg")',e)},getAppleLabel:function(t){return G[t||"en"]},addFrameImage:function(){var t=this.utils.querySelector("iframe",this.element)||this.utils.createElement("iframe"),e=this.params.style||{},i=this.getGoogleLangSupport(this.params.data.lang,"en"),n={buttonColor:e.color||"black",browserLocale:i,buttonSizeMode:"fill"},r=["https://pay.google.com/gp/p/generate_gpay_btn_img",this.utils.param(n)].join("?");this.addAttr(t,{scrolling:"no",frameborder:0,src:r}),this.element.appendChild(t),this.element.classList.remove("short","long")},styleButton:function(){var t=this.element,e=this.params,i=e.method,n=e.style||{},r=e.data.lang||"en",s=e.css||{};t.setAttribute("class",""),t.classList.add("button","pending"),"card"===i&&(i="google"),i&&t.classList.add(i),t.classList.add(r),n.type&&t.classList.add(n.type),n.mode&&t.classList.add(n.mode),n.color&&t.classList.add(n.color),"google"===i&&("short"===n.type&&(n.mode="plain"),"default"===n.mode?this.addFrameImage():s.image=this.getGoogleSvg(n.color,r,n.mode)),"apple"===i&&(s.image=this.getAppleSvg(n.color),s.label=this.getAppleLabel(r,n.mode)),this.utils.forEach(s,(function(e,i){t.style.setProperty(["--",i].join(""),e)}))},initEvents:function(){this.payment.on("details",this.proxy((function(t,e){this.connector.send("details",e),this.connector.send("complete",e)}))),this.payment.on("reload",this.proxy((function(t,e){this.connector.send("reload",e)}))),this.payment.on("error",this.proxy((function(t,e){this.connector.send("error",e)}))),this.connector.on("options",this.proxy((function(t,e){this.extendParams(e),this.styleButton()}))),this.connector.on("pay",this.proxy((function(){if(!this.element.classList.contains("pending"))if("apple"===this.params.method){var t=this.payment.payload||{},e=t.provider.apple||{};this.connector.send("pay",{payment_system:t.payment_system,methods:e.methods,details:e.details,options:e.options})}else this.payment.setSupported({fallback:!1,provider:["google"]}).pay("google")}))),this.connector.on("config",this.proxy((function(t,e){this.payment.setPayload(e=function(t){var e={payment_system:t.payment_system,provider:{}},i=t.methods||[],n=t.details||{},r=t.options||{},s=new RegExp("//([a-z]+)\\.com/");return i.forEach((function(t){var i=s.exec(t.supportedMethods);null!==i&&(e.provider[i[1]]={methods:[t],details:n,options:r})})),e}(e)),e.payment_system&&Object.keys(e.provider).length>0?(this.element.classList.remove("pending"),this.element.classList.add("ready"),this.connector.send("show",{})):this.connector.send("hide",{})}))),this.connector.on("event",this.proxy((function(t,e){"mouseenter"===e.type&&this.element.classList.add("hover"),"mouseleave"===e.type&&this.element.classList.remove("hover"),"focusin"===e.type&&this.element.classList.add("active"),"focusout"===e.type&&this.element.classList.remove("active")})))}}),ft=st.extend({init:function(t){this.initParams(t),this.initWidget()},initWidget:function(){this.initOptions(this.params.options),this.utils.isString(this.params.element)&&this.initElement(this.params.element)},initOptions:function(){this.utils.isPlainObject(this.params.options)&&(this.params.options=this.params.options||{})},initElement:function(t){},addSelectorEvent:function(t,e,i){return this.each(this.utils.querySelectorAll(t),(function(t,n){this.addEvent(n,e,i)})),this},getRequestParams:function(){return{}},sendRequest:function(t,e){e.defaultPrevented||(e.preventDefault(),this.trigger("request",this.getRequestParams(t)),this.scope((function(){this.request("api.checkout.form","request",this.getRequestParams(t)).done(this.proxy("onSuccess")).fail(this.proxy("onError")).progress(this.proxy("onProgress"))})))},onProgress:function(t,e){this.trigger("progress",e)},onSuccess:function(t,e){e.sendResponse(),e.submitToMerchant(),this.trigger("success",e)},onError:function(t,e){this.trigger("error",e)}}),mt=K.extend({init:function(t){this.setFormElement(t)},setFormElement:function(t){this.utils.isElement(t)&&(this.form=t)},getData:function(t){var e=this.deparam(this.serializeArray());return!0===t?this.utils.cleanObject(e):e},serializeArray:function(){var t=this.utils.toArray(this.form.elements);return this.utils.map(t,(function(t){if(!t.disabled&&""!==t.name&&(!t.type.match("checkbox|radio")||t.checked))return{name:t.name,value:t.value}}))},serializeAndEncode:function(){return this.utils.map(this.serializeArray(),(function(t){return[t.name,encodeURIComponent(t.value)].join("=")})).join("&")},deparam:function(t){var e,i={},n=/[^\[\]]+|\[\]$/g,r=function(t,e){var n,r=i,s=t.pop(),o=t.length;for(n=0;n<o;n++)r[t[n]]||(r[t[n]]=o===n+1&&"[]"===s?[]:{}),r=r[t[n]];"[]"===s?r.push(e):r[s]=e};for(e in t)t.hasOwnProperty(e)&&r(t[e].name.match(n),t[e].value);return i}}),gt=ft.extend({initElement:function(t){this.addSelectorEvent(t,"submit","sendRequest")},getRequestParams:function(t){return this.utils.extend({},this.params.options,new mt(t).getData())}}),yt=ft.extend({attributes:{},initElement:function(t){this.utils.isPlainObject(this.params.attributes)&&this.utils.extend(this.attributes,this.params.attributes),this.addSelectorEvent(t,"click","sendRequest")},getRequestParams:function(t){return this.utils.extend({},this.params.options,this.getElementData(t))},getElementData:function(t){var e={};return this.utils.forEach(this.attributes,(function(i,n){t.hasAttribute(n)&&(e[i]=t.getAttribute(n))})),e}});return n.add("Api",st),n.add("Connector",Q),n.add("PaymentButton",dt),n.add("PaymentRequestApi",lt),n.add("PaymentElement",ct),n.add("FormWidget",gt),n.add("ButtonWidget",yt),n.Utils=A,n.Config=V,n.Api=st,n.Module=K,n.Connector=Q,n.Response=rt,n.PaymentRequestApi=lt,n.PaymentContainer=pt,n.PaymentElement=ct,n.PaymentButton=dt,n}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).$checkout=e()}(this,(function(){"use strict";var t={},e={},i=function(e,i){if(!t[e])throw Error(["module is undefined",e].join(" "));return new t[e](i||{})};function n(t,n){return e[t]?e[t]:e[t]=i(t,n)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}n.get=function(t,e){return i(t,e)},n.add=function(e,i){return function(e,i){if(t[e])throw Error(["module already added",e].join(" "));t[e]=i}(e,i),this};var s,o,a=/^\d+$/,h=/([^\[\]]+)|(\[\])/g,u=/([^?#]*)(#.*)?$/,l=/%20/g,c=/\[\]$/,d=/\s([a-zA-Z]+)/,p=function(t){return decodeURIComponent(t.replace(/\+/g," "))},f=function(t){var e=[];return _(t,(function(t){e=e.concat(b(t)?f(t):t)})),e},m=function(t,e,i){b(e)?_(e,(function(n,r){c.test(t)?i(t,n):m(t+"["+(y(e)?r:"")+"]",n,i)})):y(e)?_(e,(function(e,n){m(t+"["+n+"]",e,i)})):i(t,e)},g=function(t){return{}.toString.call(t).match(d)[1].toLowerCase()},y=function(t){return!!t&&"object"===r(t)&&t.constructor===Object},v=function(t){return"function"===g(t)},b=function(t){return"array"===g(t)},x=function(t){return t&&1===t.nodeType},w=function(t){return[].slice.call(t)},E=function(t,e){return t&&t.hasOwnProperty(e)},_=function(t,e,i){for(var n in t)E(t,n)&&e.call(i||null,t[n],n)},P=function(t){for(var e in t)E(t,e)&&(0===t[e].length?(b(t)&&t.splice(e,1),y(t)&&delete t[e]):y(t[e])&&P(t[e]));return t},C=function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return _(i,(function(e){null!==e&&_(e,(function(e,i){y(e)?t[i]=C(t[i]||{},e):t[i]=e}))})),t},k=function(){for(var t=0,e="";t++<36;)e+=51*t&52?(15^t?8^Math.random()*(20^t?16:4):4).toString(16):"-";return e},S=(s=window,E(s,"PaymentRequest")&&v(s.PaymentRequest)&&(o=s.PaymentRequest),function(t,e,i){var n=null;if((e=e||{}).id=k(),i=i||{},o)try{n=new o(t,e,i)}catch(t){n=null}return n}),A=Object.freeze({__proto__:null,addAttr:function(t,e){if(!1===x(t))return!1;y(e)&&_(e,(function(e,i){t.setAttribute(i,e)}))},addClass:function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n=e.shift();if(!1!==x(n)){var r=n.className.trim().split(/\s+/);f(e.map((function(t){return t.trim().split(/\s+/)}))).forEach((function(t){t&&!~r.indexOf(t)&&r.push(t)})),n.className=r.join(" ").trim()}},cleanObject:P,createElement:function(t){return document.createElement(t)},cssUnit:function(t,e){return String(t||0).concat(e||"").concat(" !important")},deparam:function(t){var e={};return"?"===t.charAt(0)&&(t=t.slice(1)),t&&u.test(t)&&_(t.split("&"),(function(t){var i=t.split("="),n=p(i.shift()),r=p(i.join("=")),s=e;if(n){for(var o=0,u=(i=n.match(h)).length-1;o<u;o++)s[i[o]]||(s[i[o]]=a.test(i[o+1])||"[]"===i[o+1]?[]:{}),s=s[i[o]];var l=i.pop();"[]"===l?s.push(r):s[l]=r}})),e},extend:C,forEach:_,getPath:function(t){var e=t.split("."),i=e.shift(),n=null;return E(window,i)&&(n=window[i],_(e,(function(t){n=E(n,t)?n[t]:null}))),n},getPaymentRequest:S,getStyle:function(t,e,i){return((i=window.getComputedStyle)?i(t):t.currentStyle)[e.replace(/-(\w)/gi,(function(t,e){return e.toUpperCase()}))]},getType:g,hasProp:E,isArguments:function(t){return"arguments"===g(t)},isArray:b,isDate:function(t){return"date"===g(t)},isElement:x,isError:function(t){return"error"===g(t)},isFunction:v,isNumber:function(t){return"number"===g(t)},isObject:function(t){return"object"===g(t)},isPlainObject:y,isRegexp:function(t){return"regexp"===g(t)},isString:function(t){return"string"===g(t)},jsonParse:function(t,e){try{return JSON.parse(t)}catch(t){return e}},map:function(t,e,i){var n,r,s=[];for(n in t)E(t,n)&&void 0!==(r=e.call(i||null,t[n],n))&&(s[n]=r);return s},param:function(t){var e=[];return _(t,(function(t,i){m(i,t,(function(t,i){i=null==i?"":i,e.push([encodeURIComponent(t),encodeURIComponent(i)].join("="))}))})),e.join("&").replace(l,"+")},querySelector:function(t,e){return(e||document).querySelector(t)},querySelectorAll:function(t,e){return w((e||document).querySelectorAll(t))},removeAttr:function(t,e){if(!1===x(t))return!1;y(e)&&_(e,(function(e){t.removeAttribute(e)}))},removeClass:function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];var n=e.shift();if(!1!==x(n)){var r=n.className.trim().split(/\s+/);f(e.map((function(t){return t.trim().split(/\s+/)}))).forEach((function(t){if(t){var e=r.indexOf(t);~e&&r.splice(e,1)}})),n.className=r.join(" ").trim()}},removeElement:function(t){t.parentNode.removeChild(t)},stringFormat:function(t,e,i){return(t||"").replace(i||/{(.+?)}/g,(function(t,i){return e[i]||t}))},toArray:w,uuid:k}),q="https://pay.flitt.com",j={gateway:"/latest/checkout-v2/index.html",element:"/latest/checkout-v2/button/element.html"},R="http://secure-redirect.cloudipsp.com/submit/",O="https://pay.google.com/gp/p/js/pay.js",M={apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:[{type:"CARD",parameters:{allowedAuthMethods:["PAN_ONLY","CRYPTOGRAM_3DS"],allowedCardNetworks:["AMEX","DISCOVER","INTERAC","JCB","MASTERCARD","VISA"]}}]},D=["ar","bg","ca","zh","hr","cs","da","nl","en","et","fi","fr","de","el","id","it","ja","ko","ms","no","pl","pt","ru","sr","sk","sl","es","sv","th","tr","uk"],L={total:{label:"Total",amount:{currency:"USD",value:"0.00"}}},T={width:"1px !important",height:"1px !important",left:"1px !important",bottom:"1px !important",position:"fixed !important",border:"0px !important"},W={border:"none !important",margin:"0 !important",padding:"0 !important",display:"block !important",width:"1px !important","min-width":"100% !important",background:"transparent !important",position:"relative !important",opacity:"0 !important",overflow:"hidden !important",height:"100% !important",outline:"none !important","z-index":"1 !important"},z={tabindex:"-1",scrolling:"no",frameborder:0,allowtransparency:!0,allowpaymentrequest:!0},F={"z-index":"2 !important",position:"absolute !important",border:"none !important",background:"transparent !important",left:"0 !important",top:"0 !important",cursor:"pointer !important",outline:"none !important",width:"100% !important",height:"100% !important"},U={role:"button","aria-pressed":"false"},B={border:"0 !important",margin:"0 !important",padding:"0 !important",display:"block !important",background:"transparent !important","user-select":"none !important",overflow:"hidden !important",position:"relative !important",opacity:"1 !important",height:"0 !important",width:"100% !important",outline:"none !important"},N="dark",I={dark:"dark",light:"light",black:"dark",white:"light"},G={ar:"",bg:"",ca:"",zh:"",hr:"",cs:"",da:"",nl:"",en:"Pay with",et:"",es:"Comprar con",el:"",fi:"",fr:"Acheter avec",de:"Zahlen über",id:"",it:"Acquista con",ja:"",ko:"",ms:"",no:"",pl:"Zapłać przez",pt:"",ru:"Оплатить через",sr:"",sk:"Zaplatiť cez",sl:"",sv:"",th:"",tr:"",uk:"Оплатити через"},V=Object.freeze({__proto__:null,ApiEndpoint:j,ApiFrameCss:T,ApiOrigin:q,ButtonColorMap:I,ButtonContainerCss:B,ButtonCoverAttrs:U,ButtonCoverCss:F,ButtonDefaultColor:N,ButtonFrameAttrs:z,ButtonFrameCss:W,ButtonLabelMap:G,GoogleBaseRequest:M,GooglePayApi:O,GooglePayLanguages:D,PaymentRequestDetails:L,ProxyUrl:R});function J(){var t=[],e=[],i=[],n=0,r=void 0,s=null,o=null,a=function(t,e,i){var n=[].concat(i),a=function(t,e){s=e?Array.from(t):[t]},h=function(){var t=n.shift();t&&(void 0!==(o=t.apply(r,s))?o&&o.then?o.then((function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];a(e,!0),h()})):(a(o),h()):h())};r=t,s=e,h()},h={done:function(e){return v(e)&&(1===n&&e.apply(r,s),t.push(e)),this},fail:function(t){return v(t)&&(2===n&&t.apply(r,s),e.push(t)),this},progress:function(t){return v(t)&&(3===n&&t.apply(r,s),i.push(t)),this},always:function(t){return this.done(t).fail(t)},then:function(t,e,i){return v(t)&&this.done(t),v(e)&&this.fail(e),v(i)&&this.progress(e),this},promise:function(t){return null===t?h:(_(h,(function(e,i){t[i]=e})),t)},state:function(){return n},isPending:function(){return 0===n},isRejected:function(){return 2===n},isResolved:function(){return 1===n},resetState:function(){return n=0,this},resolveWith:function(e,i){return 0===n&&(n=1,a(e,i,t)),this},rejectWith:function(t,i){return 0===n&&(n=2,a(t,i,e)),this},notifyWith:function(t,e){return 0===n&&(n=3,a(t,e,i),n=0),this},resolve:function(){return this.resolveWith(this,Array.from(arguments))},reject:function(){return this.rejectWith(this,Array.from(arguments))},notify:function(){return this.notifyWith(this,Array.from(arguments))}};return h}var $=!1,Z=/xyz/.test(function(){return"xyz"}.toString())?/\b_super\b/:/.*/;function H(){}function Y(t,e,i){return function(){var n,r=this._super;return this._super=t[e],n=i.apply(this,arguments),this._super=r,n}}H.prototype._super=function(){},H.prototype.instance=function(t){return new this.constructor(t)},H.prototype.proxy=function(t){return function(t,e){return function(){return e.apply(t,[this].concat(Array.prototype.slice.call(arguments)))}}(this,t="string"==typeof t?this[t]:t)},H.extend=function t(e){function i(){!$&&this&&this.init.apply(this,arguments)}return i.prototype=function(t,e){var i,n,r=t.prototype;for(i in $=!0,n=new t,$=!1,e)e.hasOwnProperty(i)&&("function"==typeof r[i]&&"function"==typeof e[i]&&Z.test(e[i])?n[i]=Y(r,i,e[i]):n[i]=e[i]);return n}(this,e),i.prototype.constructor=i,i.extend=t,i};var X=H.extend({init:function(){this.events={},this.empty=[]},on:function(t,e){return(this.events[t]=this.events[t]||[]).push(e),this},off:function(t,e){t||(this.events={});for(var i=this.events[t]||this.empty,n=i.length=e?i.length:0;n--;)e===i[n]&&i.splice(n,1);return this},trigger:function(t){for(var e,i=this.events[t]||this.empty,n=i.length>0?i.slice(0,i.length):i,r=0;e=n[r++];)e.apply(e,this.empty.slice.call(arguments,1));return this}}),K=H.extend({utils:A,getListener:function(){return this._listener_||(this._listener_=new X),this._listener_},destroy:function(){this.off()},on:function(t,e){return this.getListener().on(t,e),this},off:function(t,e){return this.getListener().off(t,e),this},proxy:function(t){return this._proxy_cache_||(this._proxy_cache_={}),this.utils.isString(t)?(this._proxy_cache_[t]||(this._proxy_cache_[t]=this._super(t)),this._proxy_cache_[t]):this._super(t)},trigger:function(){return this.getListener().trigger.apply(this.getListener(),arguments),this},each:function(t,e){this.utils.forEach(t,this.proxy(e))},addAttr:function(t,e){if(!this.utils.isElement(t))return!1;this.utils.forEach(e,(function(e,i){t.setAttribute(i,e)}))},addCss:function(t,e){if(!this.utils.isElement(t))return!1;this.utils.forEach(e,(function(e,i){this.addCssProperty(t,i,e)}),this)},addCssProperty:function(t,e,i){var n,r=t.style.cssText.match(new RegExp("(?:[;\\s]|^)("+e.replace("-","\\-")+"\\s*:(.*?)(;|$))"));r?(n=r.index+r[0].indexOf(r[1]),t.style.cssText=t.style.cssText.substring(0,n)+e+": "+i+";"+t.style.cssText.substring(n+r[1].length)):t.style.cssText+=" "+e+": "+i+";"},addEvent:function(t,e,i){if(!t||!e||!i)return!1;i=this.proxy(i),t.addEventListener?t.addEventListener(e,i):t.attachEvent&&t.attachEvent("on"+e,i)},removeEvent:function(t,e,i){if(!t||!e||!i)return!1;i=this.proxy(i),t.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent&&t.detachEvent("on"+e,i)},prepareForm:function(t,e,i,n){var r=this.utils.createElement("form");return this.addAttr(r,{action:t,target:i||"_self",method:n||"POST"}),this.addCss(r,{display:"none"}),this.utils.forEach(e,(function(t,e,i){(i=this.utils.createElement("input")).type="hidden",i.name=e,i.value=t,r.appendChild(i)}),this),r}}),Q=K.extend({ns:"crossDomain",origin:"*",uniqueId:1,signature:null,init:function(t){this.setTarget(t.target),this.setOrigin(t.origin),this.create()},create:function(){this.addEvent(window,"message","router")},setOrigin:function(t){this.origin=t||"*"},setTarget:function(t){return this.target=t,this},getUID:function(){return++this.uniqueId},destroy:function(){this.removeEvent(window,"message","router"),this._super()},router:function(t,e,i){if(this.target!==e.source)return!1;try{i=JSON.parse(e.data)}catch(t){}i&&i.action&&i.data&&this.trigger(i.action,i.data)},send:function(t,e,i,n){if(this.target){i=JSON.stringify({action:t,data:e}),n={targetOrigin:this.origin,delegate:"payment"};try{this.target.postMessage(i,n)}catch(t){this.target.postMessage(i,this.origin,[])}}}}),tt=Object.freeze({__proto__:null,acs:function(t){return"\n".concat('\n<style>\n .flitt-modal {\n box-sizing: border-box;\n margin: 100px auto;\n max-width: 680px;\n background-color: #fff;\n border-radius: 5px;\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n }\n\n @media (max-width: 850px) {\n .flitt-modal {\n margin: 50px auto;\n }\n }\n\n @media (max-width: 695px) {\n .flitt-modal {\n max-width: 100%;\n margin: 5px;\n }\n }\n\n .flitt-modal-wrapper {\n box-sizing: border-box;\n overflow: auto;\n position: fixed;\n z-index: 99999;\n left: 0;\n bottom: 0;\n top: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.2);\n }\n\n .flitt-modal-header {\n box-sizing: border-box;\n background-color: #fafafa;\n height: 50px;\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n }\n\n .flitt-modal-close {\n box-sizing: border-box;\n float: right;\n overflow: hidden;\n height: 50px;\n text-decoration: none;\n border-top-right-radius: 5px;\n color: #949494;\n }\n\n .flitt-modal-close:hover, .flitt-modal-close:focus, .flitt-modal-close:active {\n text-decoration: none;\n color: #646464;\n }\n\n .flitt-modal-close:before {\n content: "×";\n font-size: 50px;\n line-height: 50px;\n padding: 0 10px;\n }\n\n .flitt-modal-title {\n box-sizing: border-box;\n border-top-left-radius: 5px;\n line-height: 20px;\n height: 50px;\n padding: 5px 15px;\n font-size: 12px;\n display: table-cell;\n vertical-align: middle;\n }\n .flitt-modal-content {\n box-sizing: border-box;\n border-bottom-left-radius: 5px;\n min-height: 650px;\n }\n .flitt-modal-iframe {\n overflow-x: hidden;\n border: 0;\n display: block;\n width: 100%;\n height: 750px;\n }\n</style>\n','\n<div class="flitt-modal-wrapper">\n <div class="flitt-modal">\n <div class="flitt-modal-header">\n <a href="javascript:void(0)" class="flitt-modal-close"></a>\n <div class="flitt-modal-title">\n ').concat(t.messages.modalHeader,"\n <a href='javascript:void(0)'>").concat(t.messages.modalLinkLabel,'</a>\n </div>\n </div>\n <div class="flitt-modal-content">\n <iframe src="about:blank" class="flitt-modal-iframe" frameborder="0" allowtransparency="true"></iframe>\n </div>\n </div>\n</div>\n')}});var et=H.extend({init:function(t){this.view=tt[t]||function(t){return function(e){return["template",t,"not found"].join(" ")}}(t)},render:function(t){return this.view(t)}}),it=K.extend({init:function(t){this.checkout=t.checkout,this.model=t.model||{},this.messages=t.checkout.params.messages||{},this.template=new et("acs"),this.body=this.utils.querySelector("body"),this.initModal(),this.initConnector()},initModal:function(){this.name=["modal-iframe",this.getRandomNumber()].join("-"),this.modal=this.utils.createElement("div"),this.modal.innerHTML=this.template.render({model:this.model,messages:this.messages}),this.iframe=this.find(".flitt-modal-iframe"),this.addAttr(this.iframe,{name:this.name,id:this.name}),this.model.send_data?(this.form=this.prepareForm(this.model.url,this.model.send_data,this.name),this.modal.appendChild(this.form)):this.iframe.src=this.model.url,this.addEvent(this.find(".flitt-modal-close"),"click","closeModal"),this.addEvent(this.find(".flitt-modal-title a"),"click","submitForm"),this.initScrollbar(),this.body.appendChild(this.modal),this.form&&this.form.submit()},measureScrollbar:function(){var t=document.createElement("div");return t.className="modal-scrollbar-measure",this.body.appendChild(t),this.utils.removeElement(t),t.offsetWidth-t.clientWidth},checkScrollbar:function(){var t,e=window.innerWidth;e||(e=(t=document.documentElement.getBoundingClientRect()).right-Math.abs(t.left)),this.bodyIsOverflowing=document.body.clientWidth<e,this.scrollbarWidth=this.measureScrollbar()},initScrollbar:function(){this.checkScrollbar(),this.bodyPad=parseInt(this.utils.getStyle(this.body,"padding-right")||0,10),this.originalBodyPad=document.body.style.paddingRight||"",this.originalOverflow=document.body.style.overflow||"",this.bodyIsOverflowing&&this.addCss(this.body,{paddingRight:[this.bodyPad+this.scrollbarWidth,"px"].join(""),overflow:"hidden"})},resetScrollbar:function(){this.addCss(this.body,{paddingRight:this.originalBodyPad?[this.originalBodyPad,"px"].join(""):"",overflow:this.originalOverflow})},getRandomNumber:function(){return Math.round(1e9*Math.random())},find:function(t){return this.utils.querySelector(t,this.modal)},closeModal:function(t,e){e.preventDefault(),this.trigger("close",this.data),this.removeModal()},submitForm:function(t,e){e.preventDefault(),this.trigger("submit",this.data),this.addAttr(this.form,{target:"_blank"}),this.form.submit()},removeModal:function(){this.destroy()},destroy:function(){this.utils.removeElement(this.modal),this.resetScrollbar(),this.connector.destroy(),this._super()},initConnector:function(){this.connector=new Q({target:this.iframe.contentWindow}),this.connector.on("response",this.proxy("onResponse"))},onResponse:function(t,e){this.sendResponse(e),this.removeModal()},sendResponse:function(t){this.checkout.connector.send("request",{uid:t.uid,action:"api.checkout.proxy",method:"send",params:t})}}),nt=K.extend({init:function(t){this.data=t||{},this.create()},create:function(){},eachProps:function(t){var e=t[1]?t[0]:null,i=t[1]?t[1]:t[0];return{list:e?this.alt(e,[]):this.data,callback:i}},each:function(){var t=this.eachProps(arguments);for(var e in t.list)t.list.hasOwnProperty(e)&&t.callback(this.instance(t.list[e]),t.list[e],e)},filter:function(){var t=this.eachProps(arguments);for(var e in t.list)if(t.list.hasOwnProperty(e)){var i=this.instance(t.list[e]);if(t.callback(i,t.list[e],e))return t.list[e]}},find:function(){var t=this.eachProps(arguments);for(var e in t.list)if(t.list.hasOwnProperty(e)){var i=this.instance(t.list[e]);if(t.callback(i,t.list[e],e))return i}return!1},alt:function(t,e){return void 0===(t=this.attr(t))?e:t},attr:function(t,e){for(var i=0,n=this.data,r=(t||"").split("."),s=r.pop(),o=arguments.length;i<r.length;i++)if(n&&n.hasOwnProperty(r[i]))n=n[r[i]];else{if(2!==o)break;n=n[r[i]]={}}return 1===o?n?n[s]:void 0:(2===o&&(n[s]=e),this)},stringify:function(){return JSON.stringify(this.serialize())},serialize:function(){return this.data}}),rt=nt.extend({stringFormat:function(t){var e=this;return(t||"").replace(/{(.+?)}/g,(function(t,i){return e.attr(["order.order_data",i].join("."))||t}))},setConnector:function(t){return this.connector=t,this},setUID:function(t){return this.uid=t,this},getUID:function(){return this.uid},formDataProxy:function(t,e,i,n){location.assign([R,JSON.stringify({url:t,params:e,target:i,method:n})].join("#"))},formDataSubmit:function(t,e,i,n){if(t.match(/^http:/))return this.formDataProxy(t,e,i,n);var r=this.stringFormat(t),s=this.prepareForm(r,e,i,n);this.utils.querySelector("body").appendChild(s),s.submit(),s.parentNode.removeChild(s)},inProgress:function(){return this.attr("order.in_progress")},readyToSubmit:function(){return this.attr("order.ready_to_submit")},waitForResponse:function(){return this.attr("order.pending")},needVerifyCode:function(){return this.attr("order.need_verify_code")},redirectUrl:function(){return!!this.attr("url")&&(this.redirectToUrl(this.attr("url")),!0)},redirectToUrl:function(t){location.assign(t)},submitToMerchant:function(){var t=this.attr("order.ready_to_submit"),e=this.attr("model.url")||this.attr("order.response_url"),i=this.attr("order.method"),n=this.attr("order.action"),r=this.attr("model.send_data")||this.attr("order.order_data");if(t&&e&&r)return"redirect"===n||!0===r.get_without_parameters?this.redirectToUrl(e):this.formDataSubmit(e,r,"_self",i),!0},submitForm:function(){var t=this.attr("method"),e=this.attr("url"),i=this.attr("send_data");return!(!e||!i)&&(this.formDataSubmit(e,i,"_self",t),!0)},sendResponse:function(){var t=this.attr("action");return"submit"===t?this.submitForm():"redirect"===t&&this.redirectUrl()},prepare3dsData:function(){var t={},e=this.attr("submit3ds");return e["3ds"]&&(t.token=this.attr("token"),t.uid=this.getUID(),t.frame=!0,e.send_data.TermUrl&&(e.send_data.TermUrl=[e.send_data.TermUrl,this.utils.param(t)].join("#!!"))),e},waitOn3dsDecline:function(){var t=this.alt("submit3ds.checkout_data",{js_wait_on_3ds_decline:!1,js_wait_on_3ds_decline_duration:0});return t.js_wait_on_3ds_decline?t.js_wait_on_3ds_decline_duration:0},submit3dsForm:function(){this.attr("submit3ds.checkout_data")&&this.connector.trigger("modal",this.prepare3dsData())},supportedMethod:function(t){var e=this.find("methods",(function(e){return e.alt("supportedMethods","").match(t)}));e?this.attr("methods",[e.serialize()]):this.attr("methods",[])}}),st=K.extend({defaults:{origin:q,endpoint:j,messages:{modalHeader:"Now you will be redirected to your bank 3DSecure. If you are not redirected please refer",modalLinkLabel:"link"}},init:function(t){this.initParams(t)},url:function(t,e){return[this.params.origin,this.params.endpoint[t]||"/",e||""].join("")},extendParams:function(t){return this.utils.extend(this.params,t),this},initParams:function(t){this.params=this.utils.extend({},this.defaults),this.extendParams(t),this.setOrigin(this.params.origin),this.loaded=!1,this.created=!1},setOrigin:function(t){return this.utils.isString(t)&&(this.params.origin=t),this},scope:function(t){t=this.proxy(t),!0===this.createFrame().loaded?t():this.on("checkout.api",t)},request:function(t,e,i){var n=J(),r={uid:this.connector.getUID(),action:t,method:e,params:i||{}};return this.connector.send("request",r),this.connector.on(r.uid,this.proxy((function(t,e,i,s){var o=new rt(e);o.setUID(r.uid),o.setConnector(this.connector),s="resolveWith",o.attr("submit3ds")&&(s="notifyWith"),o.attr("error")&&(s="rejectWith"),n[s](this,[o])}))),n},loadFrame:function(t){return this.iframe=this.utils.createElement("iframe"),this.addAttr(this.iframe,{allowtransparency:!0,frameborder:0,scrolling:"no"}),this.addAttr(this.iframe,{src:t}),this.addCss(this.iframe,T),this.body=this.utils.querySelector("body"),this.body.firstChild?this.body.insertBefore(this.iframe,this.body.firstChild):this.body.appendChild(this.iframe),this.iframe},createFrame:function(){return!1===this.created&&(this.created=!0,this.iframe=this.loadFrame(this.url("gateway")),this.connector=new Q({target:this.iframe.contentWindow,origin:this.params.origin}),this.connector.on("load",this.proxy("onLoadConnector")),this.connector.on("modal",this.proxy("onOpenModal"))),this},onOpenModal:function(t,e){this.modal=new it({checkout:this,model:e}),this.modal.on("close",this.proxy("onCloseModal"))},onCloseModal:function(t,e){this.trigger("modal.close",t,e)},onLoadConnector:function(){this.loaded=!0,this.connector.off("load"),this.trigger("checkout.api"),this.off("checkout.api")}}),ot=new(K.extend({id:"google-payments-api",init:function(){this.client=null,this.wrapper=this.utils.querySelector("head"),this.defer=J()},load:function(){return this.utils.getPath("google.payments.api.PaymentsClient")?this.defer.resolveWith(this):(this.utils.querySelector("#".concat(this.id))||(this.script=this.utils.createElement("script"),this.addAttr(this.script,{id:this.id,async:!0,src:O}),this.utils.isElement(this.wrapper)&&this.wrapper.appendChild(this.script),this.addEvent(this.script,"load","onLoadSuccess"),this.addEvent(this.script,"error","onLoadError")),this.defer)},show:function(t){var e=t.find((function(t){return"https://google.com/pay"===t.supportedMethods}));return this.getClient({environment:e.data.environment}).loadPaymentData(e.data)},readyToPay:function(t,e){e.result&&this.defer.resolveWith(this)},onError:function(t,e){this.defer.rejectWith(this,e)},onLoadSuccess:function(){var t=this.getClient();t&&t.isReadyToPay(M).then(this.proxy("readyToPay")).catch(this.proxy("onError"))},onLoadError:function(){this.defer.rejectWith(this)},getClient:function(t){if(t||null===this.client){var e=this.utils.getPath("google.payments.api.PaymentsClient");e?this.client=new e(t):this.onError(null,new Error("Google Client Error"))}return this.client}})),at=null,ht={fallback:!1,provider:[]},ut=function(){if(at)return at;at=J();var t=[["google",{supportedMethods:"https://google.com/pay",data:M}],["apple",{supportedMethods:"https://apple.com/apple-pay"},function(){return E(window,"ApplePaySession")}]],e=L;return function i(){var n=t.shift();if(void 0===n)return-1===ht.provider.indexOf("google")&&(ht.fallback=!0,ht.provider.push("google")),at.resolve(ht);var r=n.shift(),s=n.shift(),o=n.shift();if(v(o)&&!1===o())return setTimeout(i,25),!1;var a=S([s],e,{});a?a.canMakePayment().then((function(t){!0===t&&ht.provider.push(r),setTimeout(i,25)})).catch((function(){setTimeout(i,25)})):setTimeout(i,25)}(),at},lt=K.extend({config:{payment_system:"",fallback:!1,methods:[],details:{},options:{}},supported:{fallback:!1,provider:[]},payload:{payment_system:null,provider:[]},params:{},getSupportedMethods:function(){var t=this;return ut().then((function(e){return t.setSupported(e),e}))},init:function(t){this.params=t||{}},setSupported:function(t){return this.supported=t,this.trigger("supported",t),this},setPayload:function(t){return this.payload=t,this.trigger("payload",t),this},setMerchant:function(t){this.merchant=t},setApi:function(t){return t instanceof st&&(this.api=t),this},getProviderPayload:function(t){return this.payload.provider[t]||{}},isMethodSupported:function(t){return-1!==this.supported.provider.indexOf(t)},isFallbackMethod:function(t){return"google"===t&&this.supported.fallback}}).extend({request:function(t,e,i,n){this.api&&this.api.scope(this.proxy((function(){this.api.request("api.checkout.pay",t,e).done(this.proxy(i)).fail(this.proxy(n))})))},update:function(t){var e=J();return this.request("methods",t,(function(t,i){this.onUpdate(t,i),e.resolveWith(this,[i])}),(function(t,i){this.onError(t,i),e.rejectWith(this,[i])})),e},onUpdate:function(t,e){this.setPayload(e.serialize())},onError:function(t,e){this.trigger("error",e)},isPending:function(){return!0===this.pendingState},setPending:function(t){var e=this;this.pendingState=t,clearTimeout(this.pendingTimeoutEvent),this.pendingTimeoutEvent=setTimeout((function(){e.trigger("pending",t)}),100)},beforeCallback:function(t){t.resolve()},setBeforeCallback:function(t){return v(t)&&(this.beforeCallback=t),this},before:function(){return this.beforeDeferred||(this.beforeDeferred=J(),this.beforeDeferred.always(this.proxy((function(){this.beforeDeferred=null}))),this.beforeCallback(this.beforeDeferred)),this.beforeDeferred},pay:function(t){if(!this.isPending()){this.setPending(!0);var e=this.getProviderPayload(t),i=J();return i.always((function(){this.setPending(!1)})),!1===this.isMethodSupported(t)?i.rejectWith(this,[{test:!0}]):(this.isFallbackMethod(t)?this.makePaymentFallback(i,e.methods):this.makeNativePayment(i,e),i.done((function(t){this.trigger("details",{payment_system:this.payload.payment_system,data:t})})).fail((function(t){this.trigger("error",t),!0===this.params.embedded&&(location.reload(),this.trigger("reload",this.params))})))}},makeNativePayment:function(t,e){var i=this,n=S(e.methods,e.details,e.options);this.addEvent(n,"merchantvalidation","merchantValidation"),n.canMakePayment().then((function(){n.show().then((function(e){e.complete("success").then((function(){t.resolveWith(i,[e.details])}))})).catch((function(e){t.rejectWith(i,[{code:e.code,message:e.message}])}))})).catch((function(e){t.rejectWith(i,[{code:e.code,message:e.message}])}))},makePaymentFallback:function(t,e){var i=this;ot.load().then((function(){ot.show(e).then((function(e){t.resolveWith(i,[e])})).catch((function(e){t.rejectWith(i,[{code:e.code,message:e.message}])}))}))},appleSession:function(t){var e=J();return this.request("session",t,(function(t,i){e.resolveWith(this,[i.serialize()])}),(function(t,i){e.rejectWith(this,[i])})),e},merchantValidation:function(t,e){var i=e.validationURL,n=location.host;this.appleSession({url:i,domain:n,merchant_id:this.merchant}).done((function(t){try{e.complete(t.data)}catch(t){this.trigger("error",t)}})).fail((function(t){this.trigger("error",t)}))}}),ct=K.extend({defaults:{method:null,appendTo:null,className:"payment-element",origin:q,endpoint:j.element,mode:"plain",color:"black",lang:"en",height:38},init:function(t){this.params={},this.utils.extend(this.params,this.defaults),this.utils.extend(this.params,t),this.initElement()},getElementUrl:function(){return[this.params.origin,this.params.endpoint].join("")},getElementOptions:function(){return this.utils.param({method:this.params.method,mode:this.params.mode,style:this.params.style,color:this.params.color,lang:this.params.lang})},initElement:function(){this.element=this.utils.createElement("div"),this.iframe=this.utils.createElement("iframe"),this.button=this.utils.createElement("a"),this.addCss(this.element,B),this.addCss(this.button,F),this.addAttr(this.button,U),this.addCss(this.iframe,W),this.addAttr(this.iframe,z),this.addAttr(this.iframe,{src:[this.getElementUrl(),this.getElementOptions()].join("?")}),this.addEvent(this.iframe,"load","onloadConnector"),this.addEvent(this.iframe,"error","errorConnector"),this.addAttr(this.element,{class:this.params.className}),this.element.appendChild(this.iframe),this.element.appendChild(this.button)},errorConnector:function(){},onloadConnector:function(){this.connector=new Q({target:this.iframe.contentWindow,origin:this.params.origin})},send:function(t,e){this.connector&&this.connector.send(t,e)},onEvent:function(t,e){if(e.preventDefault(),this.pending)return!1;this.send("event",{type:e.type})},onClick:function(){if(this.pending)return!1;this.request.before().done(this.proxy("onClickDone")).fail(this.proxy("onClickFail"))},onClickDone:function(){this.request.pay(this.params.method)},onClickFail:function(){},onSupported:function(t,e){e.provider.includes(this.params.method)&&this.mount()},onPayload:function(t,e){e.allowed.includes(this.params.method)&&this.show()},onPending:function(t,e){this.pending=e,this.send("pending",{state:e})},initEvents:function(){this.addEvent(this.button,"mouseenter","onEvent"),this.addEvent(this.button,"mouseleave","onEvent"),this.addEvent(this.button,"blur","onEvent"),this.addEvent(this.button,"focus","onEvent"),this.addEvent(this.button,"click","onClick")},setPaymentRequest:function(t){if(!(t instanceof lt))throw Error("request is not instance of PaymentRequestApi");this.request=t;var e=this.proxy("onSupported"),i=this.proxy("onPayload"),n=this.proxy("onPending");return this.request.off("supported",e).on("supported",e),this.request.off("payload",i).on("payload",i),this.request.off("pending",n).on("pending",n),this},appendTo:function(t){var e=this.utils.querySelector(t);return e&&e.appendChild(this.element),this.initEvents(),this},mount:function(){this.appendTo(this.params.appendTo)},isMounted:function(){return document.body.contains(this.element)},show:function(){return!1===this.isMounted()||(this.addCss(this.iframe,{transition:"opacity 0.6s 0.4s ease-out",opacity:this.utils.cssUnit(1)}),this.addCss(this.element,{transition:"height 0.2s ease-out",height:this.utils.cssUnit(this.params.height,"px")}),this.trigger("show",{})),this},hide:function(){return!1===this.isMounted()||(this.addCss(this.iframe,{transition:"opacity 0.4s ease-out",opacity:this.utils.cssUnit(0)}),this.addCss(this.element,{transition:"height 0.2s 0.4s ease-out",height:this.utils.cssUnit(0,"px")}),this.trigger("hide",{})),this}}),dt=K.extend({defaults:{origin:q,endpoint:j,methods:["apple","google"],element:null,style:{height:38,mode:"default",type:"long",color:"black"},data:{lang:"en"},before:function(t){t.resolve()}},init:function(t){this.elements={},this.supported=!1,this.params={element:t.element,methods:t.methods||this.defaults.methods,origin:t.origin||this.defaults.origin,endpoint:this.utils.extend({},this.defaults.endpoint,t.endpoint),style:this.utils.extend({},this.defaults.style,t.style),before:t.before||this.defaults.before,data:this.utils.extend({},this.defaults.data,t.data)},this.initApi(t.api),this.initPaymentRequestApi(),this.initElements(),this.initData()},initData:function(){var t=this.params.data;t.merchant_id&&(t.currency&&t.amount||t.token)&&this.update()},initApi:function(t){this.api=t instanceof st?t:new st({origin:this.params.origin,endpoint:this.params.endpoint})},initPaymentRequestApi:function(){this.request=new lt,this.request.setApi(this.api),this.request.setMerchant(this.params.data.merchant_id),this.request.setBeforeCallback(this.params.before),this.request.on("details",this.proxy("onDetails")),this.request.on("error",this.proxy("onError"))},initElements:function(){var t=this.params.style,e=this.params.data,i=this.params.origin,n=this.params.element,r=this.params.endpoint.element,s=this.request;this.container=this.utils.querySelector(this.params.element),this.addCss(this.container,{display:"flex",gap:"1rem","flex-direction":"column"}),_(this.params.methods,(function(o){new ct({origin:i,endpoint:r,method:o,appendTo:n,color:t.color,mode:t.mode,lang:e.lang,height:t.height}).setPaymentRequest(s)})),s.getSupportedMethods()},update:function(t){return this.request.update(this.utils.extend(this.params.data,t||{}))},onDetails:function(t,e){var i=this;this.api.scope((function(){i.api.request("api.checkout.form","request",i.utils.extend({},i.params.data,e)).done(i.proxy("onSuccess")).fail(i.proxy("onError"))}))},onSuccess:function(t,e){this.trigger("success",e)},onError:function(t,e){this.trigger("error",e)}}),pt=K.extend({defaults:{element:null,method:"card",data:{lang:"en"},style:{}},init:function(t){this.initParams(t),this.initEvents()},initParams:function(t){this.params=this.utils.extend({},this.defaults,t),this.element=this.utils.querySelector(this.params.element),this.connector=new Q({target:window.parent}),this.payment=new lt({embedded:!0})},extendParams:function(t){this.utils.extend(this.params,{method:t.method,style:t.style,data:t.data,css:t.css})},getGoogleLangSupport:function(t,e){return-1!==D.indexOf(t)?t:e},getButtonColor:function(t){return I[t]||N},getGoogleSvg:function(t,e,i){var n={endpoint:"https://www.gstatic.com/instantbuy/svg",color:this.getButtonColor(t),mode:i||"plain",lang:e||"en"},r='url("{endpoint}/{color}/{mode}/{lang}.svg")';return"plain"===i&&(r='url("{endpoint}/{color}_gpay.svg")'),"buy"===i&&(r='url("{endpoint}/{color}/{lang}.svg")'),this.utils.stringFormat(r,n)},getAppleSvg:function(t){var e={color:this.getButtonColor(t)};return this.utils.stringFormat('url("svg/apple-pay-{color}.svg")',e)},getAppleLabel:function(t){return G[t||"en"]},addFrameImage:function(){var t=this.utils.querySelector("iframe",this.element)||this.utils.createElement("iframe"),e=this.params.style||{},i=this.getGoogleLangSupport(this.params.data.lang,"en"),n={buttonColor:e.color||"black",browserLocale:i,buttonSizeMode:"fill"},r=["https://pay.google.com/gp/p/generate_gpay_btn_img",this.utils.param(n)].join("?");this.addAttr(t,{scrolling:"no",frameborder:0,src:r}),this.element.appendChild(t),this.element.classList.remove("short","long")},styleButton:function(){var t=this.element,e=this.params,i=e.method,n=e.style||{},r=e.data.lang||"en",s=e.css||{};t.setAttribute("class",""),t.classList.add("button","pending"),"card"===i&&(i="google"),i&&t.classList.add(i),t.classList.add(r),n.type&&t.classList.add(n.type),n.mode&&t.classList.add(n.mode),n.color&&t.classList.add(n.color),"google"===i&&("short"===n.type&&(n.mode="plain"),"default"===n.mode?this.addFrameImage():s.image=this.getGoogleSvg(n.color,r,n.mode)),"apple"===i&&(s.image=this.getAppleSvg(n.color),s.label=this.getAppleLabel(r,n.mode)),this.utils.forEach(s,(function(e,i){t.style.setProperty(["--",i].join(""),e)}))},initEvents:function(){this.payment.on("details",this.proxy((function(t,e){this.connector.send("details",e),this.connector.send("complete",e)}))),this.payment.on("reload",this.proxy((function(t,e){this.connector.send("reload",e)}))),this.payment.on("error",this.proxy((function(t,e){this.connector.send("error",e)}))),this.connector.on("options",this.proxy((function(t,e){this.extendParams(e),this.styleButton()}))),this.connector.on("pay",this.proxy((function(){if(!this.element.classList.contains("pending"))if("apple"===this.params.method){var t=this.payment.payload||{},e=t.provider.apple||{};this.connector.send("pay",{payment_system:t.payment_system,methods:e.methods,details:e.details,options:e.options})}else this.payment.setSupported({fallback:!1,provider:["google"]}).pay("google")}))),this.connector.on("config",this.proxy((function(t,e){this.payment.setPayload(e=function(t){var e={payment_system:t.payment_system,provider:{},allowed:[]},i=t.methods||[],n=t.details||{},r=t.options||{},s=new RegExp("//([a-z]+)\\.com/");return i.forEach((function(t){var i=s.exec(t.supportedMethods);null!==i&&(e.provider[i[1]]={methods:[t],details:n,options:r})})),e}(e)),e.payment_system&&Object.keys(e.provider).length>0?(this.element.classList.remove("pending"),this.element.classList.add("ready"),this.connector.send("show",{})):this.connector.send("hide",{})}))),this.connector.on("event",this.proxy((function(t,e){"mouseenter"===e.type&&this.element.classList.add("hover"),"mouseleave"===e.type&&this.element.classList.remove("hover"),"focusin"===e.type&&this.element.classList.add("active"),"focusout"===e.type&&this.element.classList.remove("active")})))}}),ft=st.extend({init:function(t){this.initParams(t),this.initWidget()},initWidget:function(){this.initOptions(this.params.options),this.utils.isString(this.params.element)&&this.initElement(this.params.element)},initOptions:function(){this.utils.isPlainObject(this.params.options)&&(this.params.options=this.params.options||{})},initElement:function(t){},addSelectorEvent:function(t,e,i){return this.each(this.utils.querySelectorAll(t),(function(t,n){this.addEvent(n,e,i)})),this},getRequestParams:function(){return{}},sendRequest:function(t,e){e.defaultPrevented||(e.preventDefault(),this.trigger("request",this.getRequestParams(t)),this.scope((function(){this.request("api.checkout.form","request",this.getRequestParams(t)).done(this.proxy("onSuccess")).fail(this.proxy("onError")).progress(this.proxy("onProgress"))})))},onProgress:function(t,e){this.trigger("progress",e)},onSuccess:function(t,e){e.sendResponse(),e.submitToMerchant(),this.trigger("success",e)},onError:function(t,e){this.trigger("error",e)}}),mt=K.extend({init:function(t){this.setFormElement(t)},setFormElement:function(t){this.utils.isElement(t)&&(this.form=t)},getData:function(t){var e=this.deparam(this.serializeArray());return!0===t?this.utils.cleanObject(e):e},serializeArray:function(){var t=this.utils.toArray(this.form.elements);return this.utils.map(t,(function(t){if(!t.disabled&&""!==t.name&&(!t.type.match("checkbox|radio")||t.checked))return{name:t.name,value:t.value}}))},serializeAndEncode:function(){return this.utils.map(this.serializeArray(),(function(t){return[t.name,encodeURIComponent(t.value)].join("=")})).join("&")},deparam:function(t){var e,i={},n=/[^\[\]]+|\[\]$/g,r=function(t,e){var n,r=i,s=t.pop(),o=t.length;for(n=0;n<o;n++)r[t[n]]||(r[t[n]]=o===n+1&&"[]"===s?[]:{}),r=r[t[n]];"[]"===s?r.push(e):r[s]=e};for(e in t)t.hasOwnProperty(e)&&r(t[e].name.match(n),t[e].value);return i}}),gt=ft.extend({initElement:function(t){this.addSelectorEvent(t,"submit","sendRequest")},getRequestParams:function(t){return this.utils.extend({},this.params.options,new mt(t).getData())}}),yt=ft.extend({attributes:{},initElement:function(t){this.utils.isPlainObject(this.params.attributes)&&this.utils.extend(this.attributes,this.params.attributes),this.addSelectorEvent(t,"click","sendRequest")},getRequestParams:function(t){return this.utils.extend({},this.params.options,this.getElementData(t))},getElementData:function(t){var e={};return this.utils.forEach(this.attributes,(function(i,n){t.hasAttribute(n)&&(e[i]=t.getAttribute(n))})),e}});return n.add("Api",st),n.add("Connector",Q),n.add("PaymentButton",dt),n.add("PaymentRequestApi",lt),n.add("PaymentElement",ct),n.add("FormWidget",gt),n.add("ButtonWidget",yt),n.Utils=A,n.Config=V,n.Api=st,n.Module=K,n.Connector=Q,n.Response=rt,n.PaymentRequestApi=lt,n.PaymentContainer=pt,n.PaymentElement=ct,n.PaymentButton=dt,n}));
|
|
2
2
|
//# sourceMappingURL=checkout.js.map
|
package/dist/umd/checkout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sources":["../../src/core/component.js","../../src/core/utils.js","../../src/core/config.js","../../src/core/deferred.js","../../src/core/class.js","../../src/core/event.js","../../src/core/module.js","../../src/core/connector.js","../../src/views/template/acs.js","../../src/views/template/acs_styles.js","../../src/core/template.js","../../src/core/modal.js","../../src/core/model.js","../../src/core/response.js","../../src/core/api.js","../../src/core/google/pay.js","../../src/core/payment/request.js","../../src/core/payment/element.js","../../src/core/payment/button.js","../../src/core/payment/container.js","../../src/core/widget/index.js","../../src/core/widget/form.js","../../src/core/widget/button.js","../../src/module.js"],"sourcesContent":["/**\n * Modules registry\n * @type {Object<string,any>}\n */\nconst modules = {}\n/**\n * @type {Object<string,any>}\n */\nconst instance = {}\n/**\n * @param {string} name\n * @param {Object} [params]\n * @returns {{}}\n */\nconst newModule = function (name, params) {\n if (!modules[name]) {\n throw Error(['module is undefined', name].join(' '))\n }\n return new modules[name](params || {})\n}\n\nconst addModule = function (name, module) {\n if (modules[name]) {\n throw Error(['module already added', name].join(' '))\n }\n modules[name] = module\n}\n\nexport function Component(name, params) {\n if (instance[name]) return instance[name]\n return (instance[name] = newModule(name, params))\n}\n\nComponent.get = function (name, params) {\n return newModule(name, params)\n}\n\nComponent.add = function (name, module) {\n addModule(name, module)\n return this\n}\n","const digitTest = /^\\d+$/\nconst keyBreaker = /([^\\[\\]]+)|(\\[\\])/g\nconst paramTest = /([^?#]*)(#.*)?$/\nconst r20 = /%20/g\nconst rbracket = /\\[\\]$/\nconst matchSymbol = /\\s([a-zA-Z]+)/\n\nconst prep = (str) => {\n return decodeURIComponent(str.replace(/\\+/g, ' '))\n}\nconst flatten = (array) => {\n let result = []\n forEach(array, (item) => {\n result = result.concat(isArray(item) ? flatten(item) : item)\n })\n return result\n}\n\nconst recursiveParams = (prefix, obj, next) => {\n if (isArray(obj)) {\n forEach(obj, (item, prop) => {\n if (rbracket.test(prefix)) {\n next(prefix, item)\n } else {\n recursiveParams(prefix + '[' + (isPlainObject(obj) ? prop : '') + ']', item, next)\n }\n })\n } else if (isPlainObject(obj)) {\n forEach(obj, (item, prop) => {\n recursiveParams(prefix + '[' + prop + ']', item, next)\n })\n } else {\n next(prefix, obj)\n }\n}\n\nexport const getType = (o) => {\n return {}.toString.call(o).match(matchSymbol)[1].toLowerCase()\n}\nexport const isPlainObject = (o) => {\n return !!o && typeof o === 'object' && o.constructor === Object\n}\n\nexport const isFunction = (o) => {\n return getType(o) === 'function'\n}\n\nexport const isArray = (o) => {\n return getType(o) === 'array'\n}\n\nexport const isElement = (o) => {\n return o && o.nodeType === 1\n}\n\nexport const toArray = (o) => {\n return [].slice.call(o)\n}\n\nexport const hasProp = (o, v) => {\n return o && o.hasOwnProperty(v)\n}\n\nexport const forEach = (ob, cb, cx) => {\n for (let p in ob) if (hasProp(ob, p)) cb.call(cx || null, ob[p], p)\n}\n\nexport const cleanObject = (ob) => {\n for (let p in ob) {\n if (hasProp(ob, p)) {\n if (ob[p].length === 0) {\n if (isArray(ob)) ob.splice(p, 1)\n if (isPlainObject(ob)) delete ob[p]\n } else if (isPlainObject(ob[p])) {\n cleanObject(ob[p])\n }\n }\n }\n return ob\n}\n\nexport const extend = (obj, ...args) => {\n forEach(args, function (o) {\n if (o !== null) {\n forEach(o, function (value, key) {\n if (isPlainObject(value)) {\n obj[key] = extend(obj[key] || {}, value)\n } else {\n obj[key] = value\n }\n })\n }\n })\n return obj\n}\n\nexport const uuid = () => {\n let a = 0,\n b = ''\n while (a++ < 36) {\n if ((a * 51) & 52) {\n b += (a ^ 15 ? 8 ^ (Math.random() * (a ^ 20 ? 16 : 4)) : 4).toString(16)\n } else {\n b += '-'\n }\n }\n return b\n}\n\nexport const isObject = (o) => {\n return getType(o) === 'object'\n}\n\nexport const isRegexp = (o) => {\n return getType(o) === 'regexp'\n}\n\nexport const isArguments = (o) => {\n return getType(o) === 'arguments'\n}\n\nexport const isError = (o) => {\n return getType(o) === 'error'\n}\n\nexport const isDate = (o) => {\n return getType(o) === 'date'\n}\n\nexport const isString = (o) => {\n return getType(o) === 'string'\n}\n\nexport const isNumber = (o) => {\n return getType(o) === 'number'\n}\n\nexport const map = (ob, cb, cx) => {\n let p,\n t,\n r = []\n for (p in ob) if (hasProp(ob, p)) if ((t = cb.call(cx || null, ob[p], p)) !== undefined) r[p] = t\n return r\n}\n\nexport const querySelectorAll = (o, p) => {\n return toArray((p || document).querySelectorAll(o))\n}\n\nexport const querySelector = (o, p) => {\n return (p || document).querySelector(o)\n}\n\nexport const deparam = (params) => {\n const data = {}\n if (params.charAt(0) === '?') params = params.slice(1)\n if (params && paramTest.test(params)) {\n forEach(params.split('&'), (pair) => {\n let parts = pair.split('='),\n key = prep(parts.shift()),\n value = prep(parts.join('=')),\n current = data\n if (key) {\n parts = key.match(keyBreaker)\n for (let j = 0, l = parts.length - 1; j < l; j++) {\n if (!current[parts[j]]) {\n current[parts[j]] = digitTest.test(parts[j + 1]) || parts[j + 1] === '[]' ? [] : {}\n }\n current = current[parts[j]]\n }\n const lastPart = parts.pop()\n if (lastPart === '[]') {\n current.push(value)\n } else {\n current[lastPart] = value\n }\n }\n })\n }\n return data\n}\n\nexport const param = (obj) => {\n const result = []\n forEach(obj, (item, prop) => {\n recursiveParams(prop, item, (key, value) => {\n value = value == null ? '' : value\n result.push([encodeURIComponent(key), encodeURIComponent(value)].join('='))\n })\n })\n return result.join('&').replace(r20, '+')\n}\n\nexport const removeElement = (el) => {\n el.parentNode.removeChild(el)\n}\n\nexport const createElement = (tag) => {\n return document.createElement(tag)\n}\n\nexport const addClass = (...args) => {\n const el = args.shift()\n if (isElement(el) === false) return\n const classList = el.className.trim().split(/\\s+/)\n const tokens = flatten(args.map((item) => item.trim().split(/\\s+/)))\n tokens.forEach((token) => {\n if (token && !~classList.indexOf(token)) {\n classList.push(token)\n }\n })\n el.className = classList.join(' ').trim()\n}\n\nexport const removeClass = (...args) => {\n const el = args.shift()\n if (isElement(el) === false) return\n const classList = el.className.trim().split(/\\s+/)\n const tokens = flatten(args.map((item) => item.trim().split(/\\s+/)))\n tokens.forEach((token) => {\n if (token) {\n const index = classList.indexOf(token)\n if (!!~index) {\n classList.splice(index, 1)\n }\n }\n })\n el.className = classList.join(' ').trim()\n}\n\nexport const removeAttr = (el, attrs) => {\n if (isElement(el) === false) return false\n if (isPlainObject(attrs)) {\n forEach(attrs, (value) => {\n el.removeAttribute(value)\n })\n }\n}\n\nexport const addAttr = (el, attrs) => {\n if (isElement(el) === false) return false\n if (isPlainObject(attrs)) {\n forEach(attrs, (value, name) => {\n el.setAttribute(name, value)\n })\n }\n}\n\nexport const getStyle = (el, prop, getComputedStyle) => {\n getComputedStyle = window.getComputedStyle\n return (getComputedStyle ? getComputedStyle(el) : el['currentStyle'])[\n prop.replace(/-(\\w)/gi, function (word, letter) {\n return letter.toUpperCase()\n })\n ]\n}\n\nexport const getPath = (path) => {\n const props = path.split('.')\n const first = props.shift()\n let value = null\n if (hasProp(window, first)) {\n value = window[first]\n forEach(props, (name) => {\n value = hasProp(value, name) ? value[name] : null\n })\n }\n return value\n}\n\nexport const stringFormat = (format, params, expr) => {\n return (format || '').replace(expr || /{(.+?)}/g, (match, prop) => {\n return params[prop] || match\n })\n}\n\nexport const cssUnit = (value, unit) => {\n return String(value || 0)\n .concat(unit || '')\n .concat(' !important')\n}\n/**\n * @function\n * @type {function(*, *, *)}\n */\nexport const getPaymentRequest = ((cx) => {\n let NativePaymentRequest\n if (hasProp(cx, 'PaymentRequest') && isFunction(cx.PaymentRequest)) {\n NativePaymentRequest = cx.PaymentRequest\n }\n return (methods, details, options) => {\n let request = null\n details = details || {}\n details.id = uuid()\n options = options || {}\n if (NativePaymentRequest) {\n try {\n request = new NativePaymentRequest(methods, details, options)\n } catch (e) {\n request = null\n }\n }\n return request\n }\n})(window)\n\nexport const jsonParse = (value, defaults) => {\n try {\n return JSON.parse(value)\n } catch (e) {\n return defaults\n }\n}\n","export const ApiOrigin = 'https://pay.flitt.com'\n\nexport const ApiEndpoint = {\n gateway: '/latest/checkout-v2/index.html',\n element: '/latest/checkout-v2/button/element.html',\n}\n\nexport const ProxyUrl = 'http://secure-redirect.cloudipsp.com/submit/'\n\nexport const GooglePayApi = 'https://pay.google.com/gp/p/js/pay.js'\n\nexport const GoogleBaseRequest = {\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],\n allowedCardNetworks: ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'],\n },\n },\n ],\n}\n\nexport const GooglePayLanguages = [\n 'ar',\n 'bg',\n 'ca',\n 'zh',\n 'hr',\n 'cs',\n 'da',\n 'nl',\n 'en',\n 'et',\n 'fi',\n 'fr',\n 'de',\n 'el',\n 'id',\n 'it',\n 'ja',\n 'ko',\n 'ms',\n 'no',\n 'pl',\n 'pt',\n 'ru',\n 'sr',\n 'sk',\n 'sl',\n 'es',\n 'sv',\n 'th',\n 'tr',\n 'uk',\n]\n\nexport const PaymentRequestDetails = {\n total: {\n label: 'Total',\n amount: {\n currency: 'USD',\n value: '0.00',\n },\n },\n}\n\nexport const ApiFrameCss = {\n width: '1px !important',\n height: '1px !important',\n left: '1px !important',\n bottom: '1px !important',\n position: 'fixed !important',\n border: '0px !important',\n}\n\nexport const ButtonFrameCss = {\n border: 'none !important',\n margin: '0 !important',\n padding: '0 !important',\n display: 'block !important',\n width: '1px !important',\n 'min-width': '100% !important',\n background: 'transparent !important',\n position: 'relative !important',\n opacity: '0 !important',\n overflow: 'hidden !important',\n height: '100% !important',\n outline: 'none !important',\n 'z-index': '1 !important',\n}\n\nexport const ButtonFrameAttrs = {\n tabindex: '-1',\n scrolling: 'no',\n frameborder: 0,\n allowtransparency: true,\n allowpaymentrequest: true,\n}\n\nexport const ButtonCoverCss = {\n 'z-index': '2 !important',\n position: 'absolute !important',\n border: 'none !important',\n background: 'transparent !important',\n left: '0 !important',\n top: '0 !important',\n cursor: 'pointer !important',\n outline: 'none !important',\n width: '100% !important',\n height: '100% !important',\n}\n\nexport const ButtonCoverAttrs = {\n role: 'button',\n 'aria-pressed': 'false',\n}\n\nexport const ButtonContainerCss = {\n border: '0 !important',\n margin: '0 !important',\n padding: '0 !important',\n display: 'block !important',\n background: 'transparent !important',\n 'user-select': 'none !important',\n overflow: 'hidden !important',\n position: 'relative !important',\n opacity: '1 !important',\n height: '0 !important',\n width: '100% !important',\n outline: 'none !important',\n}\n\nexport const ButtonDefaultColor = 'dark'\n\nexport const ButtonColorMap = {\n dark: 'dark',\n light: 'light',\n black: 'dark',\n white: 'light',\n}\n\nexport const ButtonLabelMap = {\n ar: '',\n bg: '',\n ca: '',\n zh: '',\n hr: '',\n cs: '',\n da: '',\n nl: '',\n en: 'Pay with',\n et: '',\n es: 'Comprar con',\n el: '',\n fi: '',\n fr: 'Acheter avec',\n de: 'Zahlen über',\n id: '',\n it: 'Acquista con',\n ja: '',\n ko: '',\n ms: '',\n no: '',\n pl: 'Zapłać przez',\n pt: '',\n ru: 'Оплатить через',\n sr: '',\n sk: 'Zaplatiť cez',\n sl: '',\n sv: '',\n th: '',\n tr: '',\n uk: 'Оплатити через',\n}\n","import { isFunction, forEach } from './utils.js'\n\nconst PENDING = 0\nconst RESOLVED = 1\nconst REJECTED = 2\nconst PROGRESS = 3\n\nexport function Deferred() {\n const resolveCallbacks = []\n const rejectCallbacks = []\n const notifyCallbacks = []\n let status = PENDING\n let resultContext = undefined\n let resultArgs = null\n let chainArgs = null\n const executeCallback = (context, args, callbacks) => {\n const list = [].concat(callbacks)\n const save = (chainArgs, isArgs) => {\n if (isArgs) {\n resultArgs = Array.from(chainArgs)\n } else {\n resultArgs = [chainArgs]\n }\n }\n const execute = () => {\n const item = list.shift()\n if (item) {\n chainArgs = item.apply(resultContext, resultArgs)\n if (chainArgs !== undefined) {\n if (chainArgs && chainArgs.then) {\n chainArgs.then((...chainArgs) => {\n save(chainArgs, true)\n execute()\n })\n } else {\n save(chainArgs)\n execute()\n }\n } else {\n execute()\n }\n }\n }\n resultContext = context\n resultArgs = args\n execute()\n }\n /**\n * @lends Deferred.prototype\n */\n const promise = {\n done(callback) {\n if (isFunction(callback)) {\n if (status === REJECTED) {\n callback.apply(resultContext, resultArgs)\n }\n resolveCallbacks.push(callback)\n }\n return this\n },\n fail(callback) {\n if (isFunction(callback)) {\n if (status === REJECTED) {\n callback.apply(resultContext, resultArgs)\n }\n rejectCallbacks.push(callback)\n }\n return this\n },\n progress(callback) {\n if (isFunction(callback)) {\n if (status === PROGRESS) {\n callback.apply(resultContext, resultArgs)\n }\n notifyCallbacks.push(callback)\n }\n return this\n },\n always(callback) {\n return this.done(callback).fail(callback)\n },\n then(resolve, reject, progress) {\n if (isFunction(resolve)) {\n this.done(resolve)\n }\n if (isFunction(reject)) {\n this.fail(reject)\n }\n if (isFunction(progress)) {\n this.progress(reject)\n }\n return this\n },\n promise(object) {\n if (object === null) {\n return promise\n }\n forEach(promise, (item, prop) => {\n object[prop] = item\n })\n return object\n },\n state: function () {\n return status\n },\n isPending() {\n return status === PENDING\n },\n isRejected() {\n return status === REJECTED\n },\n isResolved() {\n return status === RESOLVED\n },\n resetState() {\n status = PENDING\n return this\n },\n resolveWith(context, args) {\n if (status === PENDING) {\n status = RESOLVED\n executeCallback(context, args, resolveCallbacks)\n }\n return this\n },\n rejectWith(context, args) {\n if (status === PENDING) {\n status = REJECTED\n executeCallback(context, args, rejectCallbacks)\n }\n return this\n },\n notifyWith(context, args) {\n if (status === PENDING) {\n status = PROGRESS\n executeCallback(context, args, notifyCallbacks)\n status = PENDING\n }\n return this\n },\n\n resolve() {\n return this.resolveWith(this, Array.from(arguments))\n },\n reject() {\n return this.rejectWith(this, Array.from(arguments))\n },\n notify() {\n return this.notifyWith(this, Array.from(arguments))\n },\n }\n return promise\n}\n","let init = false\nconst fnTest = /xyz/.test(\n function () {\n return 'xyz'\n }.toString()\n)\n ? /\\b_super\\b/\n : /.*/\n\nexport function ClassObject() {}\n\nClassObject.prototype._super = function () {}\n\nClassObject.prototype.instance = function (params) {\n return new this.constructor(params)\n}\n\nClassObject.prototype.proxy = function (fn) {\n fn = typeof fn == 'string' ? this[fn] : fn\n return (function (cx, cb) {\n return function () {\n return cb.apply(cx, [this].concat(Array.prototype.slice.call(arguments)))\n }\n })(this, fn)\n}\n\nfunction superMethod(parent, name, method) {\n return function () {\n let temp = this._super,\n result\n this._super = parent[name]\n result = method.apply(this, arguments)\n this._super = temp\n return result\n }\n}\n\nfunction assign(target, instance) {\n let prop,\n proto,\n parent = target.prototype\n init = true\n proto = new target()\n init = false\n for (prop in instance) {\n if (instance.hasOwnProperty(prop)) {\n if (\n typeof parent[prop] == 'function' &&\n typeof instance[prop] == 'function' &&\n fnTest.test(instance[prop])\n ) {\n proto[prop] = superMethod(parent, prop, instance[prop])\n } else {\n proto[prop] = instance[prop]\n }\n }\n }\n return proto\n}\n\nClassObject.extend = function extend(instance) {\n function Class() {\n if (!init && this) this['init'].apply(this, arguments)\n }\n Class.prototype = assign(this, instance)\n Class.prototype.constructor = Class\n Class.extend = extend\n return Class\n}\n","import { ClassObject } from './class.js'\n\nexport const Event = ClassObject.extend({\n init() {\n this.events = {}\n this.empty = []\n },\n on(type, callback) {\n ;(this.events[type] = this.events[type] || []).push(callback)\n return this\n },\n off(type, callback) {\n type || (this.events = {})\n let list = this.events[type] || this.empty,\n i = (list.length = callback ? list.length : 0)\n while (i--) callback === list[i] && list.splice(i, 1)\n return this\n },\n trigger(type) {\n let e = this.events[type] || this.empty,\n list = e.length > 0 ? e.slice(0, e.length) : e,\n i = 0,\n j\n while ((j = list[i++])) j.apply(j, this.empty.slice.call(arguments, 1))\n return this\n },\n})\n","import { ClassObject } from './class.js'\nimport { Event } from './event.js'\nimport * as Utils from './utils.js'\n\nexport const Module = ClassObject.extend({\n utils: Utils,\n getListener() {\n if (!this._listener_) this._listener_ = new Event()\n return this._listener_\n },\n destroy() {\n this.off()\n },\n on(type, callback) {\n this.getListener().on(type, callback)\n return this\n },\n off(type, callback) {\n this.getListener().off(type, callback)\n return this\n },\n proxy(fn) {\n if (!this._proxy_cache_) this._proxy_cache_ = {}\n if (this.utils.isString(fn)) {\n if (!this._proxy_cache_[fn]) {\n this._proxy_cache_[fn] = this._super(fn)\n }\n return this._proxy_cache_[fn]\n }\n return this._super(fn)\n },\n trigger() {\n this.getListener().trigger.apply(this.getListener(), arguments)\n return this\n },\n each(ob, cb) {\n this.utils.forEach(ob, this.proxy(cb))\n },\n addAttr(el, ob) {\n if (!this.utils.isElement(el)) return false\n this.utils.forEach(ob, function (v, k) {\n el.setAttribute(k, v)\n })\n },\n addCss(el, ob) {\n if (!this.utils.isElement(el)) return false\n this.utils.forEach(\n ob,\n function (v, k) {\n this.addCssProperty(el, k, v)\n },\n this\n )\n },\n addCssProperty(el, style, value) {\n let result = el.style.cssText.match(\n new RegExp('(?:[;\\\\s]|^)(' + style.replace('-', '\\\\-') + '\\\\s*:(.*?)(;|$))')\n ),\n idx\n if (result) {\n idx = result.index + result[0].indexOf(result[1])\n el.style.cssText =\n el.style.cssText.substring(0, idx) +\n style +\n ': ' +\n value +\n ';' +\n el.style.cssText.substring(idx + result[1].length)\n } else {\n el.style.cssText += ' ' + style + ': ' + value + ';'\n }\n },\n addEvent(el, ev, cb) {\n if (!el || !ev || !cb) return false\n cb = this.proxy(cb)\n if (el.addEventListener) el.addEventListener(ev, cb)\n else if (el['attachEvent']) el['attachEvent']('on' + ev, cb)\n },\n removeEvent(el, ev, cb) {\n if (!el || !ev || !cb) return false\n cb = this.proxy(cb)\n if (el.removeEventListener) el.removeEventListener(ev, cb, false)\n else if (el['detachEvent']) el['detachEvent']('on' + ev, cb)\n },\n prepareForm(url, data, target, method) {\n const form = this.utils.createElement('form')\n this.addAttr(form, {\n action: url,\n target: target || '_self',\n method: method || 'POST',\n })\n this.addCss(form, {\n display: 'none',\n })\n this.utils.forEach(\n data,\n function (v, k, el) {\n el = this.utils.createElement('input')\n el.type = 'hidden'\n el.name = k\n el.value = v\n form.appendChild(el)\n },\n this\n )\n return form\n },\n})\n","import { Module } from './module.js'\n\nexport const Connector = Module.extend({\n ns: 'crossDomain',\n origin: '*',\n uniqueId: 1,\n signature: null,\n init(params) {\n this.setTarget(params.target)\n this.setOrigin(params.origin)\n this.create()\n },\n create() {\n this.addEvent(window, 'message', 'router')\n },\n setOrigin(origin) {\n this.origin = origin || '*'\n },\n setTarget(target) {\n this.target = target\n return this\n },\n getUID() {\n return ++this.uniqueId\n },\n destroy() {\n this.removeEvent(window, 'message', 'router')\n this._super()\n },\n router(window, ev, response) {\n if (this.target !== ev.source) return false\n try {\n response = JSON.parse(ev.data)\n } catch (e) {}\n if (response && response.action && response.data) {\n this.trigger(response.action, response.data)\n }\n },\n send(action, data, request, options) {\n if (!this.target) {\n return\n }\n request = JSON.stringify({\n action: action,\n data: data,\n })\n options = {\n targetOrigin: this.origin,\n delegate: 'payment',\n }\n try {\n this.target.postMessage(request, options)\n } catch (e) {\n this.target.postMessage(request, this.origin, [])\n }\n },\n})\n","import styles from './acs_styles.js'\n\nexport default (data) => `\n${styles(data)}\n<div class=\"flitt-modal-wrapper\">\n <div class=\"flitt-modal\">\n <div class=\"flitt-modal-header\">\n <a href=\"javascript:void(0)\" class=\"flitt-modal-close\"></a>\n <div class=\"flitt-modal-title\">\n ${data.messages.modalHeader}\n <a href='javascript:void(0)'>${data.messages.modalLinkLabel}</a>\n </div>\n </div>\n <div class=\"flitt-modal-content\">\n <iframe src=\"about:blank\" class=\"flitt-modal-iframe\" frameborder=\"0\" allowtransparency=\"true\"></iframe>\n </div>\n </div>\n</div>\n`\n","export default (data) => `\n<style>\n .flitt-modal {\n box-sizing: border-box;\n margin: 100px auto;\n max-width: 680px;\n background-color: #fff;\n border-radius: 5px;\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n }\n\n @media (max-width: 850px) {\n .flitt-modal {\n margin: 50px auto;\n }\n }\n\n @media (max-width: 695px) {\n .flitt-modal {\n max-width: 100%;\n margin: 5px;\n }\n }\n\n .flitt-modal-wrapper {\n box-sizing: border-box;\n overflow: auto;\n position: fixed;\n z-index: 99999;\n left: 0;\n bottom: 0;\n top: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.2);\n }\n\n .flitt-modal-header {\n box-sizing: border-box;\n background-color: #fafafa;\n height: 50px;\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n }\n\n .flitt-modal-close {\n box-sizing: border-box;\n float: right;\n overflow: hidden;\n height: 50px;\n text-decoration: none;\n border-top-right-radius: 5px;\n color: #949494;\n }\n\n .flitt-modal-close:hover, .flitt-modal-close:focus, .flitt-modal-close:active {\n text-decoration: none;\n color: #646464;\n }\n\n .flitt-modal-close:before {\n content: \"×\";\n font-size: 50px;\n line-height: 50px;\n padding: 0 10px;\n }\n\n .flitt-modal-title {\n box-sizing: border-box;\n border-top-left-radius: 5px;\n line-height: 20px;\n height: 50px;\n padding: 5px 15px;\n font-size: 12px;\n display: table-cell;\n vertical-align: middle;\n }\n .flitt-modal-content {\n box-sizing: border-box;\n border-bottom-left-radius: 5px;\n min-height: 650px;\n }\n .flitt-modal-iframe {\n overflow-x: hidden;\n border: 0;\n display: block;\n width: 100%;\n height: 750px;\n }\n</style>\n`\n","import { ClassObject } from './class.js'\n\nimport * as Views from '../views/index.js'\n\nfunction empty(name) {\n return function (data) {\n return ['template', name, 'not found'].join(' ')\n }\n}\n\nexport const Template = ClassObject.extend({\n init(name) {\n this.view = Views[name] || empty(name)\n },\n render(data) {\n return this.view(data)\n },\n})\n","import { Module } from './module.js'\nimport { Connector } from './connector.js'\nimport { Template } from './template.js'\n\nexport const Modal = Module.extend({\n init(data) {\n this.checkout = data.checkout\n this.model = data.model || {}\n this.messages = data.checkout.params.messages || {}\n this.template = new Template('acs')\n this.body = this.utils.querySelector('body')\n this.initModal()\n this.initConnector()\n },\n initModal() {\n this.name = ['modal-iframe', this.getRandomNumber()].join('-')\n this.modal = this.utils.createElement('div')\n this.modal.innerHTML = this.template.render({\n model: this.model,\n messages: this.messages,\n })\n this.iframe = this.find('.flitt-modal-iframe')\n this.addAttr(this.iframe, { name: this.name, id: this.name })\n if (this.model['send_data']) {\n this.form = this.prepareForm(this.model['url'], this.model['send_data'], this.name)\n this.modal.appendChild(this.form)\n } else {\n this.iframe.src = this.model['url']\n }\n this.addEvent(this.find('.flitt-modal-close'), 'click', 'closeModal')\n this.addEvent(this.find('.flitt-modal-title a'), 'click', 'submitForm')\n this.initScrollbar()\n this.body.appendChild(this.modal)\n if (this.form) {\n this.form.submit()\n }\n },\n measureScrollbar() {\n const scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.body.appendChild(scrollDiv)\n this.utils.removeElement(scrollDiv)\n return scrollDiv.offsetWidth - scrollDiv.clientWidth\n },\n checkScrollbar() {\n let documentElementRect\n let fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) {\n documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n },\n initScrollbar() {\n this.checkScrollbar()\n this.bodyPad = parseInt(this.utils.getStyle(this.body, 'padding-right') || 0, 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n this.originalOverflow = document.body.style.overflow || ''\n if (this.bodyIsOverflowing) {\n this.addCss(this.body, {\n paddingRight: [this.bodyPad + this.scrollbarWidth, 'px'].join(''),\n overflow: 'hidden',\n })\n }\n },\n resetScrollbar() {\n this.addCss(this.body, {\n paddingRight: this.originalBodyPad ? [this.originalBodyPad, 'px'].join('') : '',\n overflow: this.originalOverflow,\n })\n },\n getRandomNumber() {\n return Math.round(Math.random() * 1000000000)\n },\n find(selector) {\n return this.utils.querySelector(selector, this.modal)\n },\n closeModal(el, ev) {\n ev.preventDefault()\n this.trigger('close', this.data)\n this.removeModal()\n },\n submitForm(el, ev) {\n ev.preventDefault()\n this.trigger('submit', this.data)\n this.addAttr(this.form, {\n target: '_blank',\n })\n this.form.submit()\n },\n removeModal() {\n this.destroy()\n },\n destroy() {\n this.utils.removeElement(this.modal)\n this.resetScrollbar()\n this.connector.destroy()\n this._super()\n },\n initConnector() {\n this.connector = new Connector({ target: this.iframe.contentWindow })\n this.connector.on('response', this.proxy('onResponse'))\n },\n onResponse(ev, data) {\n this.sendResponse(data)\n this.removeModal()\n },\n sendResponse(data) {\n this.checkout.connector.send('request', {\n uid: data.uid,\n action: 'api.checkout.proxy',\n method: 'send',\n params: data,\n })\n },\n})\n","import { Module } from './module.js'\n\nexport const Model = Module.extend({\n init(data) {\n this.data = data || {}\n this.create()\n },\n create() {},\n eachProps(args) {\n const name = args[1] ? args[0] : null\n const callback = args[1] ? args[1] : args[0]\n const list = name ? this.alt(name, []) : this.data\n return {\n list: list,\n callback: callback,\n }\n },\n each() {\n const props = this.eachProps(arguments)\n for (let prop in props.list) {\n if (props.list.hasOwnProperty(prop)) {\n props.callback(this.instance(props.list[prop]), props.list[prop], prop)\n }\n }\n },\n filter() {\n const props = this.eachProps(arguments)\n for (let prop in props.list) {\n if (props.list.hasOwnProperty(prop)) {\n const item = this.instance(props.list[prop])\n if (props.callback(item, props.list[prop], prop)) {\n return props.list[prop]\n }\n }\n }\n },\n find() {\n const props = this.eachProps(arguments)\n for (let prop in props.list) {\n if (props.list.hasOwnProperty(prop)) {\n const item = this.instance(props.list[prop])\n if (props.callback(item, props.list[prop], prop)) {\n return item\n }\n }\n }\n return false\n },\n alt(prop, defaults) {\n prop = this.attr(prop)\n return typeof prop === 'undefined' ? defaults : prop\n },\n attr(key, value) {\n let i = 0,\n data = this.data,\n name = (key || '').split('.'),\n prop = name.pop(),\n len = arguments.length\n for (; i < name.length; i++) {\n if (data && data.hasOwnProperty(name[i])) {\n data = data[name[i]]\n } else {\n if (len === 2) {\n data = data[name[i]] = {}\n } else {\n break\n }\n }\n }\n if (len === 1) {\n return data ? data[prop] : undefined\n }\n if (len === 2) {\n data[prop] = value\n }\n return this\n },\n stringify() {\n return JSON.stringify(this.serialize())\n },\n serialize() {\n return this.data\n },\n})\n","import { Model } from './model.js'\nimport { ProxyUrl } from './config.js'\n\nexport const Response = Model.extend({\n stringFormat(string) {\n const that = this\n return (string || '').replace(/{(.+?)}/g, function (match, prop) {\n return that.attr(['order.order_data', prop].join('.')) || match\n })\n },\n setConnector(connector) {\n this.connector = connector\n return this\n },\n setUID(uid) {\n this.uid = uid\n return this\n },\n getUID() {\n return this.uid\n },\n formDataProxy(url, data, target, method) {\n location.assign(\n [\n ProxyUrl,\n JSON.stringify({\n url: url,\n params: data,\n target: target,\n method: method,\n }),\n ].join('#')\n )\n },\n formDataSubmit(url, data, target, method) {\n if (url.match(/^http:/)) {\n return this.formDataProxy(url, data, target, method)\n }\n const action = this.stringFormat(url)\n const form = this.prepareForm(action, data, target, method)\n const body = this.utils.querySelector('body')\n body.appendChild(form)\n form.submit()\n form.parentNode.removeChild(form)\n },\n inProgress() {\n return this.attr('order.in_progress')\n },\n readyToSubmit() {\n return this.attr('order.ready_to_submit')\n },\n waitForResponse() {\n return this.attr('order.pending')\n },\n needVerifyCode() {\n return this.attr('order.need_verify_code')\n },\n redirectUrl() {\n if (this.attr('url')) {\n this.redirectToUrl(this.attr('url'))\n return true\n }\n return false\n },\n redirectToUrl(url) {\n location.assign(url)\n },\n submitToMerchant() {\n const ready = this.attr('order.ready_to_submit')\n const url = this.attr('model.url') || this.attr('order.response_url')\n const method = this.attr('order.method')\n const action = this.attr('order.action')\n const data = this.attr('model.send_data') || this.attr('order.order_data')\n if (ready && url && data) {\n if (action === 'redirect' || data['get_without_parameters'] === true) {\n this.redirectToUrl(url)\n } else {\n this.formDataSubmit(url, data, '_self', method)\n }\n return true\n }\n },\n submitForm() {\n const method = this.attr('method')\n const url = this.attr('url')\n const data = this.attr('send_data')\n if (url && data) {\n this.formDataSubmit(url, data, '_self', method)\n return true\n }\n return false\n },\n sendResponse() {\n const action = this.attr('action')\n if (action === 'submit') return this.submitForm()\n if (action === 'redirect') return this.redirectUrl()\n return false\n },\n prepare3dsData() {\n const params = {}\n const data = this.attr('submit3ds')\n if (data['3ds']) {\n params.token = this.attr('token')\n params.uid = this.getUID()\n params.frame = true\n if (data['send_data'].TermUrl) {\n data['send_data'].TermUrl = [data['send_data'].TermUrl, this.utils.param(params)].join(\n '#!!'\n )\n }\n }\n return data\n },\n waitOn3dsDecline() {\n const data = this.alt('submit3ds.checkout_data', {\n js_wait_on_3ds_decline: false,\n js_wait_on_3ds_decline_duration: 0,\n })\n return data.js_wait_on_3ds_decline ? data.js_wait_on_3ds_decline_duration : 0\n },\n submit3dsForm() {\n if (this.attr('submit3ds.checkout_data')) {\n this.connector.trigger('modal', this.prepare3dsData())\n }\n },\n supportedMethod(method) {\n const item = this.find('methods', function (item) {\n return item.alt('supportedMethods', '').match(method)\n })\n if (item) {\n this.attr('methods', [item.serialize()])\n } else {\n this.attr('methods', [])\n }\n },\n})\n","import { Deferred } from './deferred.js'\nimport { Module } from './module.js'\nimport { Connector } from './connector.js'\nimport { Modal } from './modal.js'\nimport { Response } from './response.js'\nimport { ApiFrameCss, ApiOrigin, ApiEndpoint } from './config.js'\n\nexport const Api = Module.extend({\n defaults: {\n origin: ApiOrigin,\n endpoint: ApiEndpoint,\n messages: {\n modalHeader:\n 'Now you will be redirected to your bank 3DSecure. If you are not redirected please refer',\n modalLinkLabel: 'link',\n },\n },\n init(params) {\n this.initParams(params)\n },\n url(type, url) {\n return [this.params.origin, this.params.endpoint[type] || '/', url || ''].join('')\n },\n extendParams(params) {\n this.utils.extend(this.params, params)\n return this\n },\n initParams(params) {\n this.params = this.utils.extend({}, this.defaults)\n this.extendParams(params)\n this.setOrigin(this.params.origin)\n this.loaded = false\n this.created = false\n },\n setOrigin(origin) {\n if (this.utils.isString(origin)) {\n this.params.origin = origin\n }\n return this\n },\n scope(callback) {\n callback = this.proxy(callback)\n if (this.createFrame().loaded === true) {\n callback()\n } else {\n this.on('checkout.api', callback)\n }\n },\n request(model, method, params) {\n const defer = Deferred()\n const data = {\n uid: this.connector.getUID(),\n action: model,\n method: method,\n params: params || {},\n }\n this.connector.send('request', data)\n this.connector.on(\n data.uid,\n this.proxy(function (ev, response, model, action) {\n const responseModel = new Response(response)\n responseModel.setUID(data.uid)\n responseModel.setConnector(this.connector)\n action = 'resolveWith'\n if (responseModel.attr('submit3ds')) {\n action = 'notifyWith'\n }\n if (responseModel.attr('error')) {\n action = 'rejectWith'\n }\n defer[action](this, [responseModel])\n })\n )\n return defer\n },\n loadFrame(url) {\n this.iframe = this.utils.createElement('iframe')\n this.addAttr(this.iframe, {\n allowtransparency: true,\n frameborder: 0,\n scrolling: 'no',\n })\n this.addAttr(this.iframe, { src: url })\n this.addCss(this.iframe, ApiFrameCss)\n this.body = this.utils.querySelector('body')\n if (this.body.firstChild) {\n this.body.insertBefore(this.iframe, this.body.firstChild)\n } else {\n this.body.appendChild(this.iframe)\n }\n return this.iframe\n },\n createFrame() {\n if (this.created === false) {\n this.created = true\n this.iframe = this.loadFrame(this.url('gateway'))\n this.connector = new Connector({\n target: this.iframe.contentWindow,\n origin: this.params.origin,\n })\n this.connector.on('load', this.proxy('onLoadConnector'))\n this.connector.on('modal', this.proxy('onOpenModal'))\n }\n return this\n },\n onOpenModal(xhr, model) {\n this.modal = new Modal({\n checkout: this,\n model: model,\n })\n this.modal.on('close', this.proxy('onCloseModal'))\n },\n onCloseModal(modal, data) {\n this.trigger('modal.close', modal, data)\n },\n onLoadConnector() {\n this.loaded = true\n this.connector.off('load')\n this.trigger('checkout.api')\n this.off('checkout.api')\n },\n})\n","import { Deferred } from '../deferred.js'\nimport { Module } from '../module.js'\nimport { GooglePayApi, GoogleBaseRequest } from '../config.js'\n\nconst GooglePayClient = Module.extend({\n id: 'google-payments-api',\n init() {\n this.client = null\n this.wrapper = this.utils.querySelector('head')\n this.defer = Deferred()\n },\n load() {\n if (this.utils.getPath('google.payments.api.PaymentsClient')) {\n return this.defer.resolveWith(this)\n }\n if (this.utils.querySelector('#'.concat(this.id))) {\n return this.defer\n }\n this.script = this.utils.createElement('script')\n this.addAttr(this.script, {\n id: this.id,\n async: true,\n src: GooglePayApi,\n })\n this.utils.isElement(this.wrapper) && this.wrapper.appendChild(this.script)\n this.addEvent(this.script, 'load', 'onLoadSuccess')\n this.addEvent(this.script, 'error', 'onLoadError')\n return this.defer\n },\n show(methods) {\n const method = methods.find(function (item) {\n return item.supportedMethods === 'https://google.com/pay'\n })\n const client = this.getClient({ environment: method.data.environment })\n return client.loadPaymentData(method.data)\n },\n readyToPay(cx, response) {\n if (response.result) {\n this.defer.resolveWith(this)\n }\n },\n onError(cx, error) {\n this.defer.rejectWith(this, error)\n },\n onLoadSuccess() {\n const client = this.getClient()\n if (client)\n client\n .isReadyToPay(GoogleBaseRequest)\n .then(this.proxy('readyToPay'))\n .catch(this.proxy('onError'))\n },\n onLoadError() {\n this.defer.rejectWith(this)\n },\n getClient(options) {\n if (options || this.client === null) {\n const PaymentClient = this.utils.getPath('google.payments.api.PaymentsClient')\n if (PaymentClient) {\n this.client = new PaymentClient(options)\n } else {\n this.onError(null, new Error('Google Client Error'))\n }\n }\n return this.client\n },\n})\n\nexport const GooglePay = new GooglePayClient()\n","import { Module } from '../module.js'\nimport { Api } from '../api.js'\nimport { GooglePay } from '../google/pay.js'\nimport { Deferred } from '../deferred.js'\nimport { getPaymentRequest, hasProp, isFunction } from '../utils.js'\nimport { GoogleBaseRequest, PaymentRequestDetails } from '../config.js'\n\nconst getPaymentMethods = () => {\n return [\n [\n 'google',\n {\n supportedMethods: 'https://google.com/pay',\n data: GoogleBaseRequest,\n },\n ],\n [\n 'apple',\n {\n supportedMethods: 'https://apple.com/apple-pay',\n },\n () => hasProp(window, 'ApplePaySession'),\n ],\n ]\n}\n\nlet requestDeferred = null\n\nlet requestSupported = {\n fallback: false,\n provider: [],\n}\n\nconst getSupportedMethods = () => {\n if (requestDeferred) return requestDeferred\n requestDeferred = Deferred()\n const methods = getPaymentMethods()\n const details = PaymentRequestDetails\n ;(function check() {\n const item = methods.shift()\n if (item === undefined) {\n if (requestSupported.provider.indexOf('google') === -1) {\n requestSupported.fallback = true\n requestSupported.provider.push('google')\n }\n return requestDeferred.resolve(requestSupported)\n }\n const method = item.shift()\n const config = item.shift()\n const callback = item.shift()\n if (isFunction(callback) && callback() === false) {\n setTimeout(check, 25)\n return false\n }\n const request = getPaymentRequest([config], details, {})\n if (request) {\n request\n .canMakePayment()\n .then(function (status) {\n if (status === true) requestSupported.provider.push(method)\n setTimeout(check, 25)\n })\n .catch(function () {\n setTimeout(check, 25)\n })\n } else {\n setTimeout(check, 25)\n }\n })()\n return requestDeferred\n}\n\nconst PaymentRequestInterface = Module.extend({\n config: {\n payment_system: '',\n fallback: false,\n methods: [],\n details: {},\n options: {},\n },\n supported: {\n fallback: false,\n provider: [],\n },\n payload: {\n payment_system: null,\n provider: [],\n },\n params: {},\n getSupportedMethods() {\n return getSupportedMethods().then((supported) => {\n this.setSupported(supported)\n return supported\n })\n },\n init(params) {\n this.params = params || {}\n },\n setSupported(supported) {\n this.supported = supported\n this.trigger('supported', supported)\n return this\n },\n setPayload(payload) {\n this.payload = payload\n this.trigger('payload', payload)\n return this\n },\n setMerchant(merchant) {\n this.merchant = merchant\n },\n setApi(api) {\n if (api instanceof Api) this.api = api\n return this\n },\n getProviderPayload(method) {\n return this.payload.provider[method] || {}\n },\n isMethodSupported(method) {\n return this.supported.provider.indexOf(method) !== -1\n },\n isFallbackMethod(method) {\n return method === 'google' && this.supported.fallback\n },\n})\n\nexport const PaymentRequestApi = PaymentRequestInterface.extend({\n request(method, params, success, failure) {\n if (this.api) {\n this.api.scope(\n this.proxy(function () {\n this.api\n .request('api.checkout.pay', method, params)\n .done(this.proxy(success))\n .fail(this.proxy(failure))\n })\n )\n }\n },\n update(data) {\n const defer = Deferred()\n this.request(\n 'methods',\n data,\n function (cx, model) {\n this.onUpdate(cx, model)\n defer.resolveWith(this, [model])\n },\n function (cx, model) {\n this.onError(cx, model)\n defer.rejectWith(this, [model])\n }\n )\n return defer\n },\n onUpdate(cx, model) {\n this.setPayload(model.serialize())\n },\n onError(cx, model) {\n this.trigger('error', model)\n },\n isPending() {\n return this.pendingState === true\n },\n setPending(state) {\n this.pendingState = state\n setTimeout(() => {\n this.trigger('pending', state)\n }, 100)\n },\n beforeCallback(defer) {\n defer.resolve()\n },\n setBeforeCallback(callback) {\n if (isFunction(callback)) {\n this.beforeCallback = callback\n }\n return this\n },\n before() {\n if (this.isPending()) return\n this.setPending(true)\n const defer = Deferred()\n defer.always(\n this.proxy(function () {\n this.setPending(false)\n })\n )\n this.beforeCallback(defer)\n return defer\n },\n pay(method) {\n if (this.isPending()) return\n this.setPending(true)\n const payload = this.getProviderPayload(method)\n const response = Deferred()\n response.always(function () {\n this.setPending(false)\n })\n if (this.isMethodSupported(method) === false) {\n return response.rejectWith(this, [{ test: true }])\n }\n if (this.isFallbackMethod(method)) {\n this.makePaymentFallback(response, payload.methods)\n } else {\n this.makeNativePayment(response, payload)\n }\n return response\n .done(function (details) {\n this.trigger('details', {\n payment_system: this.payload.payment_system,\n data: details,\n })\n })\n .fail(function (error) {\n this.trigger('error', error)\n if (this.params.embedded === true) {\n location.reload()\n this.trigger('reload', this.params)\n }\n })\n },\n makeNativePayment(defer, payload) {\n const self = this\n const request = getPaymentRequest(payload.methods, payload.details, payload.options)\n this.addEvent(request, 'merchantvalidation', 'merchantValidation')\n request\n .canMakePayment()\n .then(function () {\n request\n .show()\n .then(function (response) {\n response.complete('success').then(function () {\n defer.resolveWith(self, [response.details])\n })\n })\n .catch(function (e) {\n defer.rejectWith(self, [{ code: e.code, message: e.message }])\n })\n })\n .catch(function (e) {\n defer.rejectWith(self, [{ code: e.code, message: e.message }])\n })\n },\n makePaymentFallback(defer, methods) {\n const self = this\n GooglePay.load().then(() => {\n GooglePay.show(methods)\n .then((details) => {\n defer.resolveWith(self, [details])\n })\n .catch((e) => {\n defer.rejectWith(self, [{ code: e.code, message: e.message }])\n })\n })\n },\n appleSession(params) {\n const defer = Deferred()\n this.request(\n 'session',\n params,\n function (c, model) {\n defer.resolveWith(this, [model.serialize()])\n },\n function (c, model) {\n defer.rejectWith(this, [model])\n }\n )\n return defer\n },\n merchantValidation(cx, event) {\n const { validationURL } = event\n const { host } = location\n this.appleSession({\n url: validationURL,\n domain: host,\n merchant_id: this.merchant,\n })\n .done(function (session) {\n try {\n event.complete(session.data)\n } catch (error) {\n this.trigger('error', error)\n }\n })\n .fail(function (error) {\n this.trigger('error', error)\n })\n },\n})\n","import { Module } from '../module.js'\nimport { Connector } from '../connector.js'\nimport {\n ApiOrigin,\n ApiEndpoint,\n ButtonContainerCss,\n ButtonCoverCss,\n ButtonCoverAttrs,\n ButtonFrameCss,\n ButtonFrameAttrs,\n} from '../config.js'\n\nimport { PaymentRequestApi } from './request.js'\n\nexport const PaymentElement = Module.extend({\n defaults: {\n method: null,\n appendTo: null,\n className: 'payment-element',\n origin: ApiOrigin,\n endpoint: ApiEndpoint.element,\n mode: 'plain',\n color: 'black',\n lang: 'en',\n height: 38,\n },\n init(params) {\n this.params = {}\n this.utils.extend(this.params, this.defaults)\n this.utils.extend(this.params, params)\n this.initElement()\n },\n getElementUrl() {\n return [this.params.origin, this.params.endpoint].join('')\n },\n getElementOptions() {\n return this.utils.param({\n method: this.params.method,\n mode: this.params.mode,\n style: this.params.style,\n color: this.params.color,\n lang: this.params.lang,\n })\n },\n initElement() {\n this.element = this.utils.createElement('div')\n this.iframe = this.utils.createElement('iframe')\n this.button = this.utils.createElement('a')\n this.addCss(this.element, ButtonContainerCss)\n this.addCss(this.button, ButtonCoverCss)\n this.addAttr(this.button, ButtonCoverAttrs)\n this.addCss(this.iframe, ButtonFrameCss)\n this.addAttr(this.iframe, ButtonFrameAttrs)\n this.addAttr(this.iframe, {\n src: [this.getElementUrl(), this.getElementOptions()].join('?'),\n })\n this.addEvent(this.iframe, 'load', 'onloadConnector')\n this.addEvent(this.iframe, 'error', 'errorConnector')\n this.addAttr(this.element, {\n class: this.params.className,\n })\n this.element.appendChild(this.iframe)\n this.element.appendChild(this.button)\n },\n errorConnector() {\n log('frame load error')\n },\n onloadConnector() {\n this.connector = new Connector({\n target: this.iframe.contentWindow,\n origin: this.params.origin,\n })\n },\n send(action, data) {\n if (this.connector) {\n this.connector.send(action, data)\n }\n },\n onEvent(cx, ev) {\n ev.preventDefault()\n if (this.pending) return false\n this.send('event', { type: ev.type })\n },\n onClick() {\n if (this.pending) return false\n this.request.before().done(this.proxy('onClickDone')).fail(this.proxy('onClickFail'))\n },\n onClickDone() {\n this.request.pay(this.params.method)\n },\n onClickFail() {},\n onSupported(cx, supported) {\n if (supported.provider.includes(this.params.method)) {\n this.mount()\n }\n },\n onPayload(cx, payload) {\n if (payload.allowed.includes(this.params.method)) {\n this.show()\n }\n },\n onPending(cx, state) {\n this.pending = state\n this.send('pending', { state: state })\n },\n initEvents() {\n this.addEvent(this.button, 'mouseenter', 'onEvent')\n this.addEvent(this.button, 'mouseleave', 'onEvent')\n this.addEvent(this.button, 'blur', 'onEvent')\n this.addEvent(this.button, 'focus', 'onEvent')\n this.addEvent(this.button, 'click', 'onClick')\n },\n setPaymentRequest(request) {\n if (!(request instanceof PaymentRequestApi))\n throw Error('request is not instance of PaymentRequestApi')\n this.request = request\n const onSupported = this.proxy('onSupported')\n const onPayload = this.proxy('onPayload')\n const onPending = this.proxy('onPending')\n this.request.off('supported', onSupported).on('supported', onSupported)\n this.request.off('payload', onPayload).on('payload', onPayload)\n this.request.off('pending', onPending).on('pending', onPending)\n return this\n },\n appendTo(appendTo) {\n const container = this.utils.querySelector(appendTo)\n if (container) container.appendChild(this.element)\n this.initEvents()\n return this\n },\n mount() {\n this.appendTo(this.params.appendTo)\n },\n isMounted() {\n return document.body.contains(this.element)\n },\n show() {\n if (this.isMounted() === false) return this\n this.addCss(this.iframe, {\n transition: 'opacity 0.6s 0.4s ease-out',\n opacity: this.utils.cssUnit(1),\n })\n this.addCss(this.element, {\n transition: 'height 0.2s ease-out',\n height: this.utils.cssUnit(this.params.height, 'px'),\n })\n this.trigger('show', {})\n return this\n },\n hide() {\n if (this.isMounted() === false) return this\n this.addCss(this.iframe, {\n transition: 'opacity 0.4s ease-out',\n opacity: this.utils.cssUnit(0),\n })\n this.addCss(this.element, {\n transition: 'height 0.2s 0.4s ease-out',\n height: this.utils.cssUnit(0, 'px'),\n })\n this.trigger('hide', {})\n return this\n },\n})\n","import { Module } from '../module.js'\nimport { Api } from '../api.js'\nimport { PaymentRequestApi } from './request.js'\nimport { PaymentElement } from './element.js'\nimport { forEach } from '../utils.js'\nimport { ApiOrigin, ApiEndpoint } from '../config.js'\n\nexport const PaymentButton = Module.extend({\n defaults: {\n origin: ApiOrigin,\n endpoint: ApiEndpoint,\n methods: ['apple', 'google'],\n element: null,\n style: {\n height: 38,\n mode: 'default',\n type: 'long',\n color: 'black',\n },\n data: {\n lang: 'en',\n },\n before(defer) {\n defer.resolve()\n },\n },\n init(params) {\n this.elements = {}\n this.supported = false\n this.params = {\n element: params.element,\n methods: params.methods || this.defaults.methods,\n origin: params.origin || this.defaults.origin,\n endpoint: this.utils.extend({}, this.defaults.endpoint, params.endpoint),\n style: this.utils.extend({}, this.defaults.style, params.style),\n before: params.before || this.defaults.before,\n data: this.utils.extend({}, this.defaults.data, params.data),\n }\n this.initApi(params.api)\n this.initPaymentRequestApi()\n this.initElements()\n this.update()\n },\n initApi(api) {\n if (api instanceof Api) {\n this.api = api\n } else {\n this.api = new Api({\n origin: this.params.origin,\n endpoint: this.params.endpoint,\n })\n }\n },\n initPaymentRequestApi() {\n this.request = new PaymentRequestApi()\n this.request.setApi(this.api)\n this.request.setMerchant(this.params.data.merchant_id)\n this.request.setBeforeCallback(this.params.before)\n this.request.on('details', this.proxy('onDetails'))\n this.request.on('error', this.proxy('onError'))\n },\n initElements() {\n const style = this.params.style\n const data = this.params.data\n const origin = this.params.origin\n const appendTo = this.params.element\n const endpoint = this.params.endpoint.element\n const request = this.request\n this.container = this.utils.querySelector(this.params.element)\n this.addCss(this.container, {\n display: 'flex',\n gap: '1rem',\n 'flex-direction': 'column',\n })\n forEach(this.params.methods, function (method) {\n const element = new PaymentElement({\n origin: origin,\n endpoint: endpoint,\n method: method,\n appendTo: appendTo,\n color: style.color,\n mode: style.mode,\n lang: data.lang,\n height: style.height,\n })\n element.setPaymentRequest(request)\n })\n request.getSupportedMethods()\n },\n update(data) {\n return this.request.update(this.utils.extend(this.params.data, data || {}))\n },\n onDetails(cx, data) {\n this.api.scope(() => {\n this.api\n .request('api.checkout.form', 'request', this.utils.extend({}, this.params.data, data))\n .done(this.proxy('onSuccess'))\n .fail(this.proxy('onError'))\n })\n },\n onSuccess(cx, data) {\n this.trigger('success', data)\n },\n onError(cx, data) {\n this.trigger('error', data)\n },\n})\n","import { Module } from '../module.js'\nimport { Connector } from '../connector.js'\nimport { PaymentRequestApi } from './request.js'\n\nimport {\n GooglePayLanguages,\n ButtonColorMap,\n ButtonDefaultColor,\n ButtonLabelMap,\n} from '../config.js'\n\nconst parseConfig = (config) => {\n const data = {\n payment_system: config.payment_system,\n provider: {},\n }\n const methods = config.methods || []\n const details = config.details || {}\n const options = config.options || {}\n const regex = new RegExp('//([a-z]+)\\\\.com/')\n methods.forEach(function (item) {\n const match = regex.exec(item.supportedMethods)\n if (match === null) return\n data.provider[match[1]] = {\n methods: [item],\n details: details,\n options: options,\n }\n })\n return data\n}\n\nexport const PaymentContainer = Module.extend({\n defaults: {\n element: null,\n method: 'card',\n data: {\n lang: 'en',\n },\n style: {},\n },\n init(params) {\n this.initParams(params)\n this.initEvents()\n },\n initParams(params) {\n this.params = this.utils.extend({}, this.defaults, params)\n this.element = this.utils.querySelector(this.params.element)\n this.connector = new Connector({\n target: window.parent,\n })\n this.payment = new PaymentRequestApi({\n embedded: true,\n })\n },\n extendParams(params) {\n this.utils.extend(this.params, {\n method: params.method,\n style: params.style,\n data: params.data,\n css: params.css,\n })\n },\n getGoogleLangSupport(lang, defaults) {\n return GooglePayLanguages.indexOf(lang) !== -1 ? lang : defaults\n },\n getButtonColor(color) {\n return ButtonColorMap[color] || ButtonDefaultColor\n },\n getGoogleSvg(color, lang, mode) {\n const params = {\n endpoint: 'https://www.gstatic.com/instantbuy/svg',\n color: this.getButtonColor(color),\n mode: mode || 'plain',\n lang: lang || 'en',\n }\n let format = 'url(\"{endpoint}/{color}/{mode}/{lang}.svg\")'\n if (mode === 'plain') {\n format = 'url(\"{endpoint}/{color}_gpay.svg\")'\n }\n if (mode === 'buy') {\n format = 'url(\"{endpoint}/{color}/{lang}.svg\")'\n }\n return this.utils.stringFormat(format, params)\n },\n getAppleSvg(color) {\n const format = 'url(\"svg/apple-pay-{color}.svg\")'\n const params = {\n color: this.getButtonColor(color),\n }\n return this.utils.stringFormat(format, params)\n },\n getAppleLabel(lang) {\n return ButtonLabelMap[lang || 'en']\n },\n addFrameImage() {\n const frame =\n this.utils.querySelector('iframe', this.element) || this.utils.createElement('iframe')\n const url = 'https://pay.google.com/gp/p/generate_gpay_btn_img'\n const style = this.params.style || {}\n const lang = this.getGoogleLangSupport(this.params.data.lang, 'en')\n const query = {\n buttonColor: style.color || 'black',\n browserLocale: lang,\n buttonSizeMode: 'fill',\n }\n const src = [url, this.utils.param(query)].join('?')\n this.addAttr(frame, {\n scrolling: 'no',\n frameborder: 0,\n src: src,\n })\n this.element.appendChild(frame)\n this.element.classList.remove('short', 'long')\n },\n styleButton() {\n let element = this.element\n let params = this.params\n let method = params.method\n let style = params.style || {}\n let lang = params.data.lang || 'en'\n let css = params.css || {}\n element.setAttribute('class', '')\n element.classList.add('button', 'pending')\n if (method === 'card') method = 'google'\n if (method) {\n element.classList.add(method)\n }\n if (lang) {\n element.classList.add(lang)\n }\n if (style.type) {\n element.classList.add(style.type)\n }\n if (style.mode) {\n element.classList.add(style.mode)\n }\n if (style.color) {\n element.classList.add(style.color)\n }\n if (method === 'google') {\n if (style.type === 'short') {\n style.mode = 'plain'\n }\n if (style.mode === 'default') {\n this.addFrameImage()\n } else {\n css.image = this.getGoogleSvg(style.color, lang, style.mode)\n }\n }\n if (method === 'apple') {\n css.image = this.getAppleSvg(style.color)\n css.label = this.getAppleLabel(lang, style.mode)\n }\n if (css) {\n this.utils.forEach(css, function (value, name) {\n element.style.setProperty(['--', name].join(''), value)\n })\n }\n },\n initEvents() {\n this.payment.on(\n 'details',\n this.proxy(function (cx, data) {\n this.connector.send('details', data)\n this.connector.send('complete', data)\n })\n )\n this.payment.on(\n 'reload',\n this.proxy(function (cx, data) {\n this.connector.send('reload', data)\n })\n )\n this.payment.on(\n 'error',\n this.proxy(function (cx, data) {\n this.connector.send('error', data)\n })\n )\n this.connector.on(\n 'options',\n this.proxy(function (cx, data) {\n this.extendParams(data)\n this.styleButton()\n })\n )\n this.connector.on(\n 'pay',\n this.proxy(function () {\n if (!this.element.classList.contains('pending')) {\n if (this.params.method === 'apple') {\n const payload = this.payment.payload || {}\n const apple = payload.provider['apple'] || {}\n this.connector.send('pay', {\n payment_system: payload.payment_system,\n methods: apple.methods,\n details: apple.details,\n options: apple.options,\n })\n } else {\n this.payment\n .setSupported({\n fallback: false,\n provider: ['google'],\n })\n .pay('google')\n }\n }\n })\n )\n this.connector.on(\n 'config',\n this.proxy(function (cx, data) {\n this.payment.setPayload((data = parseConfig(data)))\n if (data.payment_system && Object.keys(data.provider).length > 0) {\n this.element.classList.remove('pending')\n this.element.classList.add('ready')\n this.connector.send('show', {})\n } else {\n this.connector.send('hide', {})\n }\n })\n )\n this.connector.on(\n 'event',\n this.proxy(function (cx, data) {\n if (data.type === 'mouseenter') {\n this.element.classList.add('hover')\n }\n if (data.type === 'mouseleave') {\n this.element.classList.remove('hover')\n }\n if (data.type === 'focusin') {\n this.element.classList.add('active')\n }\n if (data.type === 'focusout') {\n this.element.classList.remove('active')\n }\n })\n )\n },\n})\n","import { Api } from '../api.js'\n\nexport const Widget = Api.extend({\n init(params) {\n this.initParams(params)\n this.initWidget()\n },\n initWidget() {\n this.initOptions(this.params.options)\n if (this.utils.isString(this.params.element)) {\n this.initElement(this.params.element)\n }\n },\n initOptions() {\n if (this.utils.isPlainObject(this.params.options)) {\n this.params.options = this.params.options || {}\n }\n },\n initElement(el) {},\n addSelectorEvent(el, ev, cb) {\n this.each(this.utils.querySelectorAll(el), function (cx, element) {\n this.addEvent(element, ev, cb)\n })\n return this\n },\n getRequestParams() {\n return {}\n },\n sendRequest(el, ev) {\n if (ev.defaultPrevented) return\n ev.preventDefault()\n this.trigger('request', this.getRequestParams(el))\n this.scope(function () {\n this.request('api.checkout.form', 'request', this.getRequestParams(el))\n .done(this.proxy('onSuccess'))\n .fail(this.proxy('onError'))\n .progress(this.proxy('onProgress'))\n })\n },\n onProgress(cx, model) {\n this.trigger('progress', model)\n },\n onSuccess(cx, model) {\n model.sendResponse()\n model.submitToMerchant()\n this.trigger('success', model)\n },\n onError(cx, model) {\n this.trigger('error', model)\n },\n})\n","import { Module } from '../module.js'\nimport { Widget } from './index.js'\n\nconst FormData = Module.extend({\n init(form) {\n this.setFormElement(form)\n },\n setFormElement(form) {\n if (this.utils.isElement(form)) {\n this.form = form\n }\n },\n getData(filter) {\n const params = this.deparam(this.serializeArray())\n return filter === true ? this.utils.cleanObject(params) : params\n },\n serializeArray() {\n const list = this.utils.toArray(this.form.elements)\n return this.utils.map(list, function (field) {\n if (field.disabled || field.name === '') return\n if (field.type.match('checkbox|radio') && !field.checked) return\n return {\n name: field.name,\n value: field.value,\n }\n })\n },\n serializeAndEncode() {\n return this.utils\n .map(this.serializeArray(), function (field) {\n return [field.name, encodeURIComponent(field.value)].join('=')\n })\n .join('&')\n },\n deparam(obj) {\n let prop,\n result = {}\n const breaker = /[^\\[\\]]+|\\[\\]$/g\n const attr = function (name, value) {\n let i,\n data = result,\n last = name.pop(),\n len = name.length\n for (i = 0; i < len; i++) {\n if (!data[name[i]]) data[name[i]] = len === i + 1 && last === '[]' ? [] : {}\n data = data[name[i]]\n }\n if (last === '[]') {\n data.push(value)\n } else {\n data[last] = value\n }\n }\n for (prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n attr(obj[prop].name.match(breaker), obj[prop].value)\n }\n }\n return result\n },\n})\n\nexport const WidgetForm = Widget.extend({\n initElement(el) {\n this.addSelectorEvent(el, 'submit', 'sendRequest')\n },\n getRequestParams(el) {\n return this.utils.extend({}, this.params.options, new FormData(el).getData())\n },\n})\n","import { Widget } from './index.js'\n\nexport const WidgetButton = Widget.extend({\n attributes: {},\n initElement(el) {\n if (this.utils.isPlainObject(this.params.attributes)) {\n this.utils.extend(this.attributes, this.params.attributes)\n }\n this.addSelectorEvent(el, 'click', 'sendRequest')\n },\n getRequestParams(el) {\n return this.utils.extend({}, this.params.options, this.getElementData(el))\n },\n getElementData(el) {\n const result = {}\n this.utils.forEach(this.attributes, function (value, key) {\n if (el.hasAttribute(key)) {\n result[value] = el.getAttribute(key)\n }\n })\n return result\n },\n})\n","import { Component } from './core/component.js'\n\nimport * as Utils from './core/utils.js'\nimport * as Config from './core/config.js'\n\nimport { Api } from './core/api.js'\nimport { Module } from './core/module.js'\nimport { Connector } from './core/connector.js'\nimport { Response } from './core/response.js'\nimport { PaymentButton } from './core/payment/button.js'\nimport { PaymentRequestApi } from './core/payment/request.js'\nimport { PaymentElement } from './core/payment/element.js'\nimport { PaymentContainer } from './core/payment/container.js'\nimport { WidgetForm } from './core/widget/form.js'\nimport { WidgetButton } from './core/widget/button.js'\n\nComponent.add('Api', Api)\nComponent.add('Connector', Connector)\nComponent.add('PaymentButton', PaymentButton)\nComponent.add('PaymentRequestApi', PaymentRequestApi)\nComponent.add('PaymentElement', PaymentElement)\nComponent.add('FormWidget', WidgetForm)\nComponent.add('ButtonWidget', WidgetButton)\n\nComponent.Utils = Utils\nComponent.Config = Config\nComponent.Api = Api\nComponent.Module = Module\nComponent.Connector = Connector\nComponent.Response = Response\nComponent.PaymentRequestApi = PaymentRequestApi\nComponent.PaymentContainer = PaymentContainer\nComponent.PaymentElement = PaymentElement\nComponent.PaymentButton = PaymentButton\n\nexport {\n Utils,\n Config,\n Api,\n Module,\n Connector,\n Response,\n PaymentRequestApi,\n PaymentContainer,\n PaymentElement,\n PaymentButton,\n}\n\nexport default Component\n"],"names":["modules","instance","newModule","name","params","Error","join","Component","get","add","module","addModule","this","cx","NativePaymentRequest","digitTest","keyBreaker","paramTest","r20","rbracket","matchSymbol","prep","str","decodeURIComponent","replace","flatten","array","result","forEach","item","concat","isArray","recursiveParams","prefix","obj","next","prop","test","isPlainObject","getType","o","toString","call","match","toLowerCase","_typeof","constructor","Object","isFunction","isElement","nodeType","toArray","slice","hasProp","v","hasOwnProperty","ob","cb","p","cleanObject","length","splice","extend","_len","arguments","args","Array","_key","value","key","uuid","a","b","Math","random","getPaymentRequest","window","PaymentRequest","methods","details","options","request","id","e","el","attrs","setAttribute","_len2","_key2","shift","classList","className","trim","split","map","token","indexOf","push","tag","document","createElement","unit","String","data","charAt","pair","parts","current","j","l","lastPart","pop","path","props","first","getComputedStyle","word","letter","toUpperCase","defaults","JSON","parse","t","r","undefined","encodeURIComponent","querySelector","querySelectorAll","removeAttribute","_len3","_key3","index","parentNode","removeChild","format","expr","ApiOrigin","ApiEndpoint","gateway","element","ProxyUrl","GooglePayApi","GoogleBaseRequest","apiVersion","apiVersionMinor","allowedPaymentMethods","type","parameters","allowedAuthMethods","allowedCardNetworks","GooglePayLanguages","PaymentRequestDetails","total","label","amount","currency","ApiFrameCss","width","height","left","bottom","position","border","ButtonFrameCss","margin","padding","display","background","opacity","overflow","outline","ButtonFrameAttrs","tabindex","scrolling","frameborder","allowtransparency","allowpaymentrequest","ButtonCoverCss","top","cursor","ButtonCoverAttrs","role","ButtonContainerCss","ButtonDefaultColor","ButtonColorMap","dark","light","black","white","ButtonLabelMap","ar","bg","ca","zh","hr","cs","da","nl","en","et","es","fi","fr","de","it","ja","ko","ms","no","pl","pt","ru","sr","sk","sl","sv","th","tr","uk","Deferred","resolveCallbacks","rejectCallbacks","notifyCallbacks","status","resultContext","resultArgs","chainArgs","executeCallback","context","callbacks","list","save","isArgs","from","execute","apply","then","promise","done","callback","fail","progress","always","resolve","reject","object","state","isPending","isRejected","isResolved","resetState","resolveWith","rejectWith","notifyWith","notify","init","fnTest","ClassObject","superMethod","parent","method","temp","_super","prototype","proxy","fn","Class","target","proto","assign","Event","events","empty","on","off","i","trigger","Module","utils","Utils","getListener","_listener_","destroy","_proxy_cache_","isString","each","addAttr","k","addCss","addCssProperty","style","idx","cssText","RegExp","substring","addEvent","ev","addEventListener","removeEvent","removeEventListener","prepareForm","url","form","action","appendChild","Connector","ns","origin","uniqueId","signature","setTarget","setOrigin","create","getUID","router","response","source","send","stringify","targetOrigin","delegate","postMessage","messages","modalHeader","modalLinkLabel","Template","view","Views","render","Modal","checkout","model","template","body","initModal","initConnector","getRandomNumber","modal","innerHTML","iframe","find","src","initScrollbar","submit","measureScrollbar","scrollDiv","removeElement","offsetWidth","clientWidth","checkScrollbar","documentElementRect","fullWindowWidth","innerWidth","documentElement","getBoundingClientRect","right","abs","bodyIsOverflowing","scrollbarWidth","bodyPad","parseInt","getStyle","originalBodyPad","paddingRight","originalOverflow","resetScrollbar","round","selector","closeModal","preventDefault","removeModal","submitForm","connector","contentWindow","onResponse","sendResponse","uid","Model","eachProps","alt","filter","attr","len","serialize","Response","stringFormat","string","that","setConnector","setUID","formDataProxy","location","formDataSubmit","inProgress","readyToSubmit","waitForResponse","needVerifyCode","redirectUrl","redirectToUrl","submitToMerchant","ready","prepare3dsData","frame","TermUrl","param","waitOn3dsDecline","js_wait_on_3ds_decline","js_wait_on_3ds_decline_duration","submit3dsForm","supportedMethod","Api","endpoint","initParams","extendParams","loaded","created","scope","createFrame","defer","responseModel","loadFrame","firstChild","insertBefore","onOpenModal","xhr","onCloseModal","onLoadConnector","GooglePay","client","wrapper","load","getPath","script","async","show","supportedMethods","getClient","environment","loadPaymentData","readyToPay","onError","error","onLoadSuccess","isReadyToPay","onLoadError","PaymentClient","requestDeferred","requestSupported","fallback","provider","getSupportedMethods","check","config","setTimeout","canMakePayment","PaymentRequestApi","payment_system","supported","payload","_this","setSupported","setPayload","setMerchant","merchant","setApi","api","getProviderPayload","isMethodSupported","isFallbackMethod","success","failure","update","onUpdate","pendingState","setPending","_this2","beforeCallback","setBeforeCallback","before","pay","makePaymentFallback","makeNativePayment","embedded","reload","self","complete","code","message","appleSession","c","merchantValidation","event","validationURL","host","domain","merchant_id","session","PaymentElement","appendTo","mode","color","lang","initElement","getElementUrl","getElementOptions","button","class","errorConnector","log","onloadConnector","onEvent","pending","onClick","onClickDone","onClickFail","onSupported","includes","mount","onPayload","allowed","onPending","initEvents","setPaymentRequest","container","isMounted","contains","transition","cssUnit","hide","PaymentButton","elements","initApi","initPaymentRequestApi","initElements","gap","onDetails","onSuccess","PaymentContainer","payment","css","getGoogleLangSupport","getButtonColor","getGoogleSvg","getAppleSvg","getAppleLabel","addFrameImage","query","buttonColor","browserLocale","buttonSizeMode","remove","styleButton","image","setProperty","apple","regex","exec","parseConfig","keys","Widget","initWidget","initOptions","addSelectorEvent","getRequestParams","sendRequest","defaultPrevented","onProgress","FormData","setFormElement","getData","deparam","serializeArray","field","disabled","checked","serializeAndEncode","breaker","last","WidgetForm","WidgetButton","attributes","getElementData","hasAttribute","getAttribute","Config"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkout.js","sources":["../../src/core/component.js","../../src/core/utils.js","../../src/core/config.js","../../src/core/deferred.js","../../src/core/class.js","../../src/core/event.js","../../src/core/module.js","../../src/core/connector.js","../../src/views/template/acs.js","../../src/views/template/acs_styles.js","../../src/core/template.js","../../src/core/modal.js","../../src/core/model.js","../../src/core/response.js","../../src/core/api.js","../../src/core/google/pay.js","../../src/core/payment/request.js","../../src/core/payment/element.js","../../src/core/payment/button.js","../../src/core/payment/container.js","../../src/core/widget/index.js","../../src/core/widget/form.js","../../src/core/widget/button.js","../../src/module.js"],"sourcesContent":["/**\n * Modules registry\n * @type {Object<string,any>}\n */\nconst modules = {}\n/**\n * @type {Object<string,any>}\n */\nconst instance = {}\n/**\n * @param {string} name\n * @param {Object} [params]\n * @returns {{}}\n */\nconst newModule = function (name, params) {\n if (!modules[name]) {\n throw Error(['module is undefined', name].join(' '))\n }\n return new modules[name](params || {})\n}\n\nconst addModule = function (name, module) {\n if (modules[name]) {\n throw Error(['module already added', name].join(' '))\n }\n modules[name] = module\n}\n\nexport function Component(name, params) {\n if (instance[name]) return instance[name]\n return (instance[name] = newModule(name, params))\n}\n\nComponent.get = function (name, params) {\n return newModule(name, params)\n}\n\nComponent.add = function (name, module) {\n addModule(name, module)\n return this\n}\n","const digitTest = /^\\d+$/\nconst keyBreaker = /([^\\[\\]]+)|(\\[\\])/g\nconst paramTest = /([^?#]*)(#.*)?$/\nconst r20 = /%20/g\nconst rbracket = /\\[\\]$/\nconst matchSymbol = /\\s([a-zA-Z]+)/\n\nconst prep = (str) => {\n return decodeURIComponent(str.replace(/\\+/g, ' '))\n}\nconst flatten = (array) => {\n let result = []\n forEach(array, (item) => {\n result = result.concat(isArray(item) ? flatten(item) : item)\n })\n return result\n}\n\nconst recursiveParams = (prefix, obj, next) => {\n if (isArray(obj)) {\n forEach(obj, (item, prop) => {\n if (rbracket.test(prefix)) {\n next(prefix, item)\n } else {\n recursiveParams(prefix + '[' + (isPlainObject(obj) ? prop : '') + ']', item, next)\n }\n })\n } else if (isPlainObject(obj)) {\n forEach(obj, (item, prop) => {\n recursiveParams(prefix + '[' + prop + ']', item, next)\n })\n } else {\n next(prefix, obj)\n }\n}\n\nexport const getType = (o) => {\n return {}.toString.call(o).match(matchSymbol)[1].toLowerCase()\n}\nexport const isPlainObject = (o) => {\n return !!o && typeof o === 'object' && o.constructor === Object\n}\n\nexport const isFunction = (o) => {\n return getType(o) === 'function'\n}\n\nexport const isArray = (o) => {\n return getType(o) === 'array'\n}\n\nexport const isElement = (o) => {\n return o && o.nodeType === 1\n}\n\nexport const toArray = (o) => {\n return [].slice.call(o)\n}\n\nexport const hasProp = (o, v) => {\n return o && o.hasOwnProperty(v)\n}\n\nexport const forEach = (ob, cb, cx) => {\n for (let p in ob) if (hasProp(ob, p)) cb.call(cx || null, ob[p], p)\n}\n\nexport const cleanObject = (ob) => {\n for (let p in ob) {\n if (hasProp(ob, p)) {\n if (ob[p].length === 0) {\n if (isArray(ob)) ob.splice(p, 1)\n if (isPlainObject(ob)) delete ob[p]\n } else if (isPlainObject(ob[p])) {\n cleanObject(ob[p])\n }\n }\n }\n return ob\n}\n\nexport const extend = (obj, ...args) => {\n forEach(args, function (o) {\n if (o !== null) {\n forEach(o, function (value, key) {\n if (isPlainObject(value)) {\n obj[key] = extend(obj[key] || {}, value)\n } else {\n obj[key] = value\n }\n })\n }\n })\n return obj\n}\n\nexport const uuid = () => {\n let a = 0,\n b = ''\n while (a++ < 36) {\n if ((a * 51) & 52) {\n b += (a ^ 15 ? 8 ^ (Math.random() * (a ^ 20 ? 16 : 4)) : 4).toString(16)\n } else {\n b += '-'\n }\n }\n return b\n}\n\nexport const isObject = (o) => {\n return getType(o) === 'object'\n}\n\nexport const isRegexp = (o) => {\n return getType(o) === 'regexp'\n}\n\nexport const isArguments = (o) => {\n return getType(o) === 'arguments'\n}\n\nexport const isError = (o) => {\n return getType(o) === 'error'\n}\n\nexport const isDate = (o) => {\n return getType(o) === 'date'\n}\n\nexport const isString = (o) => {\n return getType(o) === 'string'\n}\n\nexport const isNumber = (o) => {\n return getType(o) === 'number'\n}\n\nexport const map = (ob, cb, cx) => {\n let p,\n t,\n r = []\n for (p in ob) if (hasProp(ob, p)) if ((t = cb.call(cx || null, ob[p], p)) !== undefined) r[p] = t\n return r\n}\n\nexport const querySelectorAll = (o, p) => {\n return toArray((p || document).querySelectorAll(o))\n}\n\nexport const querySelector = (o, p) => {\n return (p || document).querySelector(o)\n}\n\nexport const deparam = (params) => {\n const data = {}\n if (params.charAt(0) === '?') params = params.slice(1)\n if (params && paramTest.test(params)) {\n forEach(params.split('&'), (pair) => {\n let parts = pair.split('='),\n key = prep(parts.shift()),\n value = prep(parts.join('=')),\n current = data\n if (key) {\n parts = key.match(keyBreaker)\n for (let j = 0, l = parts.length - 1; j < l; j++) {\n if (!current[parts[j]]) {\n current[parts[j]] = digitTest.test(parts[j + 1]) || parts[j + 1] === '[]' ? [] : {}\n }\n current = current[parts[j]]\n }\n const lastPart = parts.pop()\n if (lastPart === '[]') {\n current.push(value)\n } else {\n current[lastPart] = value\n }\n }\n })\n }\n return data\n}\n\nexport const param = (obj) => {\n const result = []\n forEach(obj, (item, prop) => {\n recursiveParams(prop, item, (key, value) => {\n value = value == null ? '' : value\n result.push([encodeURIComponent(key), encodeURIComponent(value)].join('='))\n })\n })\n return result.join('&').replace(r20, '+')\n}\n\nexport const removeElement = (el) => {\n el.parentNode.removeChild(el)\n}\n\nexport const createElement = (tag) => {\n return document.createElement(tag)\n}\n\nexport const addClass = (...args) => {\n const el = args.shift()\n if (isElement(el) === false) return\n const classList = el.className.trim().split(/\\s+/)\n const tokens = flatten(args.map((item) => item.trim().split(/\\s+/)))\n tokens.forEach((token) => {\n if (token && !~classList.indexOf(token)) {\n classList.push(token)\n }\n })\n el.className = classList.join(' ').trim()\n}\n\nexport const removeClass = (...args) => {\n const el = args.shift()\n if (isElement(el) === false) return\n const classList = el.className.trim().split(/\\s+/)\n const tokens = flatten(args.map((item) => item.trim().split(/\\s+/)))\n tokens.forEach((token) => {\n if (token) {\n const index = classList.indexOf(token)\n if (!!~index) {\n classList.splice(index, 1)\n }\n }\n })\n el.className = classList.join(' ').trim()\n}\n\nexport const removeAttr = (el, attrs) => {\n if (isElement(el) === false) return false\n if (isPlainObject(attrs)) {\n forEach(attrs, (value) => {\n el.removeAttribute(value)\n })\n }\n}\n\nexport const addAttr = (el, attrs) => {\n if (isElement(el) === false) return false\n if (isPlainObject(attrs)) {\n forEach(attrs, (value, name) => {\n el.setAttribute(name, value)\n })\n }\n}\n\nexport const getStyle = (el, prop, getComputedStyle) => {\n getComputedStyle = window.getComputedStyle\n return (getComputedStyle ? getComputedStyle(el) : el['currentStyle'])[\n prop.replace(/-(\\w)/gi, function (word, letter) {\n return letter.toUpperCase()\n })\n ]\n}\n\nexport const getPath = (path) => {\n const props = path.split('.')\n const first = props.shift()\n let value = null\n if (hasProp(window, first)) {\n value = window[first]\n forEach(props, (name) => {\n value = hasProp(value, name) ? value[name] : null\n })\n }\n return value\n}\n\nexport const stringFormat = (format, params, expr) => {\n return (format || '').replace(expr || /{(.+?)}/g, (match, prop) => {\n return params[prop] || match\n })\n}\n\nexport const cssUnit = (value, unit) => {\n return String(value || 0)\n .concat(unit || '')\n .concat(' !important')\n}\n/**\n * @function\n * @type {function(*, *, *)}\n */\nexport const getPaymentRequest = ((cx) => {\n let NativePaymentRequest\n if (hasProp(cx, 'PaymentRequest') && isFunction(cx.PaymentRequest)) {\n NativePaymentRequest = cx.PaymentRequest\n }\n return (methods, details, options) => {\n let request = null\n details = details || {}\n details.id = uuid()\n options = options || {}\n if (NativePaymentRequest) {\n try {\n request = new NativePaymentRequest(methods, details, options)\n } catch (e) {\n request = null\n }\n }\n return request\n }\n})(window)\n\nexport const jsonParse = (value, defaults) => {\n try {\n return JSON.parse(value)\n } catch (e) {\n return defaults\n }\n}\n","export const ApiOrigin = 'https://pay.flitt.com'\n\nexport const ApiEndpoint = {\n gateway: '/latest/checkout-v2/index.html',\n element: '/latest/checkout-v2/button/element.html',\n}\n\nexport const ProxyUrl = 'http://secure-redirect.cloudipsp.com/submit/'\n\nexport const GooglePayApi = 'https://pay.google.com/gp/p/js/pay.js'\n\nexport const GoogleBaseRequest = {\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],\n allowedCardNetworks: ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'],\n },\n },\n ],\n}\n\nexport const GooglePayLanguages = [\n 'ar',\n 'bg',\n 'ca',\n 'zh',\n 'hr',\n 'cs',\n 'da',\n 'nl',\n 'en',\n 'et',\n 'fi',\n 'fr',\n 'de',\n 'el',\n 'id',\n 'it',\n 'ja',\n 'ko',\n 'ms',\n 'no',\n 'pl',\n 'pt',\n 'ru',\n 'sr',\n 'sk',\n 'sl',\n 'es',\n 'sv',\n 'th',\n 'tr',\n 'uk',\n]\n\nexport const PaymentRequestDetails = {\n total: {\n label: 'Total',\n amount: {\n currency: 'USD',\n value: '0.00',\n },\n },\n}\n\nexport const ApiFrameCss = {\n width: '1px !important',\n height: '1px !important',\n left: '1px !important',\n bottom: '1px !important',\n position: 'fixed !important',\n border: '0px !important',\n}\n\nexport const ButtonFrameCss = {\n border: 'none !important',\n margin: '0 !important',\n padding: '0 !important',\n display: 'block !important',\n width: '1px !important',\n 'min-width': '100% !important',\n background: 'transparent !important',\n position: 'relative !important',\n opacity: '0 !important',\n overflow: 'hidden !important',\n height: '100% !important',\n outline: 'none !important',\n 'z-index': '1 !important',\n}\n\nexport const ButtonFrameAttrs = {\n tabindex: '-1',\n scrolling: 'no',\n frameborder: 0,\n allowtransparency: true,\n allowpaymentrequest: true,\n}\n\nexport const ButtonCoverCss = {\n 'z-index': '2 !important',\n position: 'absolute !important',\n border: 'none !important',\n background: 'transparent !important',\n left: '0 !important',\n top: '0 !important',\n cursor: 'pointer !important',\n outline: 'none !important',\n width: '100% !important',\n height: '100% !important',\n}\n\nexport const ButtonCoverAttrs = {\n role: 'button',\n 'aria-pressed': 'false',\n}\n\nexport const ButtonContainerCss = {\n border: '0 !important',\n margin: '0 !important',\n padding: '0 !important',\n display: 'block !important',\n background: 'transparent !important',\n 'user-select': 'none !important',\n overflow: 'hidden !important',\n position: 'relative !important',\n opacity: '1 !important',\n height: '0 !important',\n width: '100% !important',\n outline: 'none !important',\n}\n\nexport const ButtonDefaultColor = 'dark'\n\nexport const ButtonColorMap = {\n dark: 'dark',\n light: 'light',\n black: 'dark',\n white: 'light',\n}\n\nexport const ButtonLabelMap = {\n ar: '',\n bg: '',\n ca: '',\n zh: '',\n hr: '',\n cs: '',\n da: '',\n nl: '',\n en: 'Pay with',\n et: '',\n es: 'Comprar con',\n el: '',\n fi: '',\n fr: 'Acheter avec',\n de: 'Zahlen über',\n id: '',\n it: 'Acquista con',\n ja: '',\n ko: '',\n ms: '',\n no: '',\n pl: 'Zapłać przez',\n pt: '',\n ru: 'Оплатить через',\n sr: '',\n sk: 'Zaplatiť cez',\n sl: '',\n sv: '',\n th: '',\n tr: '',\n uk: 'Оплатити через',\n}\n","import { isFunction, forEach } from './utils.js'\n\nconst PENDING = 0\nconst RESOLVED = 1\nconst REJECTED = 2\nconst PROGRESS = 3\n\nexport function Deferred() {\n const resolveCallbacks = []\n const rejectCallbacks = []\n const notifyCallbacks = []\n let status = PENDING\n let resultContext = undefined\n let resultArgs = null\n let chainArgs = null\n const executeCallback = (context, args, callbacks) => {\n const list = [].concat(callbacks)\n const save = (chainArgs, isArgs) => {\n if (isArgs) {\n resultArgs = Array.from(chainArgs)\n } else {\n resultArgs = [chainArgs]\n }\n }\n const execute = () => {\n const item = list.shift()\n if (item) {\n chainArgs = item.apply(resultContext, resultArgs)\n if (chainArgs !== undefined) {\n if (chainArgs && chainArgs.then) {\n chainArgs.then((...chainArgs) => {\n save(chainArgs, true)\n execute()\n })\n } else {\n save(chainArgs)\n execute()\n }\n } else {\n execute()\n }\n }\n }\n resultContext = context\n resultArgs = args\n execute()\n }\n /**\n * @lends Deferred.prototype\n */\n const promise = {\n done(callback) {\n if (isFunction(callback)) {\n if (status === RESOLVED) {\n callback.apply(resultContext, resultArgs)\n }\n resolveCallbacks.push(callback)\n }\n return this\n },\n fail(callback) {\n if (isFunction(callback)) {\n if (status === REJECTED) {\n callback.apply(resultContext, resultArgs)\n }\n rejectCallbacks.push(callback)\n }\n return this\n },\n progress(callback) {\n if (isFunction(callback)) {\n if (status === PROGRESS) {\n callback.apply(resultContext, resultArgs)\n }\n notifyCallbacks.push(callback)\n }\n return this\n },\n always(callback) {\n return this.done(callback).fail(callback)\n },\n then(resolve, reject, progress) {\n if (isFunction(resolve)) {\n this.done(resolve)\n }\n if (isFunction(reject)) {\n this.fail(reject)\n }\n if (isFunction(progress)) {\n this.progress(reject)\n }\n return this\n },\n promise(object) {\n if (object === null) {\n return promise\n }\n forEach(promise, (item, prop) => {\n object[prop] = item\n })\n return object\n },\n state: function () {\n return status\n },\n isPending() {\n return status === PENDING\n },\n isRejected() {\n return status === REJECTED\n },\n isResolved() {\n return status === RESOLVED\n },\n resetState() {\n status = PENDING\n return this\n },\n resolveWith(context, args) {\n if (status === PENDING) {\n status = RESOLVED\n executeCallback(context, args, resolveCallbacks)\n }\n return this\n },\n rejectWith(context, args) {\n if (status === PENDING) {\n status = REJECTED\n executeCallback(context, args, rejectCallbacks)\n }\n return this\n },\n notifyWith(context, args) {\n if (status === PENDING) {\n status = PROGRESS\n executeCallback(context, args, notifyCallbacks)\n status = PENDING\n }\n return this\n },\n\n resolve() {\n return this.resolveWith(this, Array.from(arguments))\n },\n reject() {\n return this.rejectWith(this, Array.from(arguments))\n },\n notify() {\n return this.notifyWith(this, Array.from(arguments))\n },\n }\n return promise\n}\n","let init = false\nconst fnTest = /xyz/.test(\n function () {\n return 'xyz'\n }.toString()\n)\n ? /\\b_super\\b/\n : /.*/\n\nexport function ClassObject() {}\n\nClassObject.prototype._super = function () {}\n\nClassObject.prototype.instance = function (params) {\n return new this.constructor(params)\n}\n\nClassObject.prototype.proxy = function (fn) {\n fn = typeof fn == 'string' ? this[fn] : fn\n return (function (cx, cb) {\n return function () {\n return cb.apply(cx, [this].concat(Array.prototype.slice.call(arguments)))\n }\n })(this, fn)\n}\n\nfunction superMethod(parent, name, method) {\n return function () {\n let temp = this._super,\n result\n this._super = parent[name]\n result = method.apply(this, arguments)\n this._super = temp\n return result\n }\n}\n\nfunction assign(target, instance) {\n let prop,\n proto,\n parent = target.prototype\n init = true\n proto = new target()\n init = false\n for (prop in instance) {\n if (instance.hasOwnProperty(prop)) {\n if (\n typeof parent[prop] == 'function' &&\n typeof instance[prop] == 'function' &&\n fnTest.test(instance[prop])\n ) {\n proto[prop] = superMethod(parent, prop, instance[prop])\n } else {\n proto[prop] = instance[prop]\n }\n }\n }\n return proto\n}\n\nClassObject.extend = function extend(instance) {\n function Class() {\n if (!init && this) this['init'].apply(this, arguments)\n }\n Class.prototype = assign(this, instance)\n Class.prototype.constructor = Class\n Class.extend = extend\n return Class\n}\n","import { ClassObject } from './class.js'\n\nexport const Event = ClassObject.extend({\n init() {\n this.events = {}\n this.empty = []\n },\n on(type, callback) {\n ;(this.events[type] = this.events[type] || []).push(callback)\n return this\n },\n off(type, callback) {\n type || (this.events = {})\n let list = this.events[type] || this.empty,\n i = (list.length = callback ? list.length : 0)\n while (i--) callback === list[i] && list.splice(i, 1)\n return this\n },\n trigger(type) {\n let e = this.events[type] || this.empty,\n list = e.length > 0 ? e.slice(0, e.length) : e,\n i = 0,\n j\n while ((j = list[i++])) j.apply(j, this.empty.slice.call(arguments, 1))\n return this\n },\n})\n","import { ClassObject } from './class.js'\nimport { Event } from './event.js'\nimport * as Utils from './utils.js'\n\nexport const Module = ClassObject.extend({\n utils: Utils,\n getListener() {\n if (!this._listener_) this._listener_ = new Event()\n return this._listener_\n },\n destroy() {\n this.off()\n },\n on(type, callback) {\n this.getListener().on(type, callback)\n return this\n },\n off(type, callback) {\n this.getListener().off(type, callback)\n return this\n },\n proxy(fn) {\n if (!this._proxy_cache_) this._proxy_cache_ = {}\n if (this.utils.isString(fn)) {\n if (!this._proxy_cache_[fn]) {\n this._proxy_cache_[fn] = this._super(fn)\n }\n return this._proxy_cache_[fn]\n }\n return this._super(fn)\n },\n trigger() {\n this.getListener().trigger.apply(this.getListener(), arguments)\n return this\n },\n each(ob, cb) {\n this.utils.forEach(ob, this.proxy(cb))\n },\n addAttr(el, ob) {\n if (!this.utils.isElement(el)) return false\n this.utils.forEach(ob, function (v, k) {\n el.setAttribute(k, v)\n })\n },\n addCss(el, ob) {\n if (!this.utils.isElement(el)) return false\n this.utils.forEach(\n ob,\n function (v, k) {\n this.addCssProperty(el, k, v)\n },\n this\n )\n },\n addCssProperty(el, style, value) {\n let result = el.style.cssText.match(\n new RegExp('(?:[;\\\\s]|^)(' + style.replace('-', '\\\\-') + '\\\\s*:(.*?)(;|$))')\n ),\n idx\n if (result) {\n idx = result.index + result[0].indexOf(result[1])\n el.style.cssText =\n el.style.cssText.substring(0, idx) +\n style +\n ': ' +\n value +\n ';' +\n el.style.cssText.substring(idx + result[1].length)\n } else {\n el.style.cssText += ' ' + style + ': ' + value + ';'\n }\n },\n addEvent(el, ev, cb) {\n if (!el || !ev || !cb) return false\n cb = this.proxy(cb)\n if (el.addEventListener) el.addEventListener(ev, cb)\n else if (el['attachEvent']) el['attachEvent']('on' + ev, cb)\n },\n removeEvent(el, ev, cb) {\n if (!el || !ev || !cb) return false\n cb = this.proxy(cb)\n if (el.removeEventListener) el.removeEventListener(ev, cb, false)\n else if (el['detachEvent']) el['detachEvent']('on' + ev, cb)\n },\n prepareForm(url, data, target, method) {\n const form = this.utils.createElement('form')\n this.addAttr(form, {\n action: url,\n target: target || '_self',\n method: method || 'POST',\n })\n this.addCss(form, {\n display: 'none',\n })\n this.utils.forEach(\n data,\n function (v, k, el) {\n el = this.utils.createElement('input')\n el.type = 'hidden'\n el.name = k\n el.value = v\n form.appendChild(el)\n },\n this\n )\n return form\n },\n})\n","import { Module } from './module.js'\n\nexport const Connector = Module.extend({\n ns: 'crossDomain',\n origin: '*',\n uniqueId: 1,\n signature: null,\n init(params) {\n this.setTarget(params.target)\n this.setOrigin(params.origin)\n this.create()\n },\n create() {\n this.addEvent(window, 'message', 'router')\n },\n setOrigin(origin) {\n this.origin = origin || '*'\n },\n setTarget(target) {\n this.target = target\n return this\n },\n getUID() {\n return ++this.uniqueId\n },\n destroy() {\n this.removeEvent(window, 'message', 'router')\n this._super()\n },\n router(window, ev, response) {\n if (this.target !== ev.source) return false\n try {\n response = JSON.parse(ev.data)\n } catch (e) {}\n if (response && response.action && response.data) {\n this.trigger(response.action, response.data)\n }\n },\n send(action, data, request, options) {\n if (!this.target) {\n return\n }\n request = JSON.stringify({\n action: action,\n data: data,\n })\n options = {\n targetOrigin: this.origin,\n delegate: 'payment',\n }\n try {\n this.target.postMessage(request, options)\n } catch (e) {\n this.target.postMessage(request, this.origin, [])\n }\n },\n})\n","import styles from './acs_styles.js'\n\nexport default (data) => `\n${styles(data)}\n<div class=\"flitt-modal-wrapper\">\n <div class=\"flitt-modal\">\n <div class=\"flitt-modal-header\">\n <a href=\"javascript:void(0)\" class=\"flitt-modal-close\"></a>\n <div class=\"flitt-modal-title\">\n ${data.messages.modalHeader}\n <a href='javascript:void(0)'>${data.messages.modalLinkLabel}</a>\n </div>\n </div>\n <div class=\"flitt-modal-content\">\n <iframe src=\"about:blank\" class=\"flitt-modal-iframe\" frameborder=\"0\" allowtransparency=\"true\"></iframe>\n </div>\n </div>\n</div>\n`\n","export default (data) => `\n<style>\n .flitt-modal {\n box-sizing: border-box;\n margin: 100px auto;\n max-width: 680px;\n background-color: #fff;\n border-radius: 5px;\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\n overflow: hidden;\n }\n\n @media (max-width: 850px) {\n .flitt-modal {\n margin: 50px auto;\n }\n }\n\n @media (max-width: 695px) {\n .flitt-modal {\n max-width: 100%;\n margin: 5px;\n }\n }\n\n .flitt-modal-wrapper {\n box-sizing: border-box;\n overflow: auto;\n position: fixed;\n z-index: 99999;\n left: 0;\n bottom: 0;\n top: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.2);\n }\n\n .flitt-modal-header {\n box-sizing: border-box;\n background-color: #fafafa;\n height: 50px;\n box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n }\n\n .flitt-modal-close {\n box-sizing: border-box;\n float: right;\n overflow: hidden;\n height: 50px;\n text-decoration: none;\n border-top-right-radius: 5px;\n color: #949494;\n }\n\n .flitt-modal-close:hover, .flitt-modal-close:focus, .flitt-modal-close:active {\n text-decoration: none;\n color: #646464;\n }\n\n .flitt-modal-close:before {\n content: \"×\";\n font-size: 50px;\n line-height: 50px;\n padding: 0 10px;\n }\n\n .flitt-modal-title {\n box-sizing: border-box;\n border-top-left-radius: 5px;\n line-height: 20px;\n height: 50px;\n padding: 5px 15px;\n font-size: 12px;\n display: table-cell;\n vertical-align: middle;\n }\n .flitt-modal-content {\n box-sizing: border-box;\n border-bottom-left-radius: 5px;\n min-height: 650px;\n }\n .flitt-modal-iframe {\n overflow-x: hidden;\n border: 0;\n display: block;\n width: 100%;\n height: 750px;\n }\n</style>\n`\n","import { ClassObject } from './class.js'\n\nimport * as Views from '../views/index.js'\n\nfunction empty(name) {\n return function (data) {\n return ['template', name, 'not found'].join(' ')\n }\n}\n\nexport const Template = ClassObject.extend({\n init(name) {\n this.view = Views[name] || empty(name)\n },\n render(data) {\n return this.view(data)\n },\n})\n","import { Module } from './module.js'\nimport { Connector } from './connector.js'\nimport { Template } from './template.js'\n\nexport const Modal = Module.extend({\n init(data) {\n this.checkout = data.checkout\n this.model = data.model || {}\n this.messages = data.checkout.params.messages || {}\n this.template = new Template('acs')\n this.body = this.utils.querySelector('body')\n this.initModal()\n this.initConnector()\n },\n initModal() {\n this.name = ['modal-iframe', this.getRandomNumber()].join('-')\n this.modal = this.utils.createElement('div')\n this.modal.innerHTML = this.template.render({\n model: this.model,\n messages: this.messages,\n })\n this.iframe = this.find('.flitt-modal-iframe')\n this.addAttr(this.iframe, { name: this.name, id: this.name })\n if (this.model['send_data']) {\n this.form = this.prepareForm(this.model['url'], this.model['send_data'], this.name)\n this.modal.appendChild(this.form)\n } else {\n this.iframe.src = this.model['url']\n }\n this.addEvent(this.find('.flitt-modal-close'), 'click', 'closeModal')\n this.addEvent(this.find('.flitt-modal-title a'), 'click', 'submitForm')\n this.initScrollbar()\n this.body.appendChild(this.modal)\n if (this.form) {\n this.form.submit()\n }\n },\n measureScrollbar() {\n const scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.body.appendChild(scrollDiv)\n this.utils.removeElement(scrollDiv)\n return scrollDiv.offsetWidth - scrollDiv.clientWidth\n },\n checkScrollbar() {\n let documentElementRect\n let fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) {\n documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n },\n initScrollbar() {\n this.checkScrollbar()\n this.bodyPad = parseInt(this.utils.getStyle(this.body, 'padding-right') || 0, 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n this.originalOverflow = document.body.style.overflow || ''\n if (this.bodyIsOverflowing) {\n this.addCss(this.body, {\n paddingRight: [this.bodyPad + this.scrollbarWidth, 'px'].join(''),\n overflow: 'hidden',\n })\n }\n },\n resetScrollbar() {\n this.addCss(this.body, {\n paddingRight: this.originalBodyPad ? [this.originalBodyPad, 'px'].join('') : '',\n overflow: this.originalOverflow,\n })\n },\n getRandomNumber() {\n return Math.round(Math.random() * 1000000000)\n },\n find(selector) {\n return this.utils.querySelector(selector, this.modal)\n },\n closeModal(el, ev) {\n ev.preventDefault()\n this.trigger('close', this.data)\n this.removeModal()\n },\n submitForm(el, ev) {\n ev.preventDefault()\n this.trigger('submit', this.data)\n this.addAttr(this.form, {\n target: '_blank',\n })\n this.form.submit()\n },\n removeModal() {\n this.destroy()\n },\n destroy() {\n this.utils.removeElement(this.modal)\n this.resetScrollbar()\n this.connector.destroy()\n this._super()\n },\n initConnector() {\n this.connector = new Connector({ target: this.iframe.contentWindow })\n this.connector.on('response', this.proxy('onResponse'))\n },\n onResponse(ev, data) {\n this.sendResponse(data)\n this.removeModal()\n },\n sendResponse(data) {\n this.checkout.connector.send('request', {\n uid: data.uid,\n action: 'api.checkout.proxy',\n method: 'send',\n params: data,\n })\n },\n})\n","import { Module } from './module.js'\n\nexport const Model = Module.extend({\n init(data) {\n this.data = data || {}\n this.create()\n },\n create() {},\n eachProps(args) {\n const name = args[1] ? args[0] : null\n const callback = args[1] ? args[1] : args[0]\n const list = name ? this.alt(name, []) : this.data\n return {\n list: list,\n callback: callback,\n }\n },\n each() {\n const props = this.eachProps(arguments)\n for (let prop in props.list) {\n if (props.list.hasOwnProperty(prop)) {\n props.callback(this.instance(props.list[prop]), props.list[prop], prop)\n }\n }\n },\n filter() {\n const props = this.eachProps(arguments)\n for (let prop in props.list) {\n if (props.list.hasOwnProperty(prop)) {\n const item = this.instance(props.list[prop])\n if (props.callback(item, props.list[prop], prop)) {\n return props.list[prop]\n }\n }\n }\n },\n find() {\n const props = this.eachProps(arguments)\n for (let prop in props.list) {\n if (props.list.hasOwnProperty(prop)) {\n const item = this.instance(props.list[prop])\n if (props.callback(item, props.list[prop], prop)) {\n return item\n }\n }\n }\n return false\n },\n alt(prop, defaults) {\n prop = this.attr(prop)\n return typeof prop === 'undefined' ? defaults : prop\n },\n attr(key, value) {\n let i = 0,\n data = this.data,\n name = (key || '').split('.'),\n prop = name.pop(),\n len = arguments.length\n for (; i < name.length; i++) {\n if (data && data.hasOwnProperty(name[i])) {\n data = data[name[i]]\n } else {\n if (len === 2) {\n data = data[name[i]] = {}\n } else {\n break\n }\n }\n }\n if (len === 1) {\n return data ? data[prop] : undefined\n }\n if (len === 2) {\n data[prop] = value\n }\n return this\n },\n stringify() {\n return JSON.stringify(this.serialize())\n },\n serialize() {\n return this.data\n },\n})\n","import { Model } from './model.js'\nimport { ProxyUrl } from './config.js'\n\nexport const Response = Model.extend({\n stringFormat(string) {\n const that = this\n return (string || '').replace(/{(.+?)}/g, function (match, prop) {\n return that.attr(['order.order_data', prop].join('.')) || match\n })\n },\n setConnector(connector) {\n this.connector = connector\n return this\n },\n setUID(uid) {\n this.uid = uid\n return this\n },\n getUID() {\n return this.uid\n },\n formDataProxy(url, data, target, method) {\n location.assign(\n [\n ProxyUrl,\n JSON.stringify({\n url: url,\n params: data,\n target: target,\n method: method,\n }),\n ].join('#')\n )\n },\n formDataSubmit(url, data, target, method) {\n if (url.match(/^http:/)) {\n return this.formDataProxy(url, data, target, method)\n }\n const action = this.stringFormat(url)\n const form = this.prepareForm(action, data, target, method)\n const body = this.utils.querySelector('body')\n body.appendChild(form)\n form.submit()\n form.parentNode.removeChild(form)\n },\n inProgress() {\n return this.attr('order.in_progress')\n },\n readyToSubmit() {\n return this.attr('order.ready_to_submit')\n },\n waitForResponse() {\n return this.attr('order.pending')\n },\n needVerifyCode() {\n return this.attr('order.need_verify_code')\n },\n redirectUrl() {\n if (this.attr('url')) {\n this.redirectToUrl(this.attr('url'))\n return true\n }\n return false\n },\n redirectToUrl(url) {\n location.assign(url)\n },\n submitToMerchant() {\n const ready = this.attr('order.ready_to_submit')\n const url = this.attr('model.url') || this.attr('order.response_url')\n const method = this.attr('order.method')\n const action = this.attr('order.action')\n const data = this.attr('model.send_data') || this.attr('order.order_data')\n if (ready && url && data) {\n if (action === 'redirect' || data['get_without_parameters'] === true) {\n this.redirectToUrl(url)\n } else {\n this.formDataSubmit(url, data, '_self', method)\n }\n return true\n }\n },\n submitForm() {\n const method = this.attr('method')\n const url = this.attr('url')\n const data = this.attr('send_data')\n if (url && data) {\n this.formDataSubmit(url, data, '_self', method)\n return true\n }\n return false\n },\n sendResponse() {\n const action = this.attr('action')\n if (action === 'submit') return this.submitForm()\n if (action === 'redirect') return this.redirectUrl()\n return false\n },\n prepare3dsData() {\n const params = {}\n const data = this.attr('submit3ds')\n if (data['3ds']) {\n params.token = this.attr('token')\n params.uid = this.getUID()\n params.frame = true\n if (data['send_data'].TermUrl) {\n data['send_data'].TermUrl = [data['send_data'].TermUrl, this.utils.param(params)].join(\n '#!!'\n )\n }\n }\n return data\n },\n waitOn3dsDecline() {\n const data = this.alt('submit3ds.checkout_data', {\n js_wait_on_3ds_decline: false,\n js_wait_on_3ds_decline_duration: 0,\n })\n return data.js_wait_on_3ds_decline ? data.js_wait_on_3ds_decline_duration : 0\n },\n submit3dsForm() {\n if (this.attr('submit3ds.checkout_data')) {\n this.connector.trigger('modal', this.prepare3dsData())\n }\n },\n supportedMethod(method) {\n const item = this.find('methods', function (item) {\n return item.alt('supportedMethods', '').match(method)\n })\n if (item) {\n this.attr('methods', [item.serialize()])\n } else {\n this.attr('methods', [])\n }\n },\n})\n","import { Deferred } from './deferred.js'\nimport { Module } from './module.js'\nimport { Connector } from './connector.js'\nimport { Modal } from './modal.js'\nimport { Response } from './response.js'\nimport { ApiFrameCss, ApiOrigin, ApiEndpoint } from './config.js'\n\nexport const Api = Module.extend({\n defaults: {\n origin: ApiOrigin,\n endpoint: ApiEndpoint,\n messages: {\n modalHeader:\n 'Now you will be redirected to your bank 3DSecure. If you are not redirected please refer',\n modalLinkLabel: 'link',\n },\n },\n init(params) {\n this.initParams(params)\n },\n url(type, url) {\n return [this.params.origin, this.params.endpoint[type] || '/', url || ''].join('')\n },\n extendParams(params) {\n this.utils.extend(this.params, params)\n return this\n },\n initParams(params) {\n this.params = this.utils.extend({}, this.defaults)\n this.extendParams(params)\n this.setOrigin(this.params.origin)\n this.loaded = false\n this.created = false\n },\n setOrigin(origin) {\n if (this.utils.isString(origin)) {\n this.params.origin = origin\n }\n return this\n },\n scope(callback) {\n callback = this.proxy(callback)\n if (this.createFrame().loaded === true) {\n callback()\n } else {\n this.on('checkout.api', callback)\n }\n },\n request(model, method, params) {\n const defer = Deferred()\n const data = {\n uid: this.connector.getUID(),\n action: model,\n method: method,\n params: params || {},\n }\n this.connector.send('request', data)\n this.connector.on(\n data.uid,\n this.proxy(function (ev, response, model, action) {\n const responseModel = new Response(response)\n responseModel.setUID(data.uid)\n responseModel.setConnector(this.connector)\n action = 'resolveWith'\n if (responseModel.attr('submit3ds')) {\n action = 'notifyWith'\n }\n if (responseModel.attr('error')) {\n action = 'rejectWith'\n }\n defer[action](this, [responseModel])\n })\n )\n return defer\n },\n loadFrame(url) {\n this.iframe = this.utils.createElement('iframe')\n this.addAttr(this.iframe, {\n allowtransparency: true,\n frameborder: 0,\n scrolling: 'no',\n })\n this.addAttr(this.iframe, { src: url })\n this.addCss(this.iframe, ApiFrameCss)\n this.body = this.utils.querySelector('body')\n if (this.body.firstChild) {\n this.body.insertBefore(this.iframe, this.body.firstChild)\n } else {\n this.body.appendChild(this.iframe)\n }\n return this.iframe\n },\n createFrame() {\n if (this.created === false) {\n this.created = true\n this.iframe = this.loadFrame(this.url('gateway'))\n this.connector = new Connector({\n target: this.iframe.contentWindow,\n origin: this.params.origin,\n })\n this.connector.on('load', this.proxy('onLoadConnector'))\n this.connector.on('modal', this.proxy('onOpenModal'))\n }\n return this\n },\n onOpenModal(xhr, model) {\n this.modal = new Modal({\n checkout: this,\n model: model,\n })\n this.modal.on('close', this.proxy('onCloseModal'))\n },\n onCloseModal(modal, data) {\n this.trigger('modal.close', modal, data)\n },\n onLoadConnector() {\n this.loaded = true\n this.connector.off('load')\n this.trigger('checkout.api')\n this.off('checkout.api')\n },\n})\n","import { Deferred } from '../deferred.js'\nimport { Module } from '../module.js'\nimport { GooglePayApi, GoogleBaseRequest } from '../config.js'\n\nconst GooglePayClient = Module.extend({\n id: 'google-payments-api',\n init() {\n this.client = null\n this.wrapper = this.utils.querySelector('head')\n this.defer = Deferred()\n },\n load() {\n if (this.utils.getPath('google.payments.api.PaymentsClient')) {\n return this.defer.resolveWith(this)\n }\n if (this.utils.querySelector('#'.concat(this.id))) {\n return this.defer\n }\n this.script = this.utils.createElement('script')\n this.addAttr(this.script, {\n id: this.id,\n async: true,\n src: GooglePayApi,\n })\n this.utils.isElement(this.wrapper) && this.wrapper.appendChild(this.script)\n this.addEvent(this.script, 'load', 'onLoadSuccess')\n this.addEvent(this.script, 'error', 'onLoadError')\n return this.defer\n },\n show(methods) {\n const method = methods.find(function (item) {\n return item.supportedMethods === 'https://google.com/pay'\n })\n const client = this.getClient({ environment: method.data.environment })\n return client.loadPaymentData(method.data)\n },\n readyToPay(cx, response) {\n if (response.result) {\n this.defer.resolveWith(this)\n }\n },\n onError(cx, error) {\n this.defer.rejectWith(this, error)\n },\n onLoadSuccess() {\n const client = this.getClient()\n if (client)\n client\n .isReadyToPay(GoogleBaseRequest)\n .then(this.proxy('readyToPay'))\n .catch(this.proxy('onError'))\n },\n onLoadError() {\n this.defer.rejectWith(this)\n },\n getClient(options) {\n if (options || this.client === null) {\n const PaymentClient = this.utils.getPath('google.payments.api.PaymentsClient')\n if (PaymentClient) {\n this.client = new PaymentClient(options)\n } else {\n this.onError(null, new Error('Google Client Error'))\n }\n }\n return this.client\n },\n})\n\nexport const GooglePay = new GooglePayClient()\n","import { Module } from '../module.js'\nimport { Api } from '../api.js'\nimport { GooglePay } from '../google/pay.js'\nimport { Deferred } from '../deferred.js'\nimport { getPaymentRequest, hasProp, isFunction } from '../utils.js'\nimport { GoogleBaseRequest, PaymentRequestDetails } from '../config.js'\n\nconst getPaymentMethods = () => {\n return [\n [\n 'google',\n {\n supportedMethods: 'https://google.com/pay',\n data: GoogleBaseRequest,\n },\n ],\n [\n 'apple',\n {\n supportedMethods: 'https://apple.com/apple-pay',\n },\n () => hasProp(window, 'ApplePaySession'),\n ],\n ]\n}\n\nlet requestDeferred = null\n\nlet requestSupported = {\n fallback: false,\n provider: [],\n}\n\nconst getSupportedMethods = () => {\n if (requestDeferred) return requestDeferred\n requestDeferred = Deferred()\n const methods = getPaymentMethods()\n const details = PaymentRequestDetails\n ;(function check() {\n const item = methods.shift()\n if (item === undefined) {\n if (requestSupported.provider.indexOf('google') === -1) {\n requestSupported.fallback = true\n requestSupported.provider.push('google')\n }\n return requestDeferred.resolve(requestSupported)\n }\n const method = item.shift()\n const config = item.shift()\n const callback = item.shift()\n if (isFunction(callback) && callback() === false) {\n setTimeout(check, 25)\n return false\n }\n const request = getPaymentRequest([config], details, {})\n if (request) {\n request\n .canMakePayment()\n .then(function (status) {\n if (status === true) requestSupported.provider.push(method)\n setTimeout(check, 25)\n })\n .catch(function () {\n setTimeout(check, 25)\n })\n } else {\n setTimeout(check, 25)\n }\n })()\n return requestDeferred\n}\n\nconst PaymentRequestInterface = Module.extend({\n config: {\n payment_system: '',\n fallback: false,\n methods: [],\n details: {},\n options: {},\n },\n supported: {\n fallback: false,\n provider: [],\n },\n payload: {\n payment_system: null,\n provider: [],\n },\n params: {},\n getSupportedMethods() {\n return getSupportedMethods().then((supported) => {\n this.setSupported(supported)\n return supported\n })\n },\n init(params) {\n this.params = params || {}\n },\n setSupported(supported) {\n this.supported = supported\n this.trigger('supported', supported)\n return this\n },\n setPayload(payload) {\n this.payload = payload\n this.trigger('payload', payload)\n return this\n },\n setMerchant(merchant) {\n this.merchant = merchant\n },\n setApi(api) {\n if (api instanceof Api) this.api = api\n return this\n },\n getProviderPayload(method) {\n return this.payload.provider[method] || {}\n },\n isMethodSupported(method) {\n return this.supported.provider.indexOf(method) !== -1\n },\n isFallbackMethod(method) {\n return method === 'google' && this.supported.fallback\n },\n})\n\nexport const PaymentRequestApi = PaymentRequestInterface.extend({\n request(method, params, success, failure) {\n if (this.api) {\n this.api.scope(\n this.proxy(function () {\n this.api\n .request('api.checkout.pay', method, params)\n .done(this.proxy(success))\n .fail(this.proxy(failure))\n })\n )\n }\n },\n update(data) {\n const defer = Deferred()\n this.request(\n 'methods',\n data,\n function (cx, model) {\n this.onUpdate(cx, model)\n defer.resolveWith(this, [model])\n },\n function (cx, model) {\n this.onError(cx, model)\n defer.rejectWith(this, [model])\n }\n )\n return defer\n },\n onUpdate(cx, model) {\n this.setPayload(model.serialize())\n },\n onError(cx, model) {\n this.trigger('error', model)\n },\n isPending() {\n return this.pendingState === true\n },\n setPending(state) {\n this.pendingState = state\n clearTimeout(this.pendingTimeoutEvent)\n this.pendingTimeoutEvent = setTimeout(() => {\n this.trigger('pending', state)\n }, 100)\n },\n beforeCallback(defer) {\n defer.resolve()\n },\n setBeforeCallback(callback) {\n if (isFunction(callback)) {\n this.beforeCallback = callback\n }\n return this\n },\n before() {\n if (this.beforeDeferred) {\n return this.beforeDeferred\n }\n this.beforeDeferred = Deferred()\n this.beforeDeferred.always(\n this.proxy(function () {\n this.beforeDeferred = null\n })\n )\n this.beforeCallback(this.beforeDeferred)\n return this.beforeDeferred\n },\n pay(method) {\n if (this.isPending()) return\n this.setPending(true)\n const payload = this.getProviderPayload(method)\n const response = Deferred()\n response.always(function () {\n this.setPending(false)\n })\n if (this.isMethodSupported(method) === false) {\n return response.rejectWith(this, [{ test: true }])\n }\n if (this.isFallbackMethod(method)) {\n this.makePaymentFallback(response, payload.methods)\n } else {\n this.makeNativePayment(response, payload)\n }\n return response\n .done(function (details) {\n this.trigger('details', {\n payment_system: this.payload.payment_system,\n data: details,\n })\n })\n .fail(function (error) {\n this.trigger('error', error)\n if (this.params.embedded === true) {\n location.reload()\n this.trigger('reload', this.params)\n }\n })\n },\n makeNativePayment(defer, payload) {\n const self = this\n const request = getPaymentRequest(payload.methods, payload.details, payload.options)\n this.addEvent(request, 'merchantvalidation', 'merchantValidation')\n request\n .canMakePayment()\n .then(function () {\n request\n .show()\n .then(function (response) {\n response.complete('success').then(function () {\n defer.resolveWith(self, [response.details])\n })\n })\n .catch(function (e) {\n defer.rejectWith(self, [{ code: e.code, message: e.message }])\n })\n })\n .catch(function (e) {\n defer.rejectWith(self, [{ code: e.code, message: e.message }])\n })\n },\n makePaymentFallback(defer, methods) {\n const self = this\n GooglePay.load().then(() => {\n GooglePay.show(methods)\n .then((details) => {\n defer.resolveWith(self, [details])\n })\n .catch((e) => {\n defer.rejectWith(self, [{ code: e.code, message: e.message }])\n })\n })\n },\n appleSession(params) {\n const defer = Deferred()\n this.request(\n 'session',\n params,\n function (c, model) {\n defer.resolveWith(this, [model.serialize()])\n },\n function (c, model) {\n defer.rejectWith(this, [model])\n }\n )\n return defer\n },\n merchantValidation(cx, event) {\n const { validationURL } = event\n const { host } = location\n this.appleSession({\n url: validationURL,\n domain: host,\n merchant_id: this.merchant,\n })\n .done(function (session) {\n try {\n event.complete(session.data)\n } catch (error) {\n this.trigger('error', error)\n }\n })\n .fail(function (error) {\n this.trigger('error', error)\n })\n },\n})\n","import { Module } from '../module.js'\nimport { Connector } from '../connector.js'\nimport {\n ApiOrigin,\n ApiEndpoint,\n ButtonContainerCss,\n ButtonCoverCss,\n ButtonCoverAttrs,\n ButtonFrameCss,\n ButtonFrameAttrs,\n} from '../config.js'\n\nimport { PaymentRequestApi } from './request.js'\n\nexport const PaymentElement = Module.extend({\n defaults: {\n method: null,\n appendTo: null,\n className: 'payment-element',\n origin: ApiOrigin,\n endpoint: ApiEndpoint.element,\n mode: 'plain',\n color: 'black',\n lang: 'en',\n height: 38,\n },\n init(params) {\n this.params = {}\n this.utils.extend(this.params, this.defaults)\n this.utils.extend(this.params, params)\n this.initElement()\n },\n getElementUrl() {\n return [this.params.origin, this.params.endpoint].join('')\n },\n getElementOptions() {\n return this.utils.param({\n method: this.params.method,\n mode: this.params.mode,\n style: this.params.style,\n color: this.params.color,\n lang: this.params.lang,\n })\n },\n initElement() {\n this.element = this.utils.createElement('div')\n this.iframe = this.utils.createElement('iframe')\n this.button = this.utils.createElement('a')\n this.addCss(this.element, ButtonContainerCss)\n this.addCss(this.button, ButtonCoverCss)\n this.addAttr(this.button, ButtonCoverAttrs)\n this.addCss(this.iframe, ButtonFrameCss)\n this.addAttr(this.iframe, ButtonFrameAttrs)\n this.addAttr(this.iframe, {\n src: [this.getElementUrl(), this.getElementOptions()].join('?'),\n })\n this.addEvent(this.iframe, 'load', 'onloadConnector')\n this.addEvent(this.iframe, 'error', 'errorConnector')\n this.addAttr(this.element, {\n class: this.params.className,\n })\n this.element.appendChild(this.iframe)\n this.element.appendChild(this.button)\n },\n errorConnector() {},\n onloadConnector() {\n this.connector = new Connector({\n target: this.iframe.contentWindow,\n origin: this.params.origin,\n })\n },\n send(action, data) {\n if (this.connector) {\n this.connector.send(action, data)\n }\n },\n onEvent(cx, ev) {\n ev.preventDefault()\n if (this.pending) return false\n this.send('event', { type: ev.type })\n },\n onClick() {\n if (this.pending) return false\n this.request.before().done(this.proxy('onClickDone')).fail(this.proxy('onClickFail'))\n },\n onClickDone() {\n this.request.pay(this.params.method)\n },\n onClickFail() {},\n onSupported(cx, supported) {\n if (supported.provider.includes(this.params.method)) {\n this.mount()\n }\n },\n onPayload(cx, payload) {\n if (payload.allowed.includes(this.params.method)) {\n this.show()\n }\n },\n onPending(cx, state) {\n this.pending = state\n this.send('pending', { state: state })\n },\n initEvents() {\n this.addEvent(this.button, 'mouseenter', 'onEvent')\n this.addEvent(this.button, 'mouseleave', 'onEvent')\n this.addEvent(this.button, 'blur', 'onEvent')\n this.addEvent(this.button, 'focus', 'onEvent')\n this.addEvent(this.button, 'click', 'onClick')\n },\n setPaymentRequest(request) {\n if (!(request instanceof PaymentRequestApi))\n throw Error('request is not instance of PaymentRequestApi')\n this.request = request\n const onSupported = this.proxy('onSupported')\n const onPayload = this.proxy('onPayload')\n const onPending = this.proxy('onPending')\n this.request.off('supported', onSupported).on('supported', onSupported)\n this.request.off('payload', onPayload).on('payload', onPayload)\n this.request.off('pending', onPending).on('pending', onPending)\n return this\n },\n appendTo(appendTo) {\n const container = this.utils.querySelector(appendTo)\n if (container) container.appendChild(this.element)\n this.initEvents()\n return this\n },\n mount() {\n this.appendTo(this.params.appendTo)\n },\n isMounted() {\n return document.body.contains(this.element)\n },\n show() {\n if (this.isMounted() === false) return this\n this.addCss(this.iframe, {\n transition: 'opacity 0.6s 0.4s ease-out',\n opacity: this.utils.cssUnit(1),\n })\n this.addCss(this.element, {\n transition: 'height 0.2s ease-out',\n height: this.utils.cssUnit(this.params.height, 'px'),\n })\n this.trigger('show', {})\n return this\n },\n hide() {\n if (this.isMounted() === false) return this\n this.addCss(this.iframe, {\n transition: 'opacity 0.4s ease-out',\n opacity: this.utils.cssUnit(0),\n })\n this.addCss(this.element, {\n transition: 'height 0.2s 0.4s ease-out',\n height: this.utils.cssUnit(0, 'px'),\n })\n this.trigger('hide', {})\n return this\n },\n})\n","import { Module } from '../module.js'\nimport { Api } from '../api.js'\nimport { PaymentRequestApi } from './request.js'\nimport { PaymentElement } from './element.js'\nimport { forEach } from '../utils.js'\nimport { ApiOrigin, ApiEndpoint } from '../config.js'\n\nexport const PaymentButton = Module.extend({\n defaults: {\n origin: ApiOrigin,\n endpoint: ApiEndpoint,\n methods: ['apple', 'google'],\n element: null,\n style: {\n height: 38,\n mode: 'default',\n type: 'long',\n color: 'black',\n },\n data: {\n lang: 'en',\n },\n before(defer) {\n defer.resolve()\n },\n },\n init(params) {\n this.elements = {}\n this.supported = false\n this.params = {\n element: params.element,\n methods: params.methods || this.defaults.methods,\n origin: params.origin || this.defaults.origin,\n endpoint: this.utils.extend({}, this.defaults.endpoint, params.endpoint),\n style: this.utils.extend({}, this.defaults.style, params.style),\n before: params.before || this.defaults.before,\n data: this.utils.extend({}, this.defaults.data, params.data),\n }\n this.initApi(params.api)\n this.initPaymentRequestApi()\n this.initElements()\n this.initData()\n },\n initData() {\n const data = this.params.data\n if (!data.merchant_id) return\n if ((!data.currency || !data.amount) && !data.token) return\n this.update()\n },\n initApi(api) {\n if (api instanceof Api) {\n this.api = api\n } else {\n this.api = new Api({\n origin: this.params.origin,\n endpoint: this.params.endpoint,\n })\n }\n },\n initPaymentRequestApi() {\n this.request = new PaymentRequestApi()\n this.request.setApi(this.api)\n this.request.setMerchant(this.params.data.merchant_id)\n this.request.setBeforeCallback(this.params.before)\n this.request.on('details', this.proxy('onDetails'))\n this.request.on('error', this.proxy('onError'))\n },\n initElements() {\n const style = this.params.style\n const data = this.params.data\n const origin = this.params.origin\n const appendTo = this.params.element\n const endpoint = this.params.endpoint.element\n const request = this.request\n this.container = this.utils.querySelector(this.params.element)\n this.addCss(this.container, {\n display: 'flex',\n gap: '1rem',\n 'flex-direction': 'column',\n })\n forEach(this.params.methods, function (method) {\n const element = new PaymentElement({\n origin: origin,\n endpoint: endpoint,\n method: method,\n appendTo: appendTo,\n color: style.color,\n mode: style.mode,\n lang: data.lang,\n height: style.height,\n })\n element.setPaymentRequest(request)\n })\n request.getSupportedMethods()\n },\n update(data) {\n return this.request.update(this.utils.extend(this.params.data, data || {}))\n },\n onDetails(cx, data) {\n this.api.scope(() => {\n this.api\n .request('api.checkout.form', 'request', this.utils.extend({}, this.params.data, data))\n .done(this.proxy('onSuccess'))\n .fail(this.proxy('onError'))\n })\n },\n onSuccess(cx, data) {\n this.trigger('success', data)\n },\n onError(cx, data) {\n this.trigger('error', data)\n },\n})\n","import { Module } from '../module.js'\nimport { Connector } from '../connector.js'\nimport { PaymentRequestApi } from './request.js'\n\nimport {\n GooglePayLanguages,\n ButtonColorMap,\n ButtonDefaultColor,\n ButtonLabelMap,\n} from '../config.js'\n\nconst parseConfig = (config) => {\n const data = {\n payment_system: config.payment_system,\n provider: {},\n allowed: [],\n }\n const methods = config.methods || []\n const details = config.details || {}\n const options = config.options || {}\n const regex = new RegExp('//([a-z]+)\\\\.com/')\n methods.forEach(function (item) {\n const match = regex.exec(item.supportedMethods)\n if (match === null) return\n data.provider[match[1]] = {\n methods: [item],\n details: details,\n options: options,\n }\n })\n return data\n}\n\nexport const PaymentContainer = Module.extend({\n defaults: {\n element: null,\n method: 'card',\n data: {\n lang: 'en',\n },\n style: {},\n },\n init(params) {\n this.initParams(params)\n this.initEvents()\n },\n initParams(params) {\n this.params = this.utils.extend({}, this.defaults, params)\n this.element = this.utils.querySelector(this.params.element)\n this.connector = new Connector({\n target: window.parent,\n })\n this.payment = new PaymentRequestApi({\n embedded: true,\n })\n },\n extendParams(params) {\n this.utils.extend(this.params, {\n method: params.method,\n style: params.style,\n data: params.data,\n css: params.css,\n })\n },\n getGoogleLangSupport(lang, defaults) {\n return GooglePayLanguages.indexOf(lang) !== -1 ? lang : defaults\n },\n getButtonColor(color) {\n return ButtonColorMap[color] || ButtonDefaultColor\n },\n getGoogleSvg(color, lang, mode) {\n const params = {\n endpoint: 'https://www.gstatic.com/instantbuy/svg',\n color: this.getButtonColor(color),\n mode: mode || 'plain',\n lang: lang || 'en',\n }\n let format = 'url(\"{endpoint}/{color}/{mode}/{lang}.svg\")'\n if (mode === 'plain') {\n format = 'url(\"{endpoint}/{color}_gpay.svg\")'\n }\n if (mode === 'buy') {\n format = 'url(\"{endpoint}/{color}/{lang}.svg\")'\n }\n return this.utils.stringFormat(format, params)\n },\n getAppleSvg(color) {\n const format = 'url(\"svg/apple-pay-{color}.svg\")'\n const params = {\n color: this.getButtonColor(color),\n }\n return this.utils.stringFormat(format, params)\n },\n getAppleLabel(lang) {\n return ButtonLabelMap[lang || 'en']\n },\n addFrameImage() {\n const frame =\n this.utils.querySelector('iframe', this.element) || this.utils.createElement('iframe')\n const url = 'https://pay.google.com/gp/p/generate_gpay_btn_img'\n const style = this.params.style || {}\n const lang = this.getGoogleLangSupport(this.params.data.lang, 'en')\n const query = {\n buttonColor: style.color || 'black',\n browserLocale: lang,\n buttonSizeMode: 'fill',\n }\n const src = [url, this.utils.param(query)].join('?')\n this.addAttr(frame, {\n scrolling: 'no',\n frameborder: 0,\n src: src,\n })\n this.element.appendChild(frame)\n this.element.classList.remove('short', 'long')\n },\n styleButton() {\n let element = this.element\n let params = this.params\n let method = params.method\n let style = params.style || {}\n let lang = params.data.lang || 'en'\n let css = params.css || {}\n element.setAttribute('class', '')\n element.classList.add('button', 'pending')\n if (method === 'card') method = 'google'\n if (method) {\n element.classList.add(method)\n }\n if (lang) {\n element.classList.add(lang)\n }\n if (style.type) {\n element.classList.add(style.type)\n }\n if (style.mode) {\n element.classList.add(style.mode)\n }\n if (style.color) {\n element.classList.add(style.color)\n }\n if (method === 'google') {\n if (style.type === 'short') {\n style.mode = 'plain'\n }\n if (style.mode === 'default') {\n this.addFrameImage()\n } else {\n css.image = this.getGoogleSvg(style.color, lang, style.mode)\n }\n }\n if (method === 'apple') {\n css.image = this.getAppleSvg(style.color)\n css.label = this.getAppleLabel(lang, style.mode)\n }\n if (css) {\n this.utils.forEach(css, function (value, name) {\n element.style.setProperty(['--', name].join(''), value)\n })\n }\n },\n initEvents() {\n this.payment.on(\n 'details',\n this.proxy(function (cx, data) {\n this.connector.send('details', data)\n this.connector.send('complete', data)\n })\n )\n this.payment.on(\n 'reload',\n this.proxy(function (cx, data) {\n this.connector.send('reload', data)\n })\n )\n this.payment.on(\n 'error',\n this.proxy(function (cx, data) {\n this.connector.send('error', data)\n })\n )\n this.connector.on(\n 'options',\n this.proxy(function (cx, data) {\n this.extendParams(data)\n this.styleButton()\n })\n )\n this.connector.on(\n 'pay',\n this.proxy(function () {\n if (!this.element.classList.contains('pending')) {\n if (this.params.method === 'apple') {\n const payload = this.payment.payload || {}\n const apple = payload.provider['apple'] || {}\n this.connector.send('pay', {\n payment_system: payload.payment_system,\n methods: apple.methods,\n details: apple.details,\n options: apple.options,\n })\n } else {\n this.payment\n .setSupported({\n fallback: false,\n provider: ['google'],\n })\n .pay('google')\n }\n }\n })\n )\n this.connector.on(\n 'config',\n this.proxy(function (cx, data) {\n this.payment.setPayload((data = parseConfig(data)))\n if (data.payment_system && Object.keys(data.provider).length > 0) {\n this.element.classList.remove('pending')\n this.element.classList.add('ready')\n this.connector.send('show', {})\n } else {\n this.connector.send('hide', {})\n }\n })\n )\n this.connector.on(\n 'event',\n this.proxy(function (cx, data) {\n if (data.type === 'mouseenter') {\n this.element.classList.add('hover')\n }\n if (data.type === 'mouseleave') {\n this.element.classList.remove('hover')\n }\n if (data.type === 'focusin') {\n this.element.classList.add('active')\n }\n if (data.type === 'focusout') {\n this.element.classList.remove('active')\n }\n })\n )\n },\n})\n","import { Api } from '../api.js'\n\nexport const Widget = Api.extend({\n init(params) {\n this.initParams(params)\n this.initWidget()\n },\n initWidget() {\n this.initOptions(this.params.options)\n if (this.utils.isString(this.params.element)) {\n this.initElement(this.params.element)\n }\n },\n initOptions() {\n if (this.utils.isPlainObject(this.params.options)) {\n this.params.options = this.params.options || {}\n }\n },\n initElement(el) {},\n addSelectorEvent(el, ev, cb) {\n this.each(this.utils.querySelectorAll(el), function (cx, element) {\n this.addEvent(element, ev, cb)\n })\n return this\n },\n getRequestParams() {\n return {}\n },\n sendRequest(el, ev) {\n if (ev.defaultPrevented) return\n ev.preventDefault()\n this.trigger('request', this.getRequestParams(el))\n this.scope(function () {\n this.request('api.checkout.form', 'request', this.getRequestParams(el))\n .done(this.proxy('onSuccess'))\n .fail(this.proxy('onError'))\n .progress(this.proxy('onProgress'))\n })\n },\n onProgress(cx, model) {\n this.trigger('progress', model)\n },\n onSuccess(cx, model) {\n model.sendResponse()\n model.submitToMerchant()\n this.trigger('success', model)\n },\n onError(cx, model) {\n this.trigger('error', model)\n },\n})\n","import { Module } from '../module.js'\nimport { Widget } from './index.js'\n\nconst FormData = Module.extend({\n init(form) {\n this.setFormElement(form)\n },\n setFormElement(form) {\n if (this.utils.isElement(form)) {\n this.form = form\n }\n },\n getData(filter) {\n const params = this.deparam(this.serializeArray())\n return filter === true ? this.utils.cleanObject(params) : params\n },\n serializeArray() {\n const list = this.utils.toArray(this.form.elements)\n return this.utils.map(list, function (field) {\n if (field.disabled || field.name === '') return\n if (field.type.match('checkbox|radio') && !field.checked) return\n return {\n name: field.name,\n value: field.value,\n }\n })\n },\n serializeAndEncode() {\n return this.utils\n .map(this.serializeArray(), function (field) {\n return [field.name, encodeURIComponent(field.value)].join('=')\n })\n .join('&')\n },\n deparam(obj) {\n let prop,\n result = {}\n const breaker = /[^\\[\\]]+|\\[\\]$/g\n const attr = function (name, value) {\n let i,\n data = result,\n last = name.pop(),\n len = name.length\n for (i = 0; i < len; i++) {\n if (!data[name[i]]) data[name[i]] = len === i + 1 && last === '[]' ? [] : {}\n data = data[name[i]]\n }\n if (last === '[]') {\n data.push(value)\n } else {\n data[last] = value\n }\n }\n for (prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n attr(obj[prop].name.match(breaker), obj[prop].value)\n }\n }\n return result\n },\n})\n\nexport const WidgetForm = Widget.extend({\n initElement(el) {\n this.addSelectorEvent(el, 'submit', 'sendRequest')\n },\n getRequestParams(el) {\n return this.utils.extend({}, this.params.options, new FormData(el).getData())\n },\n})\n","import { Widget } from './index.js'\n\nexport const WidgetButton = Widget.extend({\n attributes: {},\n initElement(el) {\n if (this.utils.isPlainObject(this.params.attributes)) {\n this.utils.extend(this.attributes, this.params.attributes)\n }\n this.addSelectorEvent(el, 'click', 'sendRequest')\n },\n getRequestParams(el) {\n return this.utils.extend({}, this.params.options, this.getElementData(el))\n },\n getElementData(el) {\n const result = {}\n this.utils.forEach(this.attributes, function (value, key) {\n if (el.hasAttribute(key)) {\n result[value] = el.getAttribute(key)\n }\n })\n return result\n },\n})\n","import { Component } from './core/component.js'\n\nimport * as Utils from './core/utils.js'\nimport * as Config from './core/config.js'\n\nimport { Api } from './core/api.js'\nimport { Module } from './core/module.js'\nimport { Connector } from './core/connector.js'\nimport { Response } from './core/response.js'\nimport { PaymentButton } from './core/payment/button.js'\nimport { PaymentRequestApi } from './core/payment/request.js'\nimport { PaymentElement } from './core/payment/element.js'\nimport { PaymentContainer } from './core/payment/container.js'\nimport { WidgetForm } from './core/widget/form.js'\nimport { WidgetButton } from './core/widget/button.js'\n\nComponent.add('Api', Api)\nComponent.add('Connector', Connector)\nComponent.add('PaymentButton', PaymentButton)\nComponent.add('PaymentRequestApi', PaymentRequestApi)\nComponent.add('PaymentElement', PaymentElement)\nComponent.add('FormWidget', WidgetForm)\nComponent.add('ButtonWidget', WidgetButton)\n\nComponent.Utils = Utils\nComponent.Config = Config\nComponent.Api = Api\nComponent.Module = Module\nComponent.Connector = Connector\nComponent.Response = Response\nComponent.PaymentRequestApi = PaymentRequestApi\nComponent.PaymentContainer = PaymentContainer\nComponent.PaymentElement = PaymentElement\nComponent.PaymentButton = PaymentButton\n\nexport {\n Utils,\n Config,\n Api,\n Module,\n Connector,\n Response,\n PaymentRequestApi,\n PaymentContainer,\n PaymentElement,\n PaymentButton,\n}\n\nexport default Component\n"],"names":["modules","instance","newModule","name","params","Error","join","Component","get","add","module","addModule","this","cx","NativePaymentRequest","digitTest","keyBreaker","paramTest","r20","rbracket","matchSymbol","prep","str","decodeURIComponent","replace","flatten","array","result","forEach","item","concat","isArray","recursiveParams","prefix","obj","next","prop","test","isPlainObject","getType","o","toString","call","match","toLowerCase","_typeof","constructor","Object","isFunction","isElement","nodeType","toArray","slice","hasProp","v","hasOwnProperty","ob","cb","p","cleanObject","length","splice","extend","_len","arguments","args","Array","_key","value","key","uuid","a","b","Math","random","getPaymentRequest","window","PaymentRequest","methods","details","options","request","id","e","el","attrs","setAttribute","_len2","_key2","shift","classList","className","trim","split","map","token","indexOf","push","tag","document","createElement","unit","String","data","charAt","pair","parts","current","j","l","lastPart","pop","path","props","first","getComputedStyle","word","letter","toUpperCase","defaults","JSON","parse","t","r","undefined","encodeURIComponent","querySelector","querySelectorAll","removeAttribute","_len3","_key3","index","parentNode","removeChild","format","expr","ApiOrigin","ApiEndpoint","gateway","element","ProxyUrl","GooglePayApi","GoogleBaseRequest","apiVersion","apiVersionMinor","allowedPaymentMethods","type","parameters","allowedAuthMethods","allowedCardNetworks","GooglePayLanguages","PaymentRequestDetails","total","label","amount","currency","ApiFrameCss","width","height","left","bottom","position","border","ButtonFrameCss","margin","padding","display","background","opacity","overflow","outline","ButtonFrameAttrs","tabindex","scrolling","frameborder","allowtransparency","allowpaymentrequest","ButtonCoverCss","top","cursor","ButtonCoverAttrs","role","ButtonContainerCss","ButtonDefaultColor","ButtonColorMap","dark","light","black","white","ButtonLabelMap","ar","bg","ca","zh","hr","cs","da","nl","en","et","es","fi","fr","de","it","ja","ko","ms","no","pl","pt","ru","sr","sk","sl","sv","th","tr","uk","Deferred","resolveCallbacks","rejectCallbacks","notifyCallbacks","status","resultContext","resultArgs","chainArgs","executeCallback","context","callbacks","list","save","isArgs","from","execute","apply","then","promise","done","callback","fail","progress","always","resolve","reject","object","state","isPending","isRejected","isResolved","resetState","resolveWith","rejectWith","notifyWith","notify","init","fnTest","ClassObject","superMethod","parent","method","temp","_super","prototype","proxy","fn","Class","target","proto","assign","Event","events","empty","on","off","i","trigger","Module","utils","Utils","getListener","_listener_","destroy","_proxy_cache_","isString","each","addAttr","k","addCss","addCssProperty","style","idx","cssText","RegExp","substring","addEvent","ev","addEventListener","removeEvent","removeEventListener","prepareForm","url","form","action","appendChild","Connector","ns","origin","uniqueId","signature","setTarget","setOrigin","create","getUID","router","response","source","send","stringify","targetOrigin","delegate","postMessage","messages","modalHeader","modalLinkLabel","Template","view","Views","render","Modal","checkout","model","template","body","initModal","initConnector","getRandomNumber","modal","innerHTML","iframe","find","src","initScrollbar","submit","measureScrollbar","scrollDiv","removeElement","offsetWidth","clientWidth","checkScrollbar","documentElementRect","fullWindowWidth","innerWidth","documentElement","getBoundingClientRect","right","abs","bodyIsOverflowing","scrollbarWidth","bodyPad","parseInt","getStyle","originalBodyPad","paddingRight","originalOverflow","resetScrollbar","round","selector","closeModal","preventDefault","removeModal","submitForm","connector","contentWindow","onResponse","sendResponse","uid","Model","eachProps","alt","filter","attr","len","serialize","Response","stringFormat","string","that","setConnector","setUID","formDataProxy","location","formDataSubmit","inProgress","readyToSubmit","waitForResponse","needVerifyCode","redirectUrl","redirectToUrl","submitToMerchant","ready","prepare3dsData","frame","TermUrl","param","waitOn3dsDecline","js_wait_on_3ds_decline","js_wait_on_3ds_decline_duration","submit3dsForm","supportedMethod","Api","endpoint","initParams","extendParams","loaded","created","scope","createFrame","defer","responseModel","loadFrame","firstChild","insertBefore","onOpenModal","xhr","onCloseModal","onLoadConnector","GooglePay","client","wrapper","load","getPath","script","async","show","supportedMethods","getClient","environment","loadPaymentData","readyToPay","onError","error","onLoadSuccess","isReadyToPay","onLoadError","PaymentClient","requestDeferred","requestSupported","fallback","provider","getSupportedMethods","check","config","setTimeout","canMakePayment","PaymentRequestApi","payment_system","supported","payload","_this","setSupported","setPayload","setMerchant","merchant","setApi","api","getProviderPayload","isMethodSupported","isFallbackMethod","success","failure","update","onUpdate","pendingState","setPending","_this2","clearTimeout","pendingTimeoutEvent","beforeCallback","setBeforeCallback","before","beforeDeferred","pay","makePaymentFallback","makeNativePayment","embedded","reload","self","complete","code","message","appleSession","c","merchantValidation","event","validationURL","host","domain","merchant_id","session","PaymentElement","appendTo","mode","color","lang","initElement","getElementUrl","getElementOptions","button","class","errorConnector","onloadConnector","onEvent","pending","onClick","onClickDone","onClickFail","onSupported","includes","mount","onPayload","allowed","onPending","initEvents","setPaymentRequest","container","isMounted","contains","transition","cssUnit","hide","PaymentButton","elements","initApi","initPaymentRequestApi","initElements","initData","gap","onDetails","onSuccess","PaymentContainer","payment","css","getGoogleLangSupport","getButtonColor","getGoogleSvg","getAppleSvg","getAppleLabel","addFrameImage","query","buttonColor","browserLocale","buttonSizeMode","remove","styleButton","image","setProperty","apple","regex","exec","parseConfig","keys","Widget","initWidget","initOptions","addSelectorEvent","getRequestParams","sendRequest","defaultPrevented","onProgress","FormData","setFormElement","getData","deparam","serializeArray","field","disabled","checked","serializeAndEncode","breaker","last","WidgetForm","WidgetButton","attributes","getElementData","hasAttribute","getAttribute","Config"],"mappings":"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"}
|
package/package.json
CHANGED