@flittpayments/js-sdk 2.0.5 → 2.0.7

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.
@@ -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 === 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 container: 'body',\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 this.domReady(function () {\n if (this.createFrame().loaded === true) {\n callback()\n } else {\n this.on('checkout.api', callback)\n }\n })\n },\n domReady(callback) {\n callback = this.proxy(callback)\n document.readyState !== 'loading'\n ? callback()\n : window.addEventListener('DOMContentLoaded', callback)\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\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.container = this.utils.querySelector(this.params.container)\n if (this.container) {\n if (this.container.firstChild) {\n this.container.insertBefore(this.iframe, this.container.firstChild)\n } else {\n this.container.appendChild(this.iframe)\n }\n } else {\n throw Error(`container element not found: querySelector(\"${this.params.container}\")`)\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.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 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","container","initParams","extendParams","loaded","created","scope","domReady","createFrame","readyState","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","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","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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"}
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/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\nexport const PromiseWithResolvers = () => {\n let resolve\n let reject\n const promise = new Promise((promiseResolve, promiseReject) => {\n resolve = promiseResolve\n reject = promiseReject\n })\n return { promise, resolve, reject }\n}\n\n/**\n * @typedef PaymentRequestMethod\n * @property {{[string]:any}} data\n */\n\n/**\n * @typedef PaymentRequestOptions\n * @property {boolean} [requestPayerEmail]\n * @property {boolean} [requestPayerPhone]\n * @property {boolean} [requestPayerName]\n * @property {boolean} [requestShipping]\n */\n\n/**\n * @typedef PaymentRequestConfig\n * @property [PaymentRequestMethod] methods\n * @property {{[string]:any}} options\n */\n\n/**\n * @param {PaymentRequestConfig} config\n */\nexport const getAppleSessionConfig = (config) => {\n const { methods, details, options } = config\n const method = methods.find((item) => item.supportedMethods === 'https://apple.com/apple-pay')\n const requiredShippingContactFields = []\n const requiredBillingContactFields = []\n if (options.requestShipping) requiredBillingContactFields.push('postalAddress')\n if (options.requestPayerName) requiredShippingContactFields.push('name')\n if (options.requestPayerEmail) requiredShippingContactFields.push('email')\n if (options.requestPayerPhone) requiredShippingContactFields.push('phone')\n //method.data.recurringPaymentRequest = recurringPaymentRequest\n //method.data.deferredPaymentRequest = deferredPaymentRequest\n return {\n version: method.data.version,\n countryCode: method.data.countryCode,\n supportedNetworks: method.data.supportedNetworks,\n merchantCapabilities: method.data.merchantCapabilities,\n merchantIdentifier: method.data.merchantIdentifier,\n lineItems: method.data.lineItems || details.displayItems,\n additionalLineItems: method.data.additionalLineItems,\n recurringPaymentRequest: method.data.recurringPaymentRequest,\n deferredPaymentRequest: method.data.deferredPaymentRequest,\n //\n currencyCode: method.data.currencyCode || details.total.amount.currency,\n total: {\n label: details.total.label,\n amount: details.total.amount.value,\n },\n //\n requiredBillingContactFields,\n requiredShippingContactFields,\n }\n}\n\n// export const deferredPaymentRequest = {\n// paymentDescription: 'Бронювання готельного номеру',\n// deferredBilling: {\n// label: 'Бронювання',\n// amount: '50.00',\n// type: 'final',\n// paymentTiming: 'deferred',\n// deferredPaymentDate: new Date('2026-01-05'),\n// },\n// managementURL: 'https://flitt.ksv.app/manage-booking.html',\n// }\n\n// export const recurringPaymentRequest = {\n// paymentDescription: 'Місячна підписка',\n// regularBilling: {\n// label: 'Підписка на місяць',\n// amount: '20.00',\n// type: 'final',\n// paymentTiming: 'recurring',\n// recurringPaymentStartDate: new Date('2026-01-01T00:00:00'),\n// recurringPaymentIntervalUnit: 'month',\n// recurringPaymentIntervalCount: 6,\n// recurringPaymentEndDate: new Date('2028-01-01T00:00:00'),\n// },\n// managementURL: 'https://flitt.ksv.app/manage-subscription.html',\n// }\n\nexport const getFunction = (path) => {\n const props = path.split('.')\n const value = props.reduce((acc, cur) => {\n if (acc && acc.hasOwnProperty(cur)) {\n acc = acc[cur]\n return acc\n }\n return null\n }, window)\n return isFunction(value) ? value : value\n}\n\nexport const loadExternalApi = (url, path) => {\n const [existScript] = toArray(document.scripts).filter((script) => script.src === url)\n if (existScript) return Promise.resolve(getFunction(path))\n const { promise, resolve } = PromiseWithResolvers()\n const script = document.createElement('script')\n script.async = true\n script.src = url\n script.addEventListener('load', () => {\n const value = getFunction(path)\n console.log('api loading', 'success', url)\n resolve(value)\n })\n script.addEventListener('error', (e) => {\n const value = getFunction(path)\n console.log('api loading', 'error', url)\n resolve(value)\n })\n document.head.appendChild(script)\n return promise\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 PaymentMethodsConfig = [\n {\n url: 'https://pay.google.com/gp/p/js/pay.js',\n name: 'google',\n path: 'google.payments.api.PaymentsClient',\n callback(PaymentsClient) {\n if (PaymentsClient) {\n return new PaymentsClient({ environment: 'TEST' })\n .isReadyToPay(GoogleBaseRequest)\n .catch((e) => {\n console.log(e)\n return false\n })\n }\n return false\n },\n },\n {\n url: 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js',\n name: 'apple',\n path: 'ApplePaySession',\n callback(ApplePaySession) {\n if (ApplePaySession) {\n return ApplePaySession.supportsVersion(3)\n }\n return false\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 (this.isResolved()) {\n callback.apply(resultContext, resultArgs)\n } else {\n resolveCallbacks.push(callback)\n }\n }\n return this\n },\n fail(callback) {\n if (isFunction(callback)) {\n if (this.isRejected()) {\n callback.apply(resultContext, resultArgs)\n } else {\n rejectCallbacks.push(callback)\n }\n }\n return this\n },\n progress(callback) {\n if (isFunction(callback)) {\n if (this.isProgress()) {\n callback.apply(resultContext, resultArgs)\n } else {\n notifyCallbacks.push(callback)\n }\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 isProgress() {\n return status === PROGRESS\n },\n resolveWith(context, args) {\n if (this.isPending()) {\n status = RESOLVED\n executeCallback(context, args, resolveCallbacks)\n }\n return this\n },\n rejectWith(context, args) {\n if (this.isPending()) {\n status = REJECTED\n executeCallback(context, args, rejectCallbacks)\n }\n return this\n },\n notifyWith(context, args) {\n if (this.isPending()) {\n status = PROGRESS\n executeCallback(context, args, notifyCallbacks)\n status = PENDING\n }\n return this\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 container: 'body',\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.iframeDeferred = Deferred()\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 },\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 this.domReady(function () {\n this.createFrame()\n if (this.iframeDeferred.isPending()) {\n this.iframeDeferred.done(callback)\n } else {\n callback()\n }\n })\n },\n domReady(callback) {\n callback = this.proxy(callback)\n if (document.readyState === 'loading') {\n window.addEventListener('DOMContentLoaded', callback)\n } else {\n 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 createFrame() {\n if (this.iframe) return this\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: this.url('gateway') })\n this.addCss(this.iframe, ApiFrameCss)\n if (this.utils.isElement(this.params.container)) {\n this.container = this.params.container\n }\n if (this.utils.isString(this.params.container)) {\n this.container = this.utils.querySelector(this.params.container)\n }\n if (this.container) {\n if (this.container.firstChild) {\n this.container.insertBefore(this.iframe, this.container.firstChild)\n } else {\n this.container.appendChild(this.iframe)\n }\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 } else {\n throw Error(`container element not found: document.querySelector(\"${this.params.container}\")`)\n }\n return this\n },\n onOpenModal(xhr, model) {\n this.modal = new Modal({ checkout: this, model: model })\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.iframeDeferred.resolve(true)\n this.connector.off('load')\n },\n})\n","import { Module } from '../module.js'\nimport { Api } from '../api.js'\nimport { Deferred } from '../deferred.js'\nimport { forEach, getAppleSessionConfig, isFunction, loadExternalApi } from '../utils.js'\nimport { PaymentMethodsConfig } from '../config.js'\n\nlet supportedMethodsDeferred = null\n\nconst getSupportedMethods = () => {\n if (supportedMethodsDeferred) return supportedMethodsDeferred\n supportedMethodsDeferred = Deferred()\n const promises = []\n const supported = { provider: [] }\n forEach(PaymentMethodsConfig, (method) => {\n promises.push(\n loadExternalApi(method.url, method.path)\n .then(method.callback)\n .then((state) => {\n if (state) {\n supported.provider.push(method.name)\n } else {\n console.log('error loading api', google)\n }\n })\n )\n })\n Promise.all(promises).then(\n () => {\n supportedMethodsDeferred.resolve(supported)\n },\n () => {\n supportedMethodsDeferred.resolve(supported)\n }\n )\n return supportedMethodsDeferred\n}\n\nexport const PaymentRequestApi = 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 setBeforeCallback(beforeCallback) {\n if (isFunction(beforeCallback)) {\n this.params.before = beforeCallback\n }\n },\n setAfterCallback(afterCallback) {\n if (isFunction(afterCallback)) {\n this.params.after = afterCallback\n }\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 request(model, method, params, success, failure) {\n const context = this\n if (context.api) {\n context.api.scope(function () {\n context.api.request(model, method, params).done(success).fail(failure)\n })\n }\n },\n session(params) {\n const defer = Deferred()\n this.request(\n 'api.checkout.pay',\n 'session',\n params,\n function (model) {\n defer.resolve(model.serialize())\n },\n function (model) {\n defer.reject(model)\n }\n )\n return defer\n },\n update(data) {\n if (this.isPending()) return\n this.setPending(true)\n const context = this\n const defer = Deferred()\n this.params.data = data\n this.request(\n 'api.checkout.pay',\n 'methods',\n this.params.data,\n function (model) {\n context.setPending(false)\n context.setPayload(model.serialize())\n defer.resolve(model)\n },\n function (model) {\n context.setPending(false)\n context.trigger('error', model)\n defer.reject(model)\n }\n )\n return defer\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 function (context) {\n context.trigger('pending', state)\n },\n 50,\n this\n )\n },\n before() {\n if (this.isPending()) return\n this.setPending(true)\n const defer = Deferred()\n const context = this\n defer.always(function () {\n context.setPending(false)\n })\n this.params.before(defer)\n return defer\n },\n after(params) {\n const defer = Deferred()\n this.params.after(defer, params)\n return defer\n },\n withApplePay(response, config) {\n const sessionConfig = getAppleSessionConfig(config)\n const request = new ApplePaySession(sessionConfig.version, sessionConfig)\n const merchant = this.merchant\n const context = this\n request.onvalidatemerchant = function (event) {\n context\n .session({\n url: event.validationURL,\n domain: location.host,\n merchant_id: merchant,\n })\n .done((session) => {\n try {\n request.completeMerchantValidation(session.data)\n } catch (error) {\n response.reject({ code: error.code, message: error.message })\n }\n })\n }\n request.oncancel = function () {\n response.reject({ code: 20, message: 'cancel' })\n }\n request.onpaymentauthorized = function (event) {\n request.completePayment(ApplePaySession.STATUS_SUCCESS)\n response.resolve(event.payment)\n }\n request.begin()\n },\n withGooglePay(response, config) {\n const { methods } = config\n const method = methods.find((item) => item.supportedMethods === 'https://google.com/pay')\n const client = new google.payments.api.PaymentsClient({ environment: method.data.environment })\n client\n .loadPaymentData(method.data)\n .then((paymentData) => {\n response.resolve(paymentData)\n })\n .catch((error) => {\n response.reject({ code: error.code, message: error.message })\n })\n },\n pay(method) {\n if (this.isPending()) return\n this.setPending(true)\n const context = this\n const response = Deferred()\n const payload = this.getProviderPayload(method)\n response.always(function () {\n context.setPending(false)\n })\n switch (method) {\n case 'google':\n this.withGooglePay(response, payload)\n break\n case 'apple':\n this.withApplePay(response, payload)\n break\n }\n return response\n .done(function (data) {\n context.trigger('details', {\n payment_system: context.payload.payment_system,\n data,\n })\n })\n .fail(function (error) {\n context.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.state = {\n isSupported: false,\n isAllowed: false,\n isMounted: false,\n }\n this.params = {}\n this.utils.extend(this.params, this.defaults)\n this.utils.extend(this.params, params)\n this.initElement()\n },\n timeout(callback, timeout) {\n this.timeoutMap = this.timeoutMap || {}\n clearTimeout(this.timeoutMap[timeout])\n this.timeoutMap[callback] = setTimeout(callback, timeout)\n return this\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 this.state.isSupported = supported.provider.includes(this.params.method)\n this.render()\n },\n onPayload(cx, payload) {\n this.state.isAllowed = payload.allowed.includes(this.params.method)\n this.render()\n },\n onPending(cx, state) {\n this.pending = state\n this.addCss(this.element, {\n transition: 'height 0.2s ease-out, opacity 0.4s ease-out',\n pointerEvents: this.pending ? 'none' : '',\n opacity: this.pending ? '0.5' : '1',\n })\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 render() {\n if (this.state.isSupported === false) return this\n if (this.state.isAllowed === false) return this\n this.mount()\n this.show()\n },\n unmount() {\n if (this.element.parentNode) {\n this.element.parentNode.removeChild(this.element)\n }\n return this\n },\n mount() {\n if (document.body.contains(this.element) === false) {\n this.appendTo(this.params.appendTo)\n }\n return this\n },\n show() {\n this.timeout(() => {\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 }, 25)\n return this\n },\n hide() {\n this.timeout(() => {\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 }, 25)\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, isFunction } 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 after(defer, params) {\n defer.resolve(params)\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: isFunction(params.before) ? params.before : this.defaults.before,\n after: isFunction(params.after) ? params.after : this.defaults.after,\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 before: this.params.before,\n after: this.params.after,\n })\n this.request.setApi(this.api)\n this.request.setMerchant(this.params.data.merchant_id)\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.request.after(this.params.data).done((extendParams) => {\n this.api\n .request(\n 'api.checkout.form',\n 'request',\n this.utils.extend({}, this.params.data, extendParams || {}, data)\n )\n .done(this.proxy('onSuccess'))\n .fail(this.proxy('onError'))\n })\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","PromiseWithResolvers","resolve","reject","promise","Promise","promiseResolve","promiseReject","getAppleSessionConfig","config","method","find","supportedMethods","requiredShippingContactFields","requiredBillingContactFields","requestShipping","push","requestPayerName","requestPayerEmail","requestPayerPhone","version","data","countryCode","supportedNetworks","merchantCapabilities","merchantIdentifier","lineItems","displayItems","additionalLineItems","recurringPaymentRequest","deferredPaymentRequest","currencyCode","total","amount","currency","label","getFunction","path","split","reduce","acc","cur","loadExternalApi","url","_toArray$filter","document","scripts","filter","script","src","_slicedToArray","_PromiseWithResolvers","createElement","async","addEventListener","console","log","head","appendChild","el","attrs","setAttribute","_len2","_key2","shift","classList","className","trim","map","token","indexOf","tag","unit","String","charAt","pair","parts","current","j","l","lastPart","pop","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","GoogleBaseRequest","apiVersion","apiVersionMinor","allowedPaymentMethods","type","parameters","allowedAuthMethods","allowedCardNetworks","PaymentMethodsConfig","callback","PaymentsClient","environment","isReadyToPay","ApplePaySession","supportsVersion","GooglePayLanguages","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","done","isResolved","fail","isRejected","progress","isProgress","always","object","state","isPending","resolveWith","rejectWith","notifyWith","notify","init","fnTest","ClassObject","superMethod","parent","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","removeEvent","removeEventListener","prepareForm","form","action","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","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","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","container","iframeDeferred","initParams","extendParams","scope","domReady","createFrame","readyState","defer","responseModel","firstChild","insertBefore","onOpenModal","xhr","onCloseModal","onLoadConnector","supportedMethodsDeferred","PaymentRequestApi","payment_system","fallback","supported","provider","payload","getSupportedMethods","_this","promises","google","all","setSupported","setPayload","setMerchant","merchant","setBeforeCallback","beforeCallback","before","setAfterCallback","afterCallback","after","setApi","api","getProviderPayload","isMethodSupported","isFallbackMethod","success","failure","session","update","setPending","pendingState","clearTimeout","pendingTimeoutEvent","setTimeout","withApplePay","sessionConfig","onvalidatemerchant","event","validationURL","domain","host","merchant_id","completeMerchantValidation","error","code","message","oncancel","onpaymentauthorized","completePayment","STATUS_SUCCESS","payment","begin","withGooglePay","payments","loadPaymentData","paymentData","pay","PaymentElement","appendTo","mode","color","lang","isSupported","isAllowed","isMounted","initElement","timeout","timeoutMap","getElementUrl","getElementOptions","button","class","errorConnector","onloadConnector","onEvent","pending","onClick","onClickDone","onClickFail","onSupported","includes","onPayload","allowed","onPending","transition","pointerEvents","initEvents","setPaymentRequest","mount","show","unmount","contains","cssUnit","hide","_this2","PaymentButton","elements","initApi","initPaymentRequestApi","initElements","initData","gap","onDetails","onSuccess","onError","PaymentContainer","embedded","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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"}