{"version":3,"file":"bundle.js","mappings":"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","sources":["webpack://@vpay/verified-pay/webpack/runtime/load script","webpack://@vpay/verified-pay/./node_modules/debug/src/browser.js","webpack://@vpay/verified-pay/./node_modules/debug/src/common.js","webpack://@vpay/verified-pay/./node_modules/ms/index.js","webpack://@vpay/verified-pay/./node_modules/process/browser.js","webpack://@vpay/verified-pay/./src/AbstractPage.ts","webpack://@vpay/verified-pay/webpack/bootstrap","webpack://@vpay/verified-pay/webpack/runtime/define property getters","webpack://@vpay/verified-pay/webpack/runtime/ensure chunk","webpack://@vpay/verified-pay/webpack/runtime/get javascript chunk filename","webpack://@vpay/verified-pay/webpack/runtime/global","webpack://@vpay/verified-pay/webpack/runtime/hasOwnProperty shorthand","webpack://@vpay/verified-pay/webpack/runtime/make namespace object","webpack://@vpay/verified-pay/webpack/runtime/publicPath","webpack://@vpay/verified-pay/webpack/runtime/jsonp chunk loading","webpack://@vpay/verified-pay/./src/utils/WebHelpers.ts","webpack://@vpay/verified-pay/./src/ui/AppMessage.ts","webpack://@vpay/verified-pay/./src/utils/misc.ts","webpack://@vpay/verified-pay/./src/utils/Log.ts","webpack://@vpay/verified-pay/./src/Merchant.ts","webpack://@vpay/verified-pay/./src/structs/CardEvent.ts","webpack://@vpay/verified-pay/./src/CreditCard.ts","webpack://@vpay/verified-pay/./node_modules/@paystack/inline-js/es/inline.js","webpack://@vpay/verified-pay/./src/gateway/AbstractGateway.ts","webpack://@vpay/verified-pay/./src/gateway/GatewaySa.ts","webpack://@vpay/verified-pay/./src/structs/Payment.ts","webpack://@vpay/verified-pay/./src/utils/Store.ts","webpack://@vpay/verified-pay/./src/gateway/GatewayUs.ts","webpack://@vpay/verified-pay/./src/Pay.ts","webpack://@vpay/verified-pay/./src/Localizer.ts","webpack://@vpay/verified-pay/./src/Landing.ts","webpack://@vpay/verified-pay/./src/Timestamps.ts","webpack://@vpay/verified-pay/./src/JqueryApp.ts","webpack://@vpay/verified-pay/./index.ts"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"@vpay/verified-pay:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import {JqueryApp} from \"./JqueryApp\";\nimport {WebHelpers} from \"./utils/WebHelpers\";\n\n\nexport class AbstractPage {\n protected app: JqueryApp;\n protected webHelpers: WebHelpers;\n\n constructor(app: JqueryApp) {\n this.app = app;\n this.webHelpers = this.app.getWebHelpers();\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_vpay_verified_pay\"] = self[\"webpackChunk_vpay_verified_pay\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import {BrowserWindow} from \"../types\";\n\nexport interface WebHelpersConfig {\n cookieLifeDays: number;\n cookiePath: string;\n cookieHost: string;\n siteUrl: string;\n}\n\nexport class WebHelpers {\n public readonly window: BrowserWindow;\n public readonly $: JQueryStatic;\n\n protected config: WebHelpersConfig;\n protected cssSelectors: string[] = [];\n\n constructor(window: BrowserWindow, $: JQueryStatic, config: WebHelpersConfig) {\n this.window = window;\n this.$ = $;\n this.config = config;\n }\n\n public setConfig(config: WebHelpersConfig) {\n this.config = config;\n }\n\n public getConfig(): WebHelpersConfig {\n return this.config;\n }\n\n public getBrowserLang() {\n return this.window.navigator.language.substr(0, 2).toLowerCase();\n }\n\n public getCookie(c_name: string) {\n let i, x, y;\n let ARRcookies = this.window.document.cookie.split(\";\");\n for (i = 0; i < ARRcookies.length; i++)\n {\n x = ARRcookies[i].substr(0, ARRcookies[i].indexOf(\"=\"));\n y = ARRcookies[i].substr(ARRcookies[i].indexOf(\"=\") + 1);\n x = x.replace(/^\\s+|\\s+$/g,\"\");\n if (x == c_name)\n return decodeURI(y);\n }\n return null;\n }\n\n public setCookie(name: string, value: any, expireDays: number) {\n let date = new Date();\n date = new Date(date.getTime()+1000*60*60*24* (expireDays ? expireDays : this.config.cookieLifeDays));\n //document.cookie = name + \"=\" + value + \"; expires=\" + date.toGMTString() + \"; path=\" + pageData.cookiePath + \"; domain=.\" + location.host;\n // we must add \"domain\" key if server adds it or else there will be 2 different cookies\n this.window.document.cookie = name + \"=\" + value + \"; expires=\" + date.toUTCString() + \"; path=\" + this.config.cookiePath + \"; domain=\" + this.config.cookieHost;\n }\n\n public removeCookie(name: string) {\n //document.cookie = name + \"=; expires=Thu, 02 Jan 1970 00:00:00 UTC; path=\" + pageData.cookiePath + \"; domain=.\" + location.host;\n this.window.document.cookie = name + \"=; expires=Thu, 02 Jan 1970 00:00:00 UTC; path=\" + this.config.cookiePath;\n }\n\n public fromBase64(data: string) {\n if (typeof this.window.atob !== \"function\") {\n this.window.console.error(\"Base64 decoding is not supported in your browser\");\n return \"\";\n }\n return this.window.atob(data);\n }\n\n public toBase64(data: string) {\n if (typeof this.window.btoa !== \"function\") {\n this.window.console.error(\"Base64 encoding is not supported in your browser\");\n return \"\";\n }\n return this.window.btoa(data);\n }\n\n /**\n * Populate a html template\n * @param text {String}: The html template (or just normal text with variables)\n * @param variables {Object}: the key-value pairs with variables names and their content to be set in text\n * @param safeHtml {boolean, default false}: don't escape html characters if set to true\n * @returns {String} the translated html\n */\n public translate(text: string, variables: any, safeHtml: boolean = false) {\n if (typeof text !== \"string\") {\n try {\n // @ts-ignore\n text = text.toString();\n }\n catch (e) {\n this.log(\"Text to translate is not a string\");\n return text;\n }\n }\n let start = 0, end = 0;\n while ((start = text.indexOf(\"{\", start)) !== -1)\n {\n if (start > 0 && text.charAt(start-1) === \"\\\\\") { // escaped javascript code beginning\n start++;\n continue;\n }\n end = text.indexOf(\"}\", start);\n if (end === -1) {\n this.log(\"Can not find end position while translating HTML\");\n break;\n }\n let placeHolder = text.substring(start+1, end);\n let translation = null;\n if (placeHolder.substring(0, 3) === \"tr:\") {\n let key = placeHolder.substring(3);\n //translation = this.tr(key.toUpperCase());\n translation = this.tr(key);\n }\n else if (typeof variables === \"object\") {\n let textPiece = variables[placeHolder];\n if (typeof textPiece !== \"undefined\") {\n if (typeof safeHtml === \"boolean\" && safeHtml)\n translation = textPiece;\n else\n translation = this.escapeOutput(textPiece);\n }\n }\n if (translation !== null) {\n let reg = new RegExp(\"\\\\{\" + placeHolder + \"\\\\}\", \"g\");\n text = text.replace(reg, translation);\n }\n else if (placeHolder.match(\"^[A-Za-z0-9_]+$\") !== null) {\n this.log(\"No translation found for place holder: \" + placeHolder);\n let reg = new RegExp(\"\\\\{\" + placeHolder + \"\\\\}\", \"g\");\n text = text.replace(reg, \"MISSING: \" + this.escapeOutput(placeHolder));\n }\n else\n start += placeHolder.length;\n }\n text = text.replace(/\\\\\\\\\\\\{/, \"{\");\n return text;\n }\n\n public escapeOutput(text: string, convertNewlines: boolean = true) {\n if (typeof text !== \"string\")\n return text;\n text = text.replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n if (typeof convertNewlines === \"undefined\" || convertNewlines === true)\n text = text.replace(/\\r?\\n/g, \"
\");\n return text;\n }\n\n public escapeRegex(str: string) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n }\n\n public tr(key: string) {\n //if (typeof language[key] === \"undefined\")\n //return \"MISSING: \" + key;\n //return language[key];\n //return i18next.t(key) // will just print the key if it doesn't exist and debug is disabled\n return key; // we don't have client-side translation support on this WP plugin yet. just return the key // TODO do we need this if we make our plugin use more ajax?\n }\n\n public log(args) {\n if (//typeof pageData.debugLog !== \"boolean\" || pageData.debugLog === false || // TODO add in CashTipprConfig\n typeof this.window.console !== \"object\" || typeof this.window.console.log !== \"function\")\n return;\n this.window.console.log(arguments);\n }\n\n public isAppleIOS() {\n // https://stackoverflow.com/questions/9038625/detect-if-device-is-ios\n return /iPad|iPhone|iPod/.test(this.window.navigator.userAgent) && !(this.window as any).MSStream;\n }\n\n public getAllCssSelectors(cached = true): string[] {\n if (cached === true && this.cssSelectors.length !== 0)\n return this.cssSelectors;\n\n this.cssSelectors = [];\n try {\n const originRegex = new RegExp(\"^\" + this.escapeRegex(this.window.document.location.origin), \"i\");\n for (let i = 0; i < this.window.document.styleSheets.length; i++)\n {\n const sheet: any = this.window.document.styleSheets[i];\n if (sheet.href && originRegex.test(sheet.href) === false)\n continue; // can't access it\n if (sheet.rules) {\n for (let u = 0; u < sheet.rules.length; u++)\n {\n if (sheet.rules[u].selectorText)\n this.cssSelectors.push(sheet.rules[u].selectorText);\n }\n }\n if (sheet.imports) {\n for (let x = 0; x < sheet.imports.length; x++)\n {\n for (let u = 0; u < sheet.imports[x].rules.length; u++)\n {\n if (sheet.imports[x].rules[u].selectorText)\n this.cssSelectors.push(sheet.imports[x].rules[u].selectorText);\n }\n }\n }\n }\n }\n catch (err) {\n this.window.console.error(\"Error getting CSS selectors\", err);\n }\n return this.cssSelectors;\n }\n\n public isExistingCssSelector(selector: string): boolean {\n const selectors = this.getAllCssSelectors();\n for (let i = 0; i < selectors.length; i++)\n {\n if (selectors[i] === selector) // css props case insensitive, class names in HTML case sensitive\n return true;\n }\n return false;\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n public addParamToUrl(urlStr: string, key: string, value: string = \"\", overwrite: boolean = false) {\n if (!value)\n value = \"1\";\n let start = urlStr.indexOf('?');\n if (start !== -1 && urlStr.indexOf(key + '=') !== -1) {\n if (!overwrite)\n return urlStr // param already exists\n let search = this.escapeRegex(key + '=');\n urlStr = urlStr.replace(new RegExp(search + '[^&]*(&|$)'), ''); // remove it and add it to the end of the url\n urlStr = urlStr.replace(/(\\?|&)$/, '');\n }\n let queryParam = urlStr.indexOf('?') !== -1 ? '&' : '?';\n return urlStr + queryParam + key + '=' + value;\n }\n\n public getApi(path: string, data?: any, callback?: (data: any, textStatus: string, jqXHR: JQueryXHR) => any, dataType?: string) {\n if (typeof data === \"function\") {\n callback = data;\n data = null;\n }\n else if (data === undefined)\n data = null;\n let url = this.fixRelativeUrl(path);\n return this.$.get(url, data, (data, textStatus, jqXHR) => {\n callback(data, textStatus, jqXHR);\n }, dataType);\n }\n\n public postApi(path: string, data?: any, callback?: (data: any, textStatus: string, jqXHR: JQueryXHR) => any, dataType?: string) {\n let url = this.fixRelativeUrl(path);\n return this.$.post(url, data, (data, textStatus, jqXHR) => {\n callback(data, textStatus, jqXHR);\n }, dataType);\n }\n\n public postJson(path: string, data?: any, callback?: (data: any, textStatus: string, jqXHR: JQueryXHR) => any, dataType?: string) {\n let url = this.fixRelativeUrl(path);\n const that = this;\n return this.$.ajax(url, {\n url: url,\n //data: JSON.stringify(data),\n contentType: \"application/json\",\n accepts: {\n json: \"application/json\",\n },\n method: \"POST\",\n dataType: \"json\",\n //xhrFields: {\n //withCredentials: true\n //},\n success(data: any, textStatus: string, jqXHR: JQueryXHR): any {\n callback(data, textStatus, jqXHR);\n },\n error(jqXHR: JQueryXHR, textStatus: string, errorThrown: string): any {\n that.log([\"Error posting JSON \" + textStatus, errorThrown]);\n callback(null, textStatus, jqXHR);\n },\n });\n }\n\n public preloadImages(...urls: string[]) {\n // jQuery version: https://css-tricks.com/snippets/jquery/image-preloader/\n // CSS version: https://web.dev/preload-responsive-images/#preload-overview\n for (let i = 0; i < urls.length; i++)\n {\n let image = window.document.createElement(\"img\"); // or new Image()\n image.alt = \"preload-\" + i;\n image.src = urls[i];\n }\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected fixRelativeUrl(url: string): string {\n if (url.toLowerCase().indexOf(\"http\") === 0)\n return url; // already a full url\n let fullUrl = this.config.siteUrl;\n if (url.length !== 0 && url[0] === \"/\" && fullUrl[fullUrl.length-1] === \"/\")\n fullUrl = fullUrl.substr(0, fullUrl.length-1); // avoid duplicate //\n fullUrl += url;\n return fullUrl;\n }\n}\n","\n// modelled after Bootstrap alerts\n\nexport type AppMessageType = \"primary\" | \"secondary\" | \"success\" | \"danger\" | \"warning\" | \"info\" | \"light\" | \"dark\";\n\nexport interface AppMsgLocales {\n close: string;\n}\n\nexport class AppMessage {\n protected static $: JQueryStatic = (window as any).$;\n protected static locales: AppMsgLocales = {close: \"Close\"};\n\n public readonly text: string;\n public readonly type: AppMessageType;\n public readonly canDismiss: boolean;\n public readonly id: number;\n\n protected static counter = 0;\n\n constructor(text: string, type: AppMessageType, canDismiss: boolean = true) {\n this.text = text;\n this.type = type;\n this.canDismiss = canDismiss;\n this.id = ++AppMessage.counter;\n }\n\n public display(): void {\n AppMessage.$(\"#app-messages\").append(this.toHtml());\n AppMessage.$('html, body').animate({scrollTop: 0}, 260);\n }\n\n public toHtml(): string {\n if (this.canDismiss === false) {\n return `
${this.text}
`;\n }\n return `
${this.text}\n \n
`;\n }\n\n public static setJquery($: JQueryStatic): void {\n AppMessage.$ = $;\n }\n\n public static setLocales(locales: AppMsgLocales) {\n AppMessage.locales = locales;\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n}\n","export type DateInterval = \"year\" | \"quarter\" | \"month\" | \"week\" | \"day\" | \"hour\" | \"minute\" | \"second\";\n\nexport function fixUrlTrailingSlash(url: string): string {\n url = url.trim();\n if (url.length === 0 || url[url.length-1] === \"/\")\n return url;\n return url + \"/\";\n}\n\n/**\n * Adds the given units of interval to the date.\n * It returns a copy of the date, so the given date is not modified.\n * @param date\n * @param interval\n * @param units\n */\nexport function dateAdd(date: Date, interval: DateInterval, units: number): Date {\n let ret = new Date(date); //don't change original date\n switch (interval.toLowerCase()) {\n case 'year' : ret.setFullYear(ret.getFullYear() + units); \tbreak;\n case 'quarter': ret.setMonth(ret.getMonth() + 3*units); \t\tbreak;\n case 'month' : ret.setMonth(ret.getMonth() + units); \t\t break;\n case 'week' : ret.setDate(ret.getDate() + 7*units); \t\t break;\n case 'day' : ret.setDate(ret.getDate() + units); \t\t\t break;\n case 'hour' : ret.setTime(ret.getTime() + units*3600000); \t break;\n case 'minute' : ret.setTime(ret.getTime() + units*60000); \t break;\n case 'second' : ret.setTime(ret.getTime() + units*1000); \t\t break;\n default : ret = undefined; break;\n }\n return ret;\n}\n\nexport function assertUnreachableCode(x: never): never {\n throw new Error(\"Unexpected object: \" + x);\n}\n\nexport function toDisplayTimeHHMMSS(secondsTotal: number, forceHours: boolean = false): string {\n const hours = Math.floor(secondsTotal / 3600);\n const minutes = Math.floor((secondsTotal - (hours * 3600)) / 60);\n const seconds = secondsTotal - (hours * 3600) - (minutes * 60);\n\n let timeStr = \"\";\n if (hours !== 0 || forceHours === true) {\n if (hours < 10)\n timeStr += \"0\";\n timeStr += hours + \":\";\n }\n if (minutes < 10)\n timeStr += \"0\";\n timeStr += minutes + \":\";\n if (seconds < 10)\n timeStr += \"0\";\n timeStr += seconds;\n return timeStr;\n}\n\nexport interface GetBetweenOptions {\n startPos?: number;\n prestartTxt?: string;\n caseInsensitive?: boolean;\n}\n\nexport function getBetween(text: string, startTxt: string, endTxt: string, options: GetBetweenOptions = {}): string | false {\n options.startPos = typeof options.startPos === 'number' ? options.startPos : 0\n let preStart = typeof options.prestartTxt === 'string' && options.prestartTxt !== ''\n let searchText = options.caseInsensitive === true ? text.toLocaleLowerCase() : text\n if (options.caseInsensitive === true) {\n if (preStart)\n options.prestartTxt = options.prestartTxt.toLocaleLowerCase()\n startTxt = startTxt.toLocaleLowerCase()\n endTxt = endTxt.toLocaleLowerCase()\n }\n if (preStart) {\n options.startPos = searchText.indexOf(options.prestartTxt, options.startPos)\n if (options.startPos === -1)\n return false\n options.startPos += options.prestartTxt.length\n }\n options.startPos = searchText.indexOf(startTxt, options.startPos)\n if (options.startPos === -1)\n return false\n options.startPos += startTxt.length\n let endPos = searchText.indexOf(endTxt, options.startPos)\n if (endPos === -1)\n return false\n return text.substr(options.startPos, endPos-options.startPos)\n}\n\nexport function format(string: string, ...args: string[]): string {\n let start = 0;\n for (let i = 1; i < arguments.length; i++)\n {\n let search = \"%\" + i;\n start = string.indexOf(search, start);\n if (start === -1)\n break;\n start += 2;\n string = string.replace(search, arguments[i]);\n }\n return string;\n}\n","import * as debug from \"debug\";\n//import * as supportsColor from \"supports-color\"; // only for NodeJS to enable more colors\n\n// to enable write on console: localStorage.debug = 'vpay:*'\nconst NS_BASE = 'vpay';\n// TODO create namespaces per app name? we can't read app dir on filesystem and we want to avoid missing logs due to include order (from another lib using this class)\n\n/*\nconst COLORS = {\n trace: 'lightblue',\n info: 'blue',\n warn: 'pink',\n error: 'red'\n};\n*/\n\nclass Log {\n // https://www.npmjs.com/package/debug#formatters\n constructor() {\n }\n\n public trace(formatter: any, ...args: any[]): void {\n }\n\n public verbose(formatter: any, ...args: any[]): void {\n }\n\n public info(formatter: any, ...args: any[]): void {\n }\n\n public warn(formatter: any, ...args: any[]): void {\n }\n\n public error(formatter: any, ...args: any[]): void {\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n}\n\nconst logger = new Log();\n/*\nObject.keys(COLORS).forEach((logLevel) => {\n console.log(logLevel, COLORS[logLevel])\n //debug.colors = COLORS[logLevel];\n});\ndebug.colors = COLORS;\n*/\nlogger.trace = debug(NS_BASE + \":trace\" );\nlogger.verbose = debug(NS_BASE + \":verbose\" );\nlogger.info = debug(NS_BASE + \":info\" );\nlogger.warn = debug(NS_BASE + \":warn\" );\nlogger.error = debug(NS_BASE + \":error\" );\n\nexport {logger}\n","import {AbstractPage} from \"./AbstractPage\";\nimport {JqueryApp} from \"./JqueryApp\";\nimport {AppMessage} from \"./ui/AppMessage\";\nimport {logger} from \"./utils/Log\";\n\nexport class Merchant extends AbstractPage {\n constructor(app: JqueryApp) {\n super(app);\n\n this.app.$(() => { // jQuery 3.0 \"document.ready\"\n this.initPage();\n this.addEventListeners();\n });\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected initPage() {\n this.togglePayoutMethodInputs(this.app.$(\"#payoutMethodVal\").val() as string);\n }\n\n protected addEventListeners() {\n if (this.app.$(\"#refundAmountGateway\").length !== 0) {\n this.onRefundAmountChange(this.app.$(this.app.$(\"#refundAmount\")).val() as number);\n this.app.$(\"#refundAmount\").on(\"change\", (event) => {\n this.onRefundAmountChange(this.app.$(event.target).val() as number);\n });\n this.app.$(\"#refundAmount\").on(\"keyup\", (event) => {\n this.onRefundAmountChange(this.app.$(event.target).val() as number);\n });\n }\n\n this.app.$(\"#chargeback-tx\").on(\"click\", (event) => {\n if (!this.app.getWebHelpers().window.confirm(this.app.getTr().get(\"chargebackConfirm\"))) {\n event.preventDefault();\n }\n });\n\n this.app.$(\"#payoutMethods a\").on(\"click\", (event) => {\n const method = this.app.$(event.target).attr(\"data-val\");\n this.togglePayoutMethodInputs(method);\n //const tr = this.app.getTr();\n this.app.$(\"#payoutMethodVal\").attr(\"value\", method);\n this.app.$(\"#payoutMethod\").text(this.app.$(event.target).text());\n });\n\n this.app.$(\"#paymentGateways a\").on(\"click\", (event) => {\n const method = this.app.$(event.target).attr(\"data-val\");\n this.app.$(\"#gatewayVal\").attr(\"value\", method);\n this.app.$(\"#gateway\").text(this.app.$(event.target).text());\n });\n // this.app.$(\"#gateway-form\").on(\"submit\", (event) => {\n // event.preventDefault();\n // });\n }\n\n protected onRefundAmountChange(amount: number) {\n let gatewayAmount = amount * this.app.getConfig().exchangeRate;\n this.app.$(\"#refundAmountGateway\").val(gatewayAmount.toFixed(2));\n }\n\n protected togglePayoutMethodInputs(method: string) {\n switch (method) {\n //case \"paypal\":\n case \"usdt_eth\":\n this.app.$(\".method-swift\").fadeOut(\"slow\");\n this.app.$(\".method-usdteth\").fadeIn(\"slow\");\n break;\n case \"swift\":\n this.app.$(\".method-usdteth\").fadeOut(\"slow\");\n this.app.$(\".method-swift\").fadeIn(\"slow\");\n break;\n default:\n logger.error(\"Unknown payout method: \" + method);\n }\n }\n}\n","import {WebHelpers} from \"../utils/WebHelpers\";\nimport {AppConfig} from \"../JqueryApp\";\n\nexport const enum PaymentTrackingAction {\n PaymentTrackingActionUnknown = 0,\n PaymentTrackingActionAttempt = 1,\n PaymentTrackingActionError = 2,\n PaymentTrackingActionSuccess = 3,\n PaymentTrackingActionCancel = 4,\n PaymentTrackingActionInput = 5,\n PaymentTrackingActionUserAction = 6,\n PaymentTrackingActionAuth = 7,\n}\n\nexport class CardEvent {\n protected static webHelpers: WebHelpers;\n protected static config: AppConfig;\n protected static autoSend: boolean = true;\n\n public readonly action: PaymentTrackingAction;\n public readonly time: Date;\n protected message: string = \"\";\n\n constructor(action: PaymentTrackingAction, message: string = \"\") {\n this.action = action;\n this.message = message;\n this.time = new Date();\n if (CardEvent.autoSend === true)\n this.send();\n }\n\n public static setWebHelpers(webHelpers: WebHelpers, config: AppConfig): void {\n CardEvent.webHelpers = webHelpers;\n CardEvent.config = config;\n }\n\n public static setAutoSend(autoSend: boolean): void {\n CardEvent.autoSend = autoSend;\n }\n\n public setMessage(message: string): CardEvent {\n this.message = message;\n return this;\n }\n\n public send(): void {\n try {\n const config = CardEvent.config;\n const url = config.apiBase + config.pathCardEvent;\n const fullToken = config.payment.token + \"-\" + config.payment.merchantId;\n const data = {\n tx_id: fullToken,\n action: this.action,\n message: this.message,\n time: this.time,\n }\n CardEvent.webHelpers.postApi(url, data, (data) => {\n if (!data || data.error) {\n console.error(\"Error sending card event\", data);\n return;\n }\n });\n }\n catch (err) {\n console.error(\"Exception on card event\", err);\n }\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n}\n","import {AbstractPage} from \"./AbstractPage\";\nimport {JqueryApp} from \"./JqueryApp\";\nimport {CardEvent, PaymentTrackingAction} from \"./structs/CardEvent\";\n\n\nexport class CreditCard extends AbstractPage {\n protected validated: boolean = false;\n\n protected expiryMonth: JQuery = null;\n protected expiryYear: JQuery = null;\n protected expiryField: JQuery = null;\n protected changedMonth: boolean = false;\n protected changedYear: boolean = false;\n\n constructor(app: JqueryApp) {\n super(app);\n CardEvent.setWebHelpers(this.webHelpers, this.app.getConfig());\n\n this.app.$(() => { // jQuery 3.0 \"document.ready\"\n this.app.$('#confirm-purchase').removeAttr('disabled');\n });\n }\n\n public styleCards() {\n const $ = this.app.$;\n const form = $('#payauth-form');\n if (form.length === 0)\n return;\n\n $('#screen-width').val($(this.webHelpers.window).width());\n $('#screen-height').val($(this.webHelpers.window).height());\n\n //const owner = this.app.$('#owner');\n const cardNumber = $('#cardNumber');\n const cardNumberField = $('#card-number-field');\n const cvvNumberField = $('#cvv-number-field');\n const CVV = $(\"#cvv\");\n const mastercard = $(\"#mastercard\");\n\n this.expiryField = $('#expiration-date');\n this.expiryMonth = $(\"#credit_expiry_month\");\n this.expiryYear = $(\"#credit_expiry_year\");\n const visa = $(\"#visa\");\n const amex = $(\"#amex\");\n\n // Use the payform library to format and validate\n // the payment fields.\n\n // TODO add timer event with ping?\n\n cardNumber.payform('formatCardNumber');\n CVV.payform('formatCardCVC');\n\n cardNumber.on(\"change\", () => {\n amex.removeClass('transparent').removeClass('active');\n visa.removeClass('transparent').removeClass('active');\n mastercard.removeClass('transparent').removeClass('active');\n\n if ($.payform.validateCardNumber(cardNumber.val() as string) == false) {\n cardNumberField.addClass('has-error');\n this.showCardError(\"invalidCc\");\n }\n else {\n cardNumberField.removeClass('has-error');\n cardNumberField.addClass('has-success');\n this.removeCardError(\"invalidCc\");\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionInput, \"User entered card number\");\n }\n\n if ($.payform.parseCardType(cardNumber.val() as string) == 'visa') {\n visa.addClass('active');\n mastercard.addClass('transparent');\n amex.addClass('transparent');\n }\n else if ($.payform.parseCardType(cardNumber.val() as string) == 'amex') {\n amex.addClass('active');\n mastercard.addClass('transparent');\n visa.addClass('transparent');\n }\n else if ($.payform.parseCardType(cardNumber.val() as string) == 'mastercard') {\n mastercard.addClass('active');\n amex.addClass('transparent');\n visa.addClass('transparent');\n }\n });\n\n CVV.on(\"change\", () => {\n //if (CVV.is(\":focus\"))\n //return;\n if ($.payform.validateCardCVC(CVV.val() as string) == false) {\n cvvNumberField.addClass('has-error');\n this.showCardError(\"invalidCvv\");\n }\n else {\n cvvNumberField.removeClass('has-error');\n cvvNumberField.addClass('has-success');\n this.removeCardError(\"invalidCvv\");\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionInput, \"User entered CVV\");\n }\n });\n\n this.expiryMonth.on(\"change\", () => {\n this.changedMonth = true;\n if (this.changedYear === true) // validate if both have been changed\n this.validateExpiration();\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionInput, \"User entered expiry month\");\n });\n\n this.expiryYear.on(\"change\", () => {\n this.changedYear = true;\n if (this.changedMonth === true)\n this.validateExpiration();\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionInput, \"User entered expiry year\");\n });\n\n //confirmButton.on(\"click\", (e) => {\n form.on(\"submit\", (e) => {\n if (this.validated === true)\n return;\n e.preventDefault();\n\n const isCardValid = $.payform.validateCardNumber(cardNumber.val() as string);\n const isCvvValid = $.payform.validateCardCVC(CVV.val() as string);\n const isValidExpiry = this.validateExpiration();\n\n //if((owner.val() as string).length < 5){\n if (!isCardValid) {\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionUserAction, \"User clicked pay: invalid Card no\");\n console.warn(\"Invalid card number\");\n this.showCardError(\"invalidCc\");\n }\n else if (!isCvvValid) {\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionUserAction, \"User clicked pay: invalid CVV\");\n console.warn(\"Invalid CVV\"); // also catches date in the past\n this.showCardError(\"invalidCvv\");\n }\n else if (!isValidExpiry) { // check if expiration date in the past\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionUserAction, \"User clicked pay: invalid expiration date\");\n console.warn(\"Invalid expiration date\");\n // card err already shown\n }\n else {\n // Everything is correct. Add your form submission code here.\n const event = new CardEvent(PaymentTrackingAction.PaymentTrackingActionUserAction, \"User clicked pay: validation passed\");\n this.clearCardError();\n this.validated = true;\n this.disablePayButtonTimer();\n //form.submit(); // use submit event to catch enter\n form.trigger(\"submit\");\n }\n });\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected validateExpiration(): boolean {\n const isValidExpiry = $.payform.validateCardExpiry(this.expiryMonth.val() as string, this.expiryYear.val() as string);\n\n if (isValidExpiry == false) {\n this.expiryField.addClass('has-error');\n this.showCardError(\"invalidExp\");\n return false;\n }\n this.removeCardError(\"invalidExp\");\n this.expiryField.removeClass('has-error');\n this.expiryField.addClass('has-success');\n return true;\n }\n\n protected disablePayButtonTimer() {\n const confirmButton = this.app.$('#confirm-purchase');\n confirmButton.attr('disabled', \"true\");\n setTimeout(() => {\n confirmButton.removeAttr('disabled');\n }, 12000);\n }\n\n protected showCardError(errLabel: string): void {\n let err = this.app.getTr().get(errLabel);\n if (!err)\n err = this.app.getTr().get(\"unknownErr\");\n this.app.$(\"#pay-cc-error\").html(err).fadeIn(\"slow\");\n }\n\n protected removeCardError(errLabel: string): void {\n let err = this.app.getTr().get(errLabel);\n if (this.app.$(\"#pay-cc-error\").html() === err)\n this.clearCardError();\n }\n\n protected clearCardError(): void {\n this.app.$(\"#pay-cc-error\").html(\"\").fadeOut(\"slow\");\n }\n}\n","function e(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function n(n){for(var t=1;t=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function s(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null==t)return;var a,o,r=[],i=!0,c=!1;try{for(t=t.call(e);!(i=(a=t.next()).done)&&(r.push(a.value),!n||r.length!==n);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==t.return||t.return()}finally{if(c)throw o}}return r}(e,n)||p(e,n)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function l(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||p(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(e,n){if(e){if(\"string\"==typeof e)return u(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===t&&e.constructor&&(t=e.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(e):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?u(e,n):void 0}}function u(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=new Array(n);t-1})).map((function(e){return t[e].nodeName}))}return e}var b='\\n \\n \\n \\n';var k={height:\"50px\",width:\"auto\",borderRadius:\"3px\",padding:\"10px\",locale:\"en\",type:\"pay\"},w=function(e){return e&&\"object\"===t(e)?Object.keys(k).reduce((function(t,a){return n(n({},t),{},i({},a,e[a]||k[a]))}),{}):k},x=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return Number(parseFloat(e/100).toFixed(2))},M={headers:{accept:\"application/json, text/plain, */*\",\"accept-language\":\"en-GB,en-US;q=0.9,en;q=0.8\",\"content-type\":\"application/x-www-form-urlencoded\",\"sec-ch-ua-mobile\":\"?0\",\"sec-fetch-dest\":\"empty\",\"sec-fetch-mode\":\"cors\",\"sec-fetch-site\":\"cross-site\"},referrerPolicy:\"no-referrer-when-downgrade\",method:\"POST\",mode:\"cors\",credentials:\"omit\"};function P(e){return Object.keys(e).reduce((function(n,t){var a=encodeURIComponent(t),o=encodeURIComponent(e[t]),r=\"\".concat(a,\"=\").concat(o);return[].concat(l(n),[r])}),[]).join(\"&\")}var V=function(e){return{biannually:\"BIANNUAL PLAN\",annually:\"ANNUAL PLAN\"}[e]||\"\".concat(e.toUpperCase(),\" PLAN\")},L=function(){try{return window.location&&\"https:\"===window.location.protocol&&window.ApplePaySession&&window.ApplePaySession.supportsVersion(m.applePayVersion)}catch(e){return!1}},S=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return L()&&e.includes(\"apple_pay\")};function E(e){var n=document.createElement(\"iframe\");return n.setAttribute(\"frameBorder\",\"0\"),n.setAttribute(\"allowtransparency\",\"true\"),n.id=e,n.style.display=\"none\",n}function T(e){return e.querySelector(\"apple-pay-button\")||e.querySelector(\"#apple-pay-button\")}function _(e){return document.querySelector(\"#\".concat(e))}function q(e,n){var a=n.channels,o=void 0===a?[]:a,r=n.styles,i=void 0===r?{}:r,c={applePay:!1};return new Promise((function(n,a){if(e)if(S(o)){if(T(e))return c.applePay=!0,void n(c);(function(e,n){return new Promise((function(t,a){e||a(\"No script url\");var o=document.createElement(\"script\");o.src=e,o.addEventListener(\"load\",(function(){t(!0)})),o.addEventListener(\"error\",(function(){o.remove(),a(!1)})),n?n.appendChild(o):document.head.appendChild(o)}))})(\"https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js\",e).then((function(){if(window&&!Array.isArray(window.webpackJsonp))throw new Error(\"Incorrect data type for 'webpackJsonp', expected array, got \".concat(t(window.webpackJsonp),\". Switching to fallback apple pay button\"));!function(e,n){var t=n.styles,a=n.theme,o=document.createElement(\"style\"),r=function(e){var n=e.height,t=e.width,a=e.borderRadius,o=e.padding;return\"\\n apple-pay-button {\\n --apple-pay-button-width: \".concat(t,\";\\n --apple-pay-button-height: \").concat(n,\";\\n --apple-pay-button-border-radius: \").concat(a,\";\\n --apple-pay-button-padding: \").concat(o,\";\\n --apple-pay-button-box-sizing: border-box;\\n width: \").concat(t,\";\\n }\\n\")}(t);o.type=\"text/css\",o.styleSheet?o.styleSheet.cssText=r:o.appendChild(document.createTextNode(r)),e.appendChild(o);var i=document.createElement(\"apple-pay-button\");i.setAttribute(\"buttonstyle\",\"light\"===a?\"white\":\"black\"),i.setAttribute(\"type\",t.type),i.setAttribute(\"locale\",t.locale),e.appendChild(i)}(e,{styles:w(i.applePay),theme:i.theme}),c.applePay=!0,n(c)})).catch((function(){!function(e,n){var t=n.styles,a=n.theme,o=document.createElement(\"style\"),r=function(e){var n=e.height,t=e.width,a=e.borderRadius,o=e.padding,r=e.type,i=e.locale;return\"\\n @supports (-webkit-appearance: -apple-pay-button) { \\n .apple-pay-button {\\n display: inline-block;\\n -webkit-appearance: -apple-pay-button;\\n width: \".concat(t,\";\\n height: \").concat(n,\";\\n border-radius: \").concat(a,\";\\n padding: \").concat(o,\";\\n -apple-pay-button-type: \").concat(r,\";\\n -webkit-locale: \").concat(i,\";\\n }\\n .apple-pay-button-black {\\n -apple-pay-button-style: black;\\n }\\n .apple-pay-button-white {\\n -apple-pay-button-style: white;\\n }\\n .apple-pay-button-white-with-line {\\n -apple-pay-button-style: white-outline;\\n }\\n }\\n\\n @supports not (-webkit-appearance: -apple-pay-button) {\\n .apple-pay-button {\\n display: inline-block;\\n background-size: 100% 60%;\\n background-repeat: no-repeat;\\n background-position: 50% 50%;\\n border-radius: 5px;\\n padding: 0px;\\n box-sizing: border-box;\\n min-width: 200px;\\n min-height: 32px;\\n max-height: 64px;\\n }\\n .apple-pay-button-black {\\n background-image: -webkit-named-image(apple-pay-logo-white);\\n background-color: black;\\n }\\n .apple-pay-button-white {\\n background-image: -webkit-named-image(apple-pay-logo-black);\\n background-color: white;\\n }\\n .apple-pay-button-white-with-line {\\n background-image: -webkit-named-image(apple-pay-logo-black);\\n background-color: white;\\n border: .5px solid black;\\n }\\n }\\n\")}(t);o.type=\"text/css\",o.styleSheet?o.styleSheet.cssText=r:o.appendChild(document.createTextNode(r)),e.appendChild(o);var i=document.createElement(\"button\");i.classList.add(\"apple-pay-button\",\"light\"===a?\"apple-pay-button-white\":\"apple-pay-button-black\"),i.id=\"apple-pay-button\";var c=document.createElement(\"span\");c.classList.add(\"logo\"),i.appendChild(c),e.appendChild(i)}(e,{styles:w(i.applePay),theme:i.theme}),c.applePay=!0,n(c)}))}else a(\"No wallet payment method is available on this device\");else a(\"Container to mount elements was not provided\")}))}function A(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function I(e){return e.querySelector(\"#paystackpop-button\")}function z(e){return e.querySelector(\"#payment-request-button\")}function O(e,n){var t=document.querySelector(\"#pre-checkout-modal-\".concat(e));if(t){if(I(t)&&z(t))return t;t.remove()}var a=document.createElement(\"div\");a.classList.add(\"pre-checkout-modal\"),a.id=\"pre-checkout-modal-\".concat(e),a.style.zIndex=Array.from(document.querySelectorAll(\"body *\")).map((function(e){return parseFloat(window.getComputedStyle(e).zIndex)})).filter((function(e){return!Number.isNaN(e)})).sort().pop()+1;var o=document.createElement(\"div\");o.classList.add(\"pre-checkout-modal__content\"),a.appendChild(o);var r=n||{},i=r.merchant_logo,c=r.merchant_name,s=r.email,l=r.amount,p=r.currency,u=document.createElement(\"div\");u.classList.add(\"payment-info\"),u.innerHTML='\"').concat(c,'\\n
\\n
').concat(s,'
\\n
Pay ').concat(p,\" \").concat(l/100,\"
\\n
\"),o.appendChild(u),o.innerHTML+='\\n \\n';var d=document.createElement(\"div\");d.classList.add(\"modal-wrapper\"),d.innerHTML='\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n';var h=document.createElement(\"p\");h.innerHTML=\"Pay with Apple Pay to complete your purchase without filling a form\",d.appendChild(h);var C=document.createElement(\"div\");C.id=\"payment-request-button\",d.appendChild(C);var m=document.createElement(\"button\");m.id=\"paystackpop-button\",m.innerText=\"More payment options\",d.appendChild(m),d.innerHTML=d.innerHTML+b+'\\n\\n\\n\\n',o.appendChild(d);var y=document.createElement(\"style\");return y.textContent='\\n .pre-checkout-modal {\\n display: none;\\n position: fixed;\\n z-index: 1;\\n left: 0;\\n top: 0;\\n width: 100vw;\\n height: 100%;\\n overflow: auto;\\n background-color: rgba(0, 0, 0, 0.75);\\n transition: all 0.2s ease;\\n }\\n\\n .pre-checkout-modal.show {\\n display: block;\\n }\\n\\n .pre-checkout-modal__content {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n margin-left: auto;\\n margin-right: auto;\\n background-color: #fefefe;\\n padding: 30px 24px;\\n padding-bottom: max(30px, env(safe-area-inset-bottom));\\n width: 100%;\\n border-radius: 6px 6px 0 0;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n max-width: 450px;\\n\\n box-sizing: border-box;\\n transform: translateY(238px);\\n transition: transform 0.3s cubic-bezier(.16,.81,.32,1);\\n }\\n\\n .modal-wrapper {\\n padding: 0 16px;\\n }\\n\\n .payment-info {\\n position: relative;\\n padding-bottom: 15px;\\n border-bottom: solid 1px whitesmoke;\\n display: flex;\\n align-items: flex-start;\\n justify-content: space-between;\\n width: 100%;\\n }\\n\\n .customer-email {\\n color: #737373;\\n font-size: 13px;\\n line-height: 16px;\\n }\\n\\n .customer-info {\\n flex: 1;\\n text-align: right;\\n }\\n\\n .merchant-logo {\\n display: flex;\\n align-items: center;\\n height: 30px;\\n }\\n .transaction-amount {\\n margin-top: 5px;\\n font-size: 13px;\\n line-height: 16px;\\n color: #737373;\\n }\\n\\n .amount {\\n color: #29b263;\\n font-weight: bold;\\n }\\n\\n @media only screen and (min-width: 500px) {\\n .pre-checkout-modal__content {\\n bottom: 0;\\n top: 0;\\n margin: auto;\\n border-radius: 6px;\\n height: fit-content;\\n }\\n }\\n\\n .pre-checkout-modal__content.show {\\n transform: translateY(0);\\n margin: 0 auto;\\n margin-top: 100px;\\n }\\n\\n .pre-checkout-modal__content > * {\\n margin-top: 0;\\n margin-bottom: 40px;\\n }\\n .pre-checkout-modal__content > *:last-child {\\n margin-bottom: 0;\\n }\\n\\n .pre-checkout-modal__content svg {\\n margin: auto;\\n width: 100%;\\n }\\n\\n #inline-button-wordmark--white {\\n position: absolute;\\n bottom: -50px;\\n margin: auto;\\n right: 0;\\n width: fit-content;\\n }\\n\\n #inline-button-wordmark--grey {\\n display: none;\\n }\\n\\n .pre-checkout-modal__content #apple-pay-mark--light {\\n margin-bottom: 16px;\\n }\\n\\n .pre-checkout-modal p {\\n -webkit-text-size-adjust: 100%;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: optimizeLegibility;\\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\",\\n \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\\n color: #4E4E4E;\\n line-height: 28px;\\n font-size: 14px;\\n font-weight: 500;\\n margin: 0;\\n padding: 0 20px;\\n text-align: center;\\n letter-spacing: -0.3px;\\n }\\n\\n .pre-checkout-modal button {\\n height: 42px;\\n width: 100%;\\n background: linear-gradient(180deg, #40ad57 21.43%, #44b669 88.1%), #44b669;\\n border: 1px solid #49a861;\\n box-sizing: border-box;\\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.1);\\n border-radius: 5px;\\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);\\n color: #ffffff;\\n font-weight: 600;\\n font-size: 14px;\\n line-height: 14px;\\n cursor: pointer;\\n\\n -webkit-text-size-adjust: 100%;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n text-rendering: optimizeLegibility;\\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\",\\n \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\\n }\\n\\n #payment-request-button {\\n width: 100%;\\n height: fit-content;\\n margin: 24px 0 16px 0;\\n }\\n\\n #paystackpop-button {\\n padding: 0 16px;\\n }\\n\\n #apple-pay-close-button {\\n position: absolute;\\n text-align: center;\\n top: 0;\\n right: -26px;\\n height: 16px;\\n width: 16px;\\n padding: 0;\\n display: inline-block;\\n z-index: 3;\\n border-radius: 50%;\\n background: transparent;\\n transition: all 300ms;\\n outline: none;\\n cursor: pointer;\\n border: none;\\n }\\n\\n #apple-pay-close-button svg {\\n width: initial;\\n }\\n \\n #apple-pay-close-button:hover {\\n background-color: #e22b28;\\n }\\n\\n @media only screen and (max-width: 500px) {\\n .pre-checkout-modal__content {\\n max-width: 500px;\\n border-radius: 0;\\n padding-bottom: 0;\\n }\\n\\n .modal-wrapper {\\n padding: 0;\\n }\\n\\n #inline-button-wordmark--white {\\n display: none\\n }\\n \\n #inline-button-wordmark--grey {\\n display: block;\\n width: 100%;\\n margin: 16px 0;\\n height: 13px;\\n }\\n\\n #apple-pay-close-button {\\n display: none;\\n }\\n }\\n',document.body.appendChild(y),document.body.appendChild(a),a}var H=[{value:\"key\",required:!0,types:[\"string\"]},{value:\"amount\",required:!0,or:[\"plan\",\"planCode\"],types:[\"string\",\"number\"]},{value:\"currency\",required:!1,types:[\"string\"]},{value:\"email\",required:!0,or:[\"customerCode\"],types:[\"string\"]},{value:\"label\",required:!1,types:[\"string\"]},{value:\"firstName\",required:!1,types:[\"string\"]},{value:\"lastName\",required:!1,types:[\"string\"]},{value:\"reference\",required:!1,types:[\"string\"]},{value:\"phone\",required:!1,types:[\"string\"]},{value:\"customerCode\",required:!1,override:\"email\",types:[\"string\"]},{value:\"channels\",required:!1,types:[\"array\"]},{value:\"paymentRequest\",required:!1,types:[\"string\",\"number\"]},{value:\"paymentPage\",required:!1,types:[\"string\"]},{value:\"hash\",required:!1,types:[\"string\"]},{value:\"container\",required:!1,types:[\"string\"]},{value:\"metadata\",required:!1,types:[\"object\"]},{value:\"subaccountCode\",required:!1,types:[\"string\"]},{value:\"bearer\",required:!1,types:[\"string\"]},{value:\"transactionCharge\",required:!1,types:[\"string\",\"number\"]},{value:\"planCode\",required:!1,override:\"amount\",types:[\"string\"]},{value:\"subscriptionCount\",required:!1,types:[\"number\"]},{value:\"planInterval\",required:!1,types:[\"string\"]},{value:\"subscriptionLimit\",required:!1,types:[\"number\"]},{value:\"subscriptionStartDate\",required:!1,types:[\"string\"]},{value:\"accessCode\",required:!1,types:[\"string\"]},{value:\"onError\",required:!1,types:[\"function\"]},{value:\"onLoad\",required:!1,types:[\"function\"]},{value:\"onSuccess\",required:!1,types:[\"function\"]},{value:\"onCancel\",required:!1,types:[\"function\"]},{value:\"callback\",required:!1,types:[\"function\"]},{value:\"onClose\",required:!1,types:[\"function\"]},{value:\"onBankTransferConfirmationPending\",required:!1,types:[\"function\"]},{value:\"firstname\",required:!1,types:[\"string\"]},{value:\"lastname\",required:!1,types:[\"string\"]},{value:\"customer_code\",required:!1,types:[\"string\"]},{value:\"payment_request\",required:!1,types:[\"string\",\"number\"]},{value:\"subaccount\",required:!1,types:[\"string\"]},{value:\"transaction_charge\",required:!1,types:[\"number\",\"string\"]},{value:\"plan\",required:!1,types:[\"string\"]},{value:\"quantity\",required:!1,types:[\"number\"]},{value:\"interval\",required:!1,types:[\"string\"]},{value:\"invoice_limit\",required:!1,types:[\"number\",\"string\"]},{value:\"start_date\",required:!1,types:[\"string\"]},{value:\"payment_page\",required:!1,types:[\"number\",\"string\"]},{value:\"order_id\",required:!1,types:[\"number\"]},{value:\"ref\",required:!1,types:[\"string\"]},{value:\"card\",required:!1,types:[\"string\"]},{value:\"bank\",required:!1,types:[\"string\"]},{value:\"split\",required:!1,types:[\"object\"]},{value:\"split_code\",required:!1,types:[\"string\"]},{value:\"transaction_type\",required:!1,types:[\"string\"]},{value:\"subscription\",required:!1,types:[\"number\"]}];function j(e){var t,a=n({},e);a.metadata=e.metadata||{},a.metadata.referrer=(t=window.location.href)&&t.length>500?t.split(\"?\")[0]:t,a.metadata=JSON.stringify(a.metadata),a.mode=\"popup\",e.split&&\"string\"!=typeof e.split&&(a.split=JSON.stringify(a.split));return void 0!==a.card&&[\"false\",!1].indexOf(a.card)>-1&&(a.channels=[\"bank\"],delete a.card),void 0!==a.bank&&[\"false\",!1].indexOf(a.bank)>-1&&(a.channels=[\"card\"],delete a.bank),[{to:\"firstname\",from:\"firstName\"},{to:\"lastname\",from:\"lastName\"},{to:\"customer_code\",from:\"customerCode\"},{to:\"payment_request\",from:\"paymentRequest\"},{to:\"subaccount\",from:\"subaccountCode\"},{to:\"transaction_charge\",from:\"transactionCharge\"},{to:\"plan\",from:\"planCode\"},{to:\"quantity\",from:\"subscriptionCount\"},{to:\"interval\",from:\"planInterval\"},{to:\"invoice_limit\",from:\"subscriptionLimit\"},{to:\"start_date\",from:\"subscriptionStartDate\"},{to:\"ref\",from:\"reference\"}].forEach((function(e){a[e.from]&&(a[e.to]=a[e.from],delete a[e.from])})),Object.values(e).forEach((function(n,t){if(\"function\"==typeof n){var o=Object.keys(e)[t];delete a[o]}})),a}var U=[\"iPad Simulator\",\"iPhone Simulator\",\"iPod Simulator\",\"iPad\",\"iPhone\",\"iPod\"],N=window&&window.navigator&&(window.navigator.platform||window.navigator.userAgentData&&window.navigator.userAgentData.platform),R=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.platform,t=e.userAgent,a=void 0===t?window&&window.navigator&&window.navigator.userAgent:t,o=n||N;return U.includes(o)||a.includes(\"Mac\")&&\"ontouchend\"in document},B=function(e,n,t){var a=\"\".concat(m.paystackApiUrl,\"transaction/update_log/\").concat(e),o={Authorization:\"Bearer \".concat(n)};return fetch(a,{method:\"POST\",body:JSON.stringify({payload:JSON.stringify(t)}),headers:o})},Z=function(e,n){var t=\"\".concat(m.paystackApiUrl,\"transaction/set_ip/\").concat(e),a={Authorization:\"Bearer \".concat(n)};return fetch(t,{method:\"POST\",headers:a})},D={initializeLog:function(e){var n=e||{},t=n.attempts,a=n.authentication,o=n.errors,r=n.history;this.log={start_time:Math.round(Date.now()/1e3),time_spent:0,attempts:t||0,authentication:a,errors:o||0,success:!1,mobile:R(),input:[],history:r||[]}},getTimeSpent:function(){var e=Math.round(Date.now()/1e3);return this.log.time_spent=e-this.log.start_time,this.log.time_spent},logAPIResponse:function(e,n){switch(e.status){case\"success\":return this.logApiSuccess(n);case\"failed\":return this.logApiError(e.message);default:return!1}},logValidationResponse:function(e){return this.log.history.push({type:\"action\",message:e,time:this.getTimeSpent()}),this.saveLog()},logAttempt:function(e){var n=\"Attempted to pay\";return e&&(n+=\" with \".concat(e)),this.log.attempts+=1,this.log.history.push({type:\"action\",message:n,time:this.getTimeSpent()}),this.saveLog()},logApiError:function(e){var n=\"Error\";return e&&(n+=\": \".concat(e)),this.log.errors+=1,this.log.history.push({type:\"error\",message:n,time:this.getTimeSpent()}),this.saveLog()},logApiSuccess:function(e){var n=\"Successfully paid\";return e&&(n+=\" with \".concat(e)),this.log.success=!0,this.log.history.push({type:\"success\",message:n,time:this.getTimeSpent()}),this.saveLog()},saveLog:function(){try{if(this.response)return B(this.id,this.response.merchant_key,this.log)}catch(e){}},saveIpAddress:function(){try{if(this.response)return Z(this.id,this.response.merchant_key)}catch(e){}}},F={requestInline:function(){var e=this;return(this.accessCode?fetch(new URL(\"transaction/verify_access_code/\".concat(this.accessCode),m.paystackApiUrl).toString(),{headers:{\"Content-Type\":\"application/json\"}}):fetch(new URL(\"/checkout/request_inline\",m.paystackApiUrl).toString(),{method:\"POST\",body:JSON.stringify(this.urlParameters),headers:{\"Content-Type\":\"application/json\"}})).then((function(e){return e.json()})).then((function(n){if(!1===n.status)throw new Error(n.message);return e.response=n.data,e.id=n.data.id,e.status=n.data.transaction_status,e.accessCode=n.data.access_code,e.log=null,Object.assign(e,D),e.initializeLog(n.data.log),e.saveIpAddress(),n.data}))}},W=function(){function e(n){a(this,e),function(e){function n(e,n){this.message=e,this.issues=n||[]}if(!e||\"object\"!==t(e))throw new n(\"Transaction parameters should be a non-empty object\");var a=e;if(\"accessCode\"in a)return{accessCode:a.accessCode};Object.keys(a).forEach((function(e){void 0!==H.find((function(n){return n.value===e}))||delete a[e]}));var o=Object.keys(a),r=[];if(H.filter((function(e){return e.required})).forEach((function(e){var n=!a[e.value],t=e.or?e.or.some((function(e){return a[e]})):null;n&&!t&&r.push({message:\"Required parameter missing: \".concat(e.value)})})),o.forEach((function(e){var n=a[e],o=H.find((function(n){return n.value===e})),i=t(n);\"object\"===i&&Array.isArray(n)&&(i=\"array\"),o.types.indexOf(i)<=-1&&r.push({message:\"Invalid parameter type: \".concat(e),validTypes:o.types})})),o.forEach((function(e){var n=H.find((function(n){return n.value===e}));n.override&&delete a[n.override]})),r.length)throw new n(\"Invalid transaction parameters\",r)}(n),this.parameters=n,this.urlParameters=j(n),this.id=null,this.status=null,this.accessCode=null,this.authorizationUrl=null,this.errors=[],this.response=null,this.isActive=!0;var o=n.onError,r=n.onLoad,i=n.onSuccess,c=n.onCancel,s=n.callback,l=n.onClose,p=n.onBankTransferConfirmationPending;this.callbacks={onError:o,onLoad:r,onSuccess:i,onCancel:c,onBankTransferConfirmationPending:p},this.deprecatedCallbacks={callback:s,onClose:l},Object.assign(this,F)}return r(e,[{key:\"onSetupError\",value:function(e){this.logError(e),this.callbacks.onError&&this.callbacks.onError(e)}},{key:\"onLoad\",value:function(e){var n=e.id,t=e.customer,a=e.accessCode;Object.assign(this,{id:n,customer:t,accessCode:a}),this.authorizationUrl=\"\".concat(m.checkoutUrl).concat(a),this.callbacks.onLoad&&this.callbacks.onLoad({id:n,customer:t,accessCode:a})}},{key:\"onSuccess\",value:function(e){this.isActive=!1,this.response=e,this.status=e.status,this.callbacks.onSuccess&&this.callbacks.onSuccess(e),this.deprecatedCallbacks.callback&&this.deprecatedCallbacks.callback(e)}},{key:\"setStatus\",value:function(e){this.status=e}},{key:\"onCancel\",value:function(){this.callbacks.onCancel&&this.callbacks.onCancel(),this.deprecatedCallbacks.onClose&&this.deprecatedCallbacks.onClose()}},{key:\"cancel\",value:function(){this.isActive=!1,this.onCancel()}},{key:\"onBankTransferConfirmationPending\",value:function(){this.cancel(),this.callbacks.onBankTransferConfirmationPending&&this.callbacks.onBankTransferConfirmationPending()}},{key:\"logError\",value:function(e){this.errors.push(e)}}]),e}(),J=console?console.warn||console.log:function(){};function K(e,n,t){J('\"'.concat(e,'\" has been deprecated, please use \"').concat(n,'\". ').concat(t||\"\"))}var Q,G=[\"preload\",\"inlineTransaction\"],Y=[\"container\",\"styles\",\"onElementsMount\"];function X(e,n){if(!e.length)return null;var t=e.filter((function(e){var t,a,o,r,i=!e.status||\"abandoned\"===e.status,c=(t=e.parameters,a=n,o=Object.keys(t).sort().join(\"\")===Object.keys(a).sort().join(\"\"),r=Object.values(t).sort().join(\"\")===Object.values(a).sort().join(\"\"),o&&r);return i&&c}));return t.length?t[t.length-1]:null}function $(e){var n=e.checkoutIframe,t=e.urlParameters;n&&t&&n.contentWindow.postMessage({type:\"inline:url\",path:\"newTransaction\",params:t},\"*\")}var ee=\"trackCheckoutClosed\",ne=\"trackPaymentError\",te=\"trackPaymentAttempt\",ae=\"trackPaymentCompletion\";function oe(e){throw J(e),new Error(e)}var re,ie,ce=function(){function e(n){var t,o;a(this,e),this.id=function(){for(var e=\"\",n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",t=0;t<5;t+=1)e+=n.charAt(Math.floor(Math.random()*n.length));return e}(),this.transactions=[],this.isOpen=!1,this.isLoaded=!1,this.isDeprecatedApi=n&&n.isDeprecatedApi,n&&n.isEmbed?this.isEmbed=!0:n&&n.isPaymentRequest&&(n.container&&_(n.container)||oe(\"A container is required to mount the payment request button\"),this.paymentRequestContainer=_(n.container),this.paymentRequestTransaction=null),this.preCheckoutModal=null,this.backgroundIframe=function(e){var n=E(\"inline-background-\".concat(e));n.style.cssText=\"\\n z-index: 999999999999999;\\n background: transparent;\\n background: rgba(0, 0, 0, 0.75); \\n border: 0px none transparent;\\n overflow-x: hidden;\\n overflow-y: hidden;\\n margin: 0;\\n padding: 0;\\n -webkit-tap-highlight-color: transparent;\\n -webkit-touch-callout: none;\\n position: fixed;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n transition: opacity 0.3s;\\n -webkit-transition: opacity 0.3s;\\n visibility: hidden;\\n display: none;\\n\",document.body.appendChild(n);var t=n.contentWindow.document;return t.open(),t.write('\\n \\n \\n\\n \\n \\n \\n \\n Paystack Popup Loader\\n \\n \\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n\\n \\n'),t.close(),n}(this.id),this.checkoutIframe=(t=this.id,(o=E(\"inline-checkout-\".concat(t))).src=\"\".concat(m.checkoutUrl,\"popup\"),o.style.cssText=\"\\n z-index: 999999999999999;\\n background: transparent;\\n border: 0px none transparent;\\n overflow-x: hidden;\\n overflow-y: hidden;\\n margin: 0;\\n padding: 0;\\n -webkit-tap-highlight-color: transparent;\\n -webkit-touch-callout: none;\\n position: fixed;\\n left: 0;\\n top: 0;\\n width: 100%;\\n visibility: hidden;\\n display: none;\\n height: 100%;\\n\",o.setAttribute(\"allowpaymentrequest\",\"true\"),document.body.appendChild(o),o),this.registerListeners()}return r(e,[{key:\"registerListeners\",value:function(){var e=this;window.addEventListener(\"message\",(function(n){var t=\"\".concat(n.origin,\"/\")===m.checkoutUrl,a=e.checkoutIframe&&e.checkoutIframe.contentWindow===n.source,o=e.isEmbed;t||a?e.respondToEvent(n):o&&e.respondToEmbedEvents(n)}))}},{key:\"sendAnalyticsEventToCheckout\",value:function(e,n){this.checkoutIframe.contentWindow.postMessage({type:\"analytics\",action:e,params:n},\"*\")}},{key:\"checkout\",value:function(e){if(!L()||!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.platform,t=e.userAgent,a=void 0===t?window&&window.navigator&&window.navigator.userAgent:t,o=n||N,r=a&&!!a.match(/Version\\/[\\d.]+.*Safari/),i=o&&/(Mac)/i.test(o);return R()||i&&r}())return Promise.resolve(this.newTransaction(e));this.activeTransaction()&&this.activeTransaction().cancel(),Q=this;var n=X(this.transactions,e)||new W(e);return new Promise((function(e,t){n.requestInline().then((function(t){t.channels.includes(\"apple_pay\")?(Q.preloadTransaction({inlineTransaction:n}),Q.preCheckoutModal=O(Q.id,t),Q.paymentRequestContainer=z(Q.preCheckoutModal),q(Q.paymentRequestContainer,{channels:t.channels,styles:{applePay:{width:\"100%\",type:\"pay\",height:\"42px\",padding:\"15px\",borderRadius:\"5px\"}}}).then((function(){var t;Q.registerPreCheckoutModalEventListeners(),Q.registerPaymentRequestEventListeners(),t=Q.preCheckoutModal,new Promise((function(e,n){try{var a=t.querySelector(\".pre-checkout-modal__content\");t.classList.add(\"show\"),setTimeout((function(){a.classList.add(\"show\"),e(!0)}),50)}catch(e){n(e)}})),e(n)})).catch((function(){Q.closePreCheckoutModal(),Q.animateCheckoutIn(),e(n)}))):(Q.newTransaction({inlineTransaction:n}),e(n))})).catch((function(e){n.onSetupError({status:!1,message:e.message}),t(e)}))}))}},{key:\"registerPreCheckoutModalEventListeners\",value:function(){var e,n=this,t=!1,a=this.activeTransaction();document.addEventListener(\"touchstart\",(function(n){n.preventDefault(),t||(t=!0,e=setTimeout((function(){t=!1}),125))}),!0),document.addEventListener(\"touchend\",(function(n){n.target&&n.target.isSameNode(Q.preCheckoutModal)&&t&&(clearTimeout(e),Q.closePreCheckoutModal(),a&&a.cancel()),t=!1}),!0),I(this.preCheckoutModal).onclick=function(){n.closePreCheckoutModal(),n.animateCheckoutIn()},this.preCheckoutModal.querySelector(\"#apple-pay-close-button\").onclick=function(){n.sendAnalyticsEventToCheckout(ee),n.closePreCheckoutModalAndCancelTransaction()}}},{key:\"closePreCheckoutModal\",value:function(){var e;this.preCheckoutModal&&((e=this.preCheckoutModal)&&(e.querySelector(\".pre-checkout-modal__content\").classList.remove(\"show\"),e.classList.remove(\"show\")),this.preCheckoutModal.remove(),this.preCheckoutModal=null)}},{key:\"closePreCheckoutModalAndCancelTransaction\",value:function(){this.preCheckoutModal&&(this.cancelTransaction(),this.checkoutIframe&&this.checkoutIframe.contentWindow&&this.checkoutIframe.contentWindow.postMessage(\"close\",\"*\"),this.closePreCheckoutModal())}},{key:\"newTransaction\",value:function(e){var n,t=e.preload,a=e.inlineTransaction,o=c(e,G),r=this.paymentRequestContainer&&T(this.paymentRequestContainer);this.activeTransaction()&&!r&&this.activeTransaction().cancel();var i=X(this.transactions,a?a.parameters:o),s=i||a||new W(o);return i?(s.isActive=!0,n={accessCode:s.accessCode}):(n=s.accessCode?{accessCode:s.accessCode}:s.urlParameters,this.transactions.push(s)),this.isDeprecatedApi||this.open(n,t),s}},{key:\"preloadTransaction\",value:function(e){var t=this;this.newTransaction(n(n({},e),{},{preload:!0}));return function(){return t.animateCheckoutIn()}}},{key:\"paymentRequest\",value:function(e){var n=e.container,t=e.styles,a=e.onElementsMount,o=c(e,Y);return Q=this,new Promise((function(r,i){var c=document.querySelector(\"#\".concat(e.loadPaystackCheckoutButton));if(L()){Q.activeTransaction()&&Q.activeTransaction().cancel(),n&&_(n)||oe(\"A container is required to mount the payment request button\"),Q.paymentRequestContainer=_(n);var s=X(Q.transactions,o),l=s||new W(o);l.requestInline().then((function(e){q(Q.paymentRequestContainer,{channels:e.channels,styles:t}).then((function(e){a&&a(e)})).catch((function(){a&&a(null)})).finally((function(){if(s?l.isActive=!0:Q.transactions.push(l),Q.registerPaymentRequestEventListeners(),c){var e=Q.preloadTransaction({inlineTransaction:l});c.onclick=e}r(l)}))})).catch((function(e){l.onSetupError({status:!1,message:e.message}),i(e)}))}else{if(e&&e.loadPaystackCheckoutButton)if(c){var p=Q.preloadTransaction(o);c.onclick=p}else J(\"This device does not support any payment request wallet options. Please consult our documentation at https://developers.paystack.co/docs/paystack-inline to see how to load alternative payment options using 'loadPaystackCheckoutButton'\");a&&a(null);var u=Q.activeTransaction();r(u)}}))}},{key:\"registerApplePayEventListener\",value:function(){var e=this;T(this.paymentRequestContainer).onclick=function(){return e.startApplePay()}}},{key:\"registerPaymentRequestEventListeners\",value:function(){var e=this.activeTransaction();e&&S(e.response.channels)?this.registerApplePayEventListener():A(this.paymentRequestContainer)}},{key:\"startApplePay\",value:function(){var e,t,a,o,r,i=this,c=\"apple pay\",s=this.activeTransaction();if(s){var l={channel:\"apple_pay\",paymentMethod:c,currency:s.currency,amount:s.amount},p={channel:\"apple_pay\",currency:s.currency,amount:s.amount,timeSpent:s.getTimeSpent()};try{s.logAttempt(c),this.sendAnalyticsEventToCheckout(te,l);var u=(e={currency:s.response.currency,amount:s.response.amount,merchantName:s.response.merchant_name,interval:s.response.plan_details&&s.response.plan_details.interval},t=e.currency,a=e.amount,o=e.merchantName,r=e.interval,n({countryCode:\"NG\",currencyCode:t,merchantCapabilities:[\"supports3DS\",\"supportsCredit\",\"supportsDebit\"],supportedNetworks:[\"visa\",\"masterCard\"],requiredBillingContactFields:[\"postalAddress\",\"name\",\"phone\",\"email\"],total:{label:\"\".concat(o,\" - Paystack\"),type:\"final\",amount:String(x(a))}},\"string\"==typeof r&&\"\"!==r.trim()&&{lineItems:[{label:V(r),amount:String(x(a))}]})),d=new window.ApplePaySession(m.applePayVersion,u);d.onvalidatemerchant=function(e){var t=function(e){var t=e.transactionId,a=e.validationURL,o=e.merchantName,r=e.domainName,i=void 0===r?window&&window.location&&window.location.hostname:r,c=\"\".concat(m.paymentBaseUrl).concat(m.applePayValidateSessionPath),s=P({transaction:t,sessionUrl:a,displayName:o,domainName:i});return fetch(c,n(n({},M),{},{body:s})).then((function(e){return e.json()}))}({validationURL:e.validationURL,transactionId:s.id,merchantName:s.response.merchant_name});t.then((function(e){\"success\"!==e.status?s.onSetupError(e):d.completeMerchantValidation(e.data),s.logValidationResponse(e.message)})).catch((function(e){s.onSetupError(e)}))},d.oncancel=function(){Q.preCheckoutModal||s.onCancel()},d.onpaymentauthorized=function(e){var t=e.payment,a=function(e){var t=e.transactionId,a=e.payment,o=\"\".concat(m.paymentBaseUrl).concat(m.applePayChargePath),r=P({transaction:t,paymentObject:JSON.stringify(a)});return fetch(o,n(n({},M),{},{body:r})).then((function(e){return e.json()}))}({transactionId:s.id,payment:t});a.then((function(e){s.logAPIResponse(e,c),\"success\"===e.status?(d.completePayment(d.STATUS_SUCCESS),s.onSuccess(e),i.sendAnalyticsEventToCheckout(ae,p)):(d.completePayment(d.STATUS_FAILURE),s.onSetupError(e),i.sendAnalyticsEventToCheckout(ne,{channel:\"apple_pay\",message:e&&e.message||\"Transaction attempt failed\"})),Q.closePreCheckoutModal()})).catch((function(e){d.completePayment(d.STATUS_FAILURE),s.onSetupError(e),i.sendAnalyticsEventToCheckout(ne,{channel:\"apple_pay\",message:e&&e.message||\"Error occurred\"}),Q.closePreCheckoutModal()}))},d.begin()}catch(e){s.onSetupError(e)}}else oe(\"Could not initiate apple pay transaction\")}},{key:\"resumeTransaction\",value:function(e){return this.newTransaction({accessCode:e})}},{key:\"activeTransaction\",value:function(){var e=this.transactions.filter((function(e){return e.isActive})),n=e.length?e[e.length-1]:null;return n}},{key:\"cancelTransaction\",value:function(e){var n=this.transactions.find((function(n){return n.id===e}))||this.activeTransaction();n&&(n.cancel(),this.close())}},{key:\"respondToEvent\",value:function(e){if(e){var n,t,a=this.activeTransaction();try{var o=e.data||e.message,r=o.event,i=o.data;if(r)switch(r){case\"loaded:checkout\":if(this.isLoaded=!0,a)$({checkoutIframe:this.checkoutIframe,urlParameters:a.urlParameters});break;case\"loaded:transaction\":n=this.backgroundIframe,(t=n.contentWindow.document)&&(t.getElementById(\"app-loader\").style.display=\"none\"),a.onLoad(i);break;case\"error\":\"setup\"===i.type?a.onSetupError(i):a.logError(i);break;case\"cancel\":case\"close\":this.close();var c=i&&i.status;c&&a.setStatus(c),!(this.paymentRequestContainer&&T(this.paymentRequestContainer)&&!this.preCheckoutModal)&&(a.isActive=!1),a.onCancel();break;case\"transfer:pending\":this.close();var s=i&&i.status;s&&a.setStatus(s),a.onBankTransferConfirmationPending();break;case\"success\":this.close(),a.onSuccess(i)}}catch(e){}}}},{key:\"respondToEmbedEvents\",value:function(e){var n,t,a=this.activeTransaction(),o=e.data||e.message;if(o&&(\"string\"==typeof o||o instanceof String)){var r={action:t=(n=o)&&\"string\"==typeof n?n.split(\" \")[0]:null,data:t?n.split(\" \").slice(2).join(\" \"):null};if(r&&\"PaystackClose\"===r.action)r.data&&a.onSuccess(o);\"PaystackTLSClose\"===r.action&&a.cancel()}}},{key:\"animateCheckoutIn\",value:function(){var e,n=this;if(!this.isOpen){var t=this.checkoutIframe,a=this.backgroundIframe;(e={checkoutIframe:t,backgroundIframe:a},new Promise((function(n,t){e||t(\"No dom element provided\");var a=e.checkoutIframe,o=e.backgroundIframe;a&&o||t(\"No dom element provided\"),a.style.display=\"\",a.style.visibility=\"visible\",o.style.display=\"\",o.style.visibility=\"visible\",n()}))).then((function(){n.checkoutIframe.contentWindow.postMessage(\"render\",\"*\")})),this.isOpen=!0}}},{key:\"open\",value:function(e,n){e&&($({checkoutIframe:this.checkoutIframe,urlParameters:e}),n||this.animateCheckoutIn())}},{key:\"close\",value:function(){var e=this;if(this.isOpen){var n,t=this.checkoutIframe,a=this.backgroundIframe;(n={checkoutIframe:t,backgroundIframe:a},new Promise((function(e,t){n||t(\"No dom element provided\");var a=n.checkoutIframe,o=n.backgroundIframe;a&&o||t(\"No dom element provided\"),o.style.opacity=0,a.style.display=\"none\",a.style.visibility=\"hidden\",setTimeout((function(){o.style.display=\"none\",o.style.visibility=\"hidden\",o.style.opacity=1,e()}),300)}))).then((function(){e.checkoutIframe.contentWindow.postMessage(\"close\",\"*\")})),this.isOpen=!1}}},{key:\"isLoaded\",value:function(){return this.isLoaded}}],[{key:\"setup\",value:function(n){var t=n&&n.container;Q||(Q=new e({isDeprecatedApi:!0,isEmbed:t})),K(\"PaystackPop.setup()\",\"new PaystackPop()\",\"Please consult our documentation at https://developers.paystack.co/docs/paystack-inline\");var a=Q.newTransaction(n,\"deprecated\"),o=a.urlParameters;if(t){var r=\"\".concat(m.siteUrl,\"/assets/payment/production/inline.html?\").concat(y(o)),i=function(e,n){var t=E(\"embed-checkout-\".concat(e));return t.style.cssText=\"\\n background: transparent;\\n background: rgba(0,0,0,0);\\n border: 0px none transparent;\\n overflow-x: hidden;\\n overflow-y: hidden;\\n nmargin: 0;\\n padding: 0;\\n -webkit-tap-highlight-color: transparent;\\n -webkit-touch-callout: none;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n visibility: hidden;\\n display: none;\\n\",t.src=n,t.id=e,t.name=e,t}(Q.id,r);!function(e,n){var t=document.getElementById(e);t.innerHTML=\"\",t.removeAttribute(\"style\"),t.className=\"paystack-embed-container\",t.style.position=\"relative\",t.style.width=\"100%\",t.appendChild(n)}(n.container,i),i.onload=function(){var e;i.contentWindow.postMessage(\"PaystackOpen \".concat(Q.id),\"*\"),e=i,new Promise((function(n,t){e||t(\"No dom element provided\"),e.style.display=\"\",e.style.visibility=\"visible\",n()}))}}else a.openIframe=function(){K(\"openIframe\",\"open\",\"Please consult our documentation at https://developers.paystack.co/docs/paystack-inline\"),Q.open(o)};return a}}]),e}();if(re=g().length>0,ie=f()&&\"FORM\"===f().parentElement.tagName,re&&ie){var se,le=function(){var e={},t=f();return g().forEach((function(n){var a=t.getAttribute(n),o=n.split(\"data-\")[1].replace(/-([a-z])/g,(function(e){return e[1].toUpperCase()}));e[o]=a})),function(e){if(e.buttonId&&!document.getElementById(e.buttonId))throw new Error(\"Please make sure the buttonId is an element available in the DOM\");var t=n({},e);t.buttonText=e.buttonText||\"Pay\",t.buttonVariant=\"normal\",t.buttonWordmarkVariant=\"normal\";var a=[\"normal\",\"light\"];return e.buttonVariant&&a.indexOf(e.buttonVariant)>-1&&(t.buttonVariant=e.buttonVariant),e.buttonWordmarkVariant&&a.indexOf(e.buttonWordmarkVariant)>-1&&(t.buttonWordmarkVariant=e.buttonWordmarkVariant),t}(e)}(),pe=f().parentElement;Q||(Q=new ce),function(e){var n;if(e.id)(n=document.getElementById(e.id)).setAttribute(\"data-inline-id\",e.id);else{var t=document.createElement(\"div\");t.id=\"inline-button-\".concat(e.inlineId),t.innerHTML=function(e){var n,t,a={normal:'\\n \\n \\n ',light:b};return\"\\n \\n \\n
\\n ').concat(a[e.wordmarkVariant||\"normal\"],\"\\n
\\n \")}(e),e.parent.parentNode.insertBefore(t,e.parent.nextSibling),n=s(t.getElementsByTagName(\"button\"),1)[0]}return n}({inlineId:Q.id,amount:le.amount/100,currency:le.currency,id:le.buttonId,text:le.buttonText,variant:le.buttonVariant,wordmarkVariant:le.buttonWordmarkVariant,parent:f()}).addEventListener(\"click\",(function(e){e.preventDefault(),se?Q.resumeTransaction(se.accessCode):se=Q.newTransaction(n(n({},le),{},{onSuccess:function(e){var n,t,a,o,r,i;n={type:\"hidden\",name:\"reference\",value:e.reference,parent:pe},t=n.type,a=n.value,o=n.name,r=n.parent,(i=document.createElement(\"input\")).type=t,i.value=a,i.name=o,r.appendChild(i),pe.submit()}}))}))}export{ce as default};\n","import {AbstractPage} from \"../AbstractPage\";\nimport {JqueryApp} from \"../JqueryApp\";\n\nexport class AbstractGateway extends AbstractPage {\n constructor(app: JqueryApp) {\n super(app);\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected sendSizeFrameMessage(height: number) {\n if (window.parent === window.self)\n return;\n let targetOrigin = \"*\"; // send to all windows as we likely navigated in the frame\n window.parent.postMessage({\n 'func': 'onVpayFrameSize',\n 'data': {height: height},\n }, targetOrigin);\n }\n}\n","import PaystackPop from '@paystack/inline-js';\nimport {JqueryApp} from \"../JqueryApp\";\nimport {Payment, isSuccess} from \"../structs/Payment\";\nimport {logger} from \"../utils/Log\";\nimport {AbstractGateway} from \"./AbstractGateway\";\n\nexport class GatewaySa extends AbstractGateway { // PayStack\n protected static readonly FRAME_SIZE = 1050;\n\n protected ps: PaystackPop = null;\n protected transaction: any = null;\n protected checkPaymentStatusTimer: number = 0;\n protected paymentCheckStatusCount: number = 0;\n\n constructor(app: JqueryApp) {\n super(app);\n }\n\n public connectForm() {\n const paymentForm = document.getElementById('paymentForm');\n //paymentForm.addEventListener(\"submit\", payWithPaystack, false);\n //this.app.$(paymentForm).submit();\n if (this.app.$(paymentForm).length === 0)\n return;\n\n this.sendPayment();\n this.sendSizeFrameMessage(GatewaySa.FRAME_SIZE);\n this.app.$(paymentForm).on(\"submit\", (e) => {\n this.sendPayment(e);\n });\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected sendPayment(e?: any) {\n if (e)\n e.preventDefault();\n\n const config = this.app.getConfig();\n if (!config.gateway || !config.gateway.key) {\n window.alert(this.app.getTr().get(\"gatewayConfigError\"));\n return;\n }\n\n this.ps = new PaystackPop();\n const tx = this.ps.newTransaction({\n key: config.gateway.key,\n email: config.payment.email,\n amount: config.payment.amountGateway * 100,\n currency: 'ZAR', // NGN, GHS, ZAR or USD // config.payment.gatewayCurrency,\n ref: config.payment.token + \"-\" + config.payment.merchantId, // twice number\n channels: ['card'], // ['card', 'bank', 'ussd', 'qr', 'mobile_money', 'bank_transfer']\n //channels: 'card', // invalid\n //metadata: {},\n label: config.payment.descGateway, // replaces customer email on checkout form\n\n //first_name: \"Daniel\", // not stored\n //last_name: \"King\",\n //phone: \"\",\n\n onLoad: (transaction) => {\n // not firing\n },\n onError: (error) => {\n console.log(\"PAY ERROR\", error)\n },\n onSuccess: (transaction) => {\n // transaction.reference\n console.log(\"PAID\", transaction);\n this.transaction = transaction;\n this.checkPaymentStatus(config.payment);\n },\n onCancel: () => {\n // user closed popup\n console.log(\"customer cancelled payment\") // TODO notify cancel or just let it expire/try again?\n this.app.$(\"#confirm-purchase-gateway\").fadeIn(\"slow\");\n },\n onBankTransferConfirmationPending: () => {\n\n }\n });\n if (tx && tx.parameters) {\n this.removeGrayOverlay();\n if (isSuccess(config.payment)) {\n logger.info(\"Skipping payment updates for payment status %s\", config.payment.status);\n return;\n }\n setTimeout(() => { // delay to ensure server knows reference\n this.pingPayment(config.payment, tx.parameters.ref);\n },\n 3000);\n this.transaction = tx;\n setTimeout(() => {\n this.scheduleCheckPayment();\n }\n , 9*1000); // higher initial delay\n }\n }\n\n /**\n * Notify the server that a payment has been initiated.\n * @param payment\n * @param reference\n * @protected\n */\n protected pingPayment(payment: Payment, reference: string) {\n const config = this.app.getConfig();\n const fullToken = payment.token + \"-\" + payment.merchantId;\n const url = config.apiBase + config.pathUpdatePayment + \"/\" + fullToken;\n const data = {\n ref: reference,\n };\n this.webHelpers.getApi(url, data, (data) => {\n //console.log(\"PAYMENT PINGED\", data);\n if (!data || data.error) {\n console.error(\"Error during payment refresh\", data);\n return;\n }\n });\n }\n\n /**\n * Confirm if a payment has been made with the server.\n * @param payment\n * @param transaction\n * @protected\n */\n protected checkPaymentStatus(payment: Payment) {\n clearTimeout(this.checkPaymentStatusTimer);\n this.checkPaymentStatusTimer = 0;\n if (this.paymentCheckStatusCount > this.app.getConfig().maxCheckStatusCount) {\n console.error(\"Reached max check status count %d\", this.paymentCheckStatusCount);\n return;\n }\n\n const config = this.app.getConfig();\n const fullToken = payment.token + \"-\" + payment.merchantId;\n const url = config.apiBase + config.pathPayRefresh + \"/\" + fullToken;\n const data = {\n //ref: this.transaction.reference, // not set when opening the page\n ref: fullToken,\n };\n this.webHelpers.getApi(url, data, (data) => {\n //console.log(\"PAYMENT REFRESHED\", data);\n this.scheduleCheckPayment();\n this.paymentCheckStatusCount++;\n if (!data || data.error) {\n console.error(\"Error during payment refresh\", data);\n return;\n }\n\n if (data.payment.status === \"PAID\" || data.payment.status === \"DECLINED\") {\n const urlStr = config.pathPayDone + \"/\" + fullToken + window.document.location.search;\n clearTimeout(this.checkPaymentStatusTimer);\n window.location.assign(urlStr);\n }\n }).fail((err) => {\n console.error(\"Error during payment refresh\", err);\n this.scheduleCheckPayment();\n });\n }\n\n protected scheduleCheckPayment() {\n clearTimeout(this.checkPaymentStatusTimer);\n this.checkPaymentStatusTimer = window.setTimeout(() => {\n this.checkPaymentStatus(this.app.getConfig().payment);\n }, this.app.getConfig().checkStatusIntervalSec * 1000);\n }\n\n protected removeGrayOverlay() {\n this.app.$(\"body iframe\").each((i, el) => {\n const $el = this.app.$(el);\n if ($el.attr(\"src\") === undefined && $el.attr(\"allowtransparency\") !== undefined) {\n $el.remove();\n }\n const popup = $('iframe[src=\"https://checkout.paystack.com/popup\"]').detach();\n this.app.$('#paymentForm').append(popup);\n popup.css('display', 'block');\n popup.css('position', 'inherit');\n popup.css('width', '100%');\n popup.css('height', '100%');\n //popup.css('min-height', '630px');\n popup.addClass(\"scrollablePayFrame\");\n popup.css('margin-bottom', '20px');\n\n this.app.$(\"#confirm-purchase-gateway\").css(\"display\", \"none\");\n });\n }\n}\n","import {PaymentStatus} from \"./PaymentResponse\";\n\nexport interface PaymentChargeResponse {\n error: string; // possibly localized\n errorUser: string; // possibly localized\n\n payment?: Payment;\n existing: boolean;\n}\n\nexport interface Payment {\n timeTotalSec: number;\n timeRemainingSec: number;\n token: string;\n merchantId: number;\n amountFiat: number;\n status: PaymentStatus;\n email: string;\n // paidAmountCrypto: number;\n // remainingAmountCrypto: number;\n fiatCurrency: string;\n amountGateway: number;\n gatewayCurrency: string;\n couponCode: string;\n gateway: string; // enum short name\n descGateway: string;\n\n returnUrl: string; // URL to send the customer back to. may be empty\n\n //successPayImage: string; // image url, animated\n //successPayImageFinal: string; // image url\n}\n\nexport function isSuccess(payment: Payment): boolean {\n return payment.status === \"PAID\"; // or redeemed timestmap set (status still paid)\n}\n","\nclass Store {\n protected static readonly SERIALIZE_PREFIX = \"__s\";\n\n constructor() {\n }\n\n public getItem(key: string): any {\n let value = localStorage.getItem(key);\n if (value !== null && value.substr(0, Store.SERIALIZE_PREFIX.length) === Store.SERIALIZE_PREFIX)\n value = this.unserialize(value);\n return value;\n }\n\n public setItem(key: string, value: any) {\n if (typeof value !== \"string\")\n value = this.serialize(value); // localStorage only supports strings\n localStorage.setItem(key, value);\n }\n\n public removeItem(key: string) {\n localStorage.removeItem(key);\n }\n\n public clear() {\n localStorage.clear();\n }\n\n public getLength() {\n return localStorage.length;\n }\n\n public keyName(index: number) {\n return localStorage.key(index);\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected serialize(value: any): string {\n return Store.SERIALIZE_PREFIX + JSON.stringify(value);\n }\n\n protected unserialize(value: string): any {\n if (value && value.substr(0, Store.SERIALIZE_PREFIX.length) === Store.SERIALIZE_PREFIX)\n value = value.substr(Store.SERIALIZE_PREFIX.length);\n return JSON.parse(value);\n }\n}\n\nexport const store = new Store(); // export a singleton\n","import {logger} from \"../utils/Log\";\nimport {AbstractGateway} from \"./AbstractGateway\";\nimport {JqueryApp} from \"../JqueryApp\";\nimport {PaymentChargeResponse} from \"../structs/Payment\";\n\nexport class GatewayUs extends AbstractGateway { // PayStack\n constructor(app: JqueryApp) {\n super(app);\n }\n\n public async connectForm() {\n const config = this.app.getConfig();\n if (!config.gateway || !config.gateway.key) {\n window.alert(this.app.getTr().get(\"gatewayConfigError\"));\n return;\n }\n const {loadStripe} = await import('@stripe/stripe-js'); // code splitting\n const stripe = await loadStripe(config.gateway.key);\n //stripe.confirmCardPayment(paymentIntent.client_secret);\n\n const elements = stripe.elements();\n\n // Create individual Elements\n const style = {\n base: {\n color: \"#32325d\",\n fontFamily: 'Arial, sans-serif',\n fontSmoothing: \"antialiased\",\n fontSize: \"16px\",\n lineHeight: \"40px\",\n //border: \"1px solid #e5e6e7\", // doesn't work, needs JS\n \"::placeholder\": {\n color: \"#aab7c4\"\n }\n },\n invalid: {\n color: \"#cf0d17\",\n iconColor: \"#fa755a\"\n }\n };\n\n const cardNumber = elements.create('cardNumber', { style });\n const cardExpiry = elements.create('cardExpiry', { style });\n const cardCvc = elements.create('cardCvc', { style });\n\n const nrEl = document.getElementById(\"cardNumber\");\n nrEl.style.minWidth = \"275px\";\n this.styleInput(nrEl);\n const expiryEl = document.getElementById(\"cardExpiry\");\n expiryEl.style.minWidth = \"120px\";\n this.styleInput(expiryEl);\n const cvvEl = document.getElementById(\"cvv\");\n cvvEl.style.minWidth = \"100px\";\n this.styleInput(cvvEl);\n\n // Mount the elements to the DOM\n cardNumber.mount('#cardNumber');\n cardExpiry.mount('#cardExpiry');\n //const expMonthSelect = document.getElementById('credit_expiry_month') as HTMLOptionElement; // TODO JS API for card expiry removed?\n //const expYearSelect = document.getElementById('credit_expiry_year') as HTMLOptionElement;\n cardCvc.mount('#cvv');\n\n // Handle form submission\n const form = document.getElementById('payauth-form');\n form.addEventListener('submit', async (event) => {\n event.preventDefault();\n\n // Create a token\n //const expMonth = expMonthSelect.value;\n //const expYear = expYearSelect.value;\n const { token, error } = await stripe.createToken(cardNumber, {\n //exp_month: expMonth,\n //exp_year: expYear\n });\n\n if (error && error.message) {\n document.getElementById('card-errors').textContent = error.message;\n return;\n }\n //console.log('Token created:', token.id);\n\n // Send the token to your server\n this.sendPaymentToken(token.id);\n });\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected sendPaymentToken(token: string) {\n const config = this.app.getConfig();\n const payment = config.payment;\n const fullToken = payment.token + \"-\" + payment.merchantId;\n const url = config.apiBase + config.submitCardToken + \"/\" + fullToken;\n const data = {\n token: token,\n };\n this.webHelpers.postApi(url, data, (data: PaymentChargeResponse) => {\n if (data && data.errorUser)\n document.getElementById('card-errors').textContent = data.errorUser;\n if (data.payment && data.payment.status === \"DECLINED\") {\n window.location.reload(); // show declined and possibly other payment options\n return;\n }\n if (!data || data.error) {\n console.error(\"Error submitting card token\", data);\n return;\n }\n //console.log(\"RES\", data)\n\n if (data.payment && data.payment.status === \"PAID\") {\n window.location.assign(config.pathPayDone + \"/\" + fullToken + window.document.location.search);\n }\n }).fail((err) => {\n console.error(\"Error HTTP submitting card token\", err);\n });\n }\n\n protected styleInput(el: HTMLElement) {\n el.style.border = \"1px solid #e5e6e7\"; // Adds a border manually\n //el.style.padding = \"10px\"; // Adds padding\n //el.style.borderRadius = \"5px\"; // Rounds corners\n el.style.paddingLeft = \"10px\"; // for placeholders\n }\n}\n","import {AbstractPage} from \"./AbstractPage\";\nimport {JqueryApp} from \"./JqueryApp\";\n//import * as ProgressBar from \"progressbar.js\"\nimport * as misc from \"./utils/misc\";\nimport {logger} from \"./utils/Log\";\nimport {PaymentResponse} from \"./structs/PaymentResponse\";\nimport {CreditCard} from \"./CreditCard\";\nimport {GatewaySa} from \"./gateway/GatewaySa\";\nimport {store} from \"./utils/Store\";\nimport {Payment} from \"./structs/Payment\";\nimport {clearInterval} from \"timers\";\nimport {getBetween} from \"./utils/misc\";\nimport {GatewayUs} from \"./gateway/GatewayUs\";\n\n\nexport class Pay extends AbstractPage {\n //protected payment: PaymentResponse = null; // the latest payment status from API\n protected payment: Payment = null;\n protected gatewayUs: GatewayUs = null;\n protected gatewaySa: GatewaySa = null;\n protected cards: CreditCard = null;\n protected customerCountUpdateTimerID: number = 0;\n\n constructor(app: JqueryApp) {\n super(app);\n\n const config = this.app.getConfig();\n if (config.payment.gateway === \"st\")\n this.gatewayUs = new GatewayUs(app);\n else if (config.payment.gateway === \"ps\")\n this.gatewaySa = new GatewaySa(app);\n else\n this.cards = new CreditCard(app); // TODO only load on certain gateways\n\n if (window.Pace !== undefined) {\n /*\n window.Pace.options = { // must be done before Pace is started\n ajax: false\n }*/\n window.Pace.options.ajax = false;\n //window.Pace.restart();\n }\n\n this.app.$(window).on(\"load\", ($) => {\n //this.addButtonLinkClass();\n /*\n if (this.app.$(\".pay-preloader\").length > 0) {\n this.app.$(\".pay-preloader\").fadeOut(\"slow\");\n }\n this.webHelpers.preloadImages(config.payment.successPayImage, config.payment.successPayImageFinal);\n */\n if (this.cards !== null)\n this.cards.styleCards();\n if (this.gatewayUs !== null)\n this.gatewayUs.connectForm();\n else if (this.gatewaySa !== null)\n this.gatewaySa.connectForm();\n this.connectReturnToMerchantButton();\n this.listenPaymentReceivedFrame();\n });\n this.app.$(() => { // jQuery 3.0 \"document.ready\"\n this.addEventListeners();\n this.payment = config.payment;\n if (config.payment && config.payment.status === \"PAID\")\n this.sendPaidFrameMessage();\n this.startCustomerCountUpdateTimer();\n });\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected addEventListeners() {\n //if (this.app.$(\"#pay-qrcode-form\").length !== 0)\n //this.addPaymentFormEvents(this.app.$(\"#pay-qrcode-form\").eq(0)); // the form after the order has been placed\n this.hightlightDescriptor();\n }\n\n protected hightlightDescriptor(): void {\n let html = this.app.$(\".charged-pay\").html();\n if (html === undefined)\n return;\n let descriptor = getBetween(html, '\"descriptor\":\"', '\"');\n if (descriptor === false)\n return;\n html = html.replace(descriptor, `${descriptor}`);\n this.app.$(\".charged-pay\").html(html);\n }\n\n\n /*\n protected showPaymentReceived() {\n //if (this.fullyPaid === true)\n //return; // already updated\n //this.fullyPaid = true;\n\n const config = this.app.getConfig();\n const tr = this.app.getTr();\n\n config.payment.status = \"PAID\";\n //clearTimeout(this.checkLocalPaymentTimerID);\n let successImage = window.document.createElement(\"img\");\n successImage.src = config.payment.successPayImage;\n successImage.alt = tr.get(\"paid\");\n successImage.id = \"pay-success-image-animated\";\n this.addSuccessImageProperties(successImage);\n setTimeout(() => {\n this.showFinalPaidImage(); // TODO remove?\n }, 1300);\n\n this.app.$(\"#pay-payment-status\").text(tr.get(\"paid\"));\n this.app.$(\"#pay-payment-pending, #pay-payment-options, #pay-pay-instructions\").fadeOut(\"slow\");\n //this.app.$(\"#pay-qr-code\").replaceWith(successImage);\n\n this.sendPaidFrameMessage();\n }\n */\n\n protected sendPaidFrameMessage() {\n const config = this.app.getConfig();\n if (this.payment === null) {\n //console.warn(\"Generating mock payment. This shouldn't happen in production!\");\n //this.payment = PaymentResponse.generateMockPayment(config.payment.token);\n console.error(\"Unable to find payment config object\")\n return;\n }\n\n // only fire once\n const paidKey = \"paid-\" + this.payment.token;\n if (store.getItem(paidKey) == true)\n return;\n store.setItem(paidKey, true);\n\n /* // unreliable on confirm page\n if (config.fullPage === true) {\n console.debug(\"Skipped sending 'paid' message in fullPage mode\");\n return;\n }\n */\n if (window.parent === window.self) {\n console.debug(\"Skipped sending 'paid' message without parent\");\n return; // should be same as fullPage === true\n }\n //let targetOrigin = config.ref || \"*\"; // send to all windows as fallback only\n let targetOrigin = \"*\"; // send to all windows as we likely navigated in the frame\n //console.debug(\"Sending 'paid' message to origin: %s\", targetOrigin);\n window.parent.postMessage({\n 'func': 'onVpayPaid',\n 'data': this.payment,\n }, targetOrigin);\n }\n\n protected connectReturnToMerchantButton() {\n const btn = this.app.$(\"#return-merchant\");\n if (btn.length === 0)\n return;\n else if (window.parent === window.self) {\n btn.fadeOut(\"fast\");\n console.log(\"Disabling return to merchant button as we are not in an iframe\");\n return;\n }\n\n // TODO cancel click timer?\n btn.on(\"click\", (e) => {\n this.disableReturnToMerchantButtonTimer();\n let targetOrigin = \"*\";\n window.parent.postMessage({\n 'func': 'onVpayReturnToMerchant',\n 'data': {},\n }, targetOrigin);\n });\n\n // only auto reload once\n const reloadKey = \"reload-\" + this.payment.token;\n if (store.getItem(reloadKey) == true)\n return;\n store.setItem(reloadKey, true);\n setTimeout(() => {\n btn.click();\n },\n 30*1000);\n }\n\n protected listenPaymentReceivedFrame() {\n //const gatewayOrigin = \"https://verified-store.org\"; // ignore messages from other frames\n const gatewayOrigin = \"verified\";\n\n const onMessage = (event) => {\n //if (event.origin !== gatewayOrigin) {\n if (event.origin.indexOf(gatewayOrigin) === -1) {\n return;\n }\n\n let data = event.data;\n if (data.func === undefined)\n return;\n if (data.func === \"onVpayStorePaid\") {\n //const payment = data.data;\n //window.location.assign(payment.return_url);\n this.app.$(\"#vpay-frame-wrap\").fadeOut();\n }\n else\n console.debug(\"Received unknwon Vpay message type: %s\", data.func);\n }\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", onMessage, false);\n }\n else if ((window as any).attachEvent) {\n (window as any).attachEvent(\"onmessage\", onMessage, false);\n }\n }\n\n protected disableReturnToMerchantButtonTimer() {\n const confirmButton = $('#return-merchant');\n confirmButton.attr('disabled', \"true\");\n setTimeout(() => {\n confirmButton.removeAttr('disabled');\n }, 9000);\n }\n\n protected startCustomerCountUpdateTimer() {\n if (this.customerCountUpdateTimerID !== 0)\n return;\n this.app.$(\"#customerCount\").text(0.9 * this.app.getConfig().customerCount);\n this.customerCountUpdateTimerID = window.setInterval(() => {\n this.updateCustomerCount();\n }, 150);\n }\n\n protected updateCustomerCount() {\n const config = this.app.getConfig();\n const currentCount = parseInt(this.app.$(\"#customerCount\").text()) || 0;\n if (currentCount >= config.customerCount) {\n window.clearInterval(this.customerCountUpdateTimerID);\n return;\n }\n const step = Math.floor(config.customerCount / 120)\n let nextCount = currentCount + Math.floor(Math.random() * step);\n if (nextCount > config.customerCount)\n nextCount = config.customerCount;\n this.app.$(\"#customerCount\").text(nextCount);\n }\n\n /*\n protected showFinalPaidImage() {\n const config = this.app.getConfig();\n //let successImageFinal: HTMLImageElement = Object.assign(this.slpPayments.window.document.createElement(\"img\"), successImage); // doesn't copy attributes of native elements\n let successImageFinal = window.document.createElement(\"img\");\n successImageFinal.src = config.payment.successPayImageFinal;\n //successImageFinal.alt = this.slpPayments.getConfig().paidTxt;\n successImageFinal.id = \"pay-success-image\";\n this.addSuccessImageProperties(successImageFinal);\n this.app.$(\"#pay-success-image-animated, #pay-qr-code\").replaceWith(successImageFinal);\n\n // redirect customer back to store\n logger.verbose(\"Returning customer to URL: %s\", config.payment.returnUrl);\n if (!config.payment.returnUrl || config.payment.returnUrl.toLowerCase().indexOf(\"http\") !== 0)\n return;\n window.location.replace(config.payment.returnUrl);\n }\n */\n\n /*\n protected addSuccessImageProperties(image: HTMLImageElement) {\n image.style.maxWidth = \"300px\";\n image.style.maxHeight = \"300px\";\n image.style.width = \"100%\";\n image.style.display = \"block\";\n image.className = \"pay-center\";\n }\n */\n}\n","import {WebHelpers} from \"./utils/WebHelpers\";\n\n\nexport interface LanguageData {\n [key: string]: string; // can be string or sub-object with strings (rare)\n}\n\nexport class Localizer {\n public static readonly DEFAULT_LANG = \"en\";\n\n protected webHelpers: WebHelpers;\n protected baseUrl: string = \"/pub/locales/\"; // + {lang}.json\n protected language: string;\n protected data: LanguageData = null;\n\n /**\n * Create the translation class.\n * @param language the language to load (en, de, es, ...)\n * @param baseUrl the server to serve the {lang}.json file\n */\n constructor(webHelpers: WebHelpers, language: string, baseUrl: string = \"\") {\n this.webHelpers = webHelpers;\n this.language = language || Localizer.DEFAULT_LANG;\n if (baseUrl.length !== 0)\n this.baseUrl = baseUrl;\n }\n\n /**\n * Load the translation JSON file from server.\n */\n public async loadTranslations(): Promise {\n const langUrl = `${this.baseUrl}${this.language}.json`;\n try {\n let res = await fetch(langUrl);\n this.data = await res.json();\n console.log(this.data)\n }\n catch (err) {\n console.error(\"Error loading translation from %s\", langUrl, err);\n }\n }\n\n public loadTranslationsFromObject(key: string): void {\n if (typeof window[key] !== \"object\") {\n console.error(\"window.%s object to load translations doesn't exist\", key);\n return;\n }\n this.data = window[key];\n }\n\n /**\n * Adds the tr() function to the global window object (under the specified key as function name).\n * @param key\n */\n public exportTranslationFunctionToWindow(key: string = \"tr\"): void {\n if (window[key] !== undefined) {\n console.error(\"There already exists another translation function under the same key: %s\", key);\n return;\n }\n\n window[key] = this.get.bind(this);\n }\n\n /**\n * Get translation for a specific key.\n * @param key\n */\n public get(key: string): string {\n return this.data[key];\n }\n\n public getAll(): LanguageData {\n return this.data;\n }\n\n public setLang(lang: string): void {\n this.language = lang;\n this.webHelpers.setCookie(\"lang\", lang, this.webHelpers.getConfig().cookieLifeDays);\n document.location.reload();\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n}\n","import {AbstractPage} from \"./AbstractPage\";\nimport {JqueryApp} from \"./JqueryApp\";\n\nexport class Landing extends AbstractPage {\n protected contactValidated = false;\n\n constructor(app: JqueryApp) {\n super(app);\n\n this.app.$(() => { // jQuery 3.0 \"document.ready\"\n this.initPage();\n //this.addEventListeners();\n });\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected initPage() {\n this.app.$(\".contact-comment #comment\").removeAttr(\"required\");\n if (window.grecaptcha == undefined)\n return; // disabled\n\n this.app.$(\"#contact-form\").on(\"submit\", (event) => {\n //this.app.$(\"#submit-contact\").on(\"click\", (event) => {\n if (this.contactValidated === true)\n return;\n this.disableContactButtonTimer();\n event.preventDefault();\n grecaptcha.ready(() => {\n grecaptcha.execute(this.app.getConfig().reCaptchaKey, {action: 'submit'}).then((token) => {\n this.app.$(\"#contact-token\").val(token);\n this.contactValidated = true;\n this.app.$(\"#contact-form\").submit();\n });\n });\n });\n }\n\n protected disableContactButtonTimer() {\n const confirmButton = $('#submit-contact');\n confirmButton.attr('disabled', \"true\");\n setTimeout(() => {\n confirmButton.removeAttr('disabled');\n }, 6000);\n }\n}\n","import {AbstractPage} from \"./AbstractPage\";\nimport {JqueryApp} from \"./JqueryApp\";\nimport {format} from \"./utils/misc\";\n\n// required lang keys: dateTimeFormatLocale: YYYY-MM-DD HH:mm:ss // use date.toLocaleString() instead\n// justNow, minAgo, hourAgo\n\n// optional: \"timezone_diff\":-60 // offset to UTC0 in minutes\n\nexport class Timestamps extends AbstractPage {\n protected timezoneDiffMin: number = 0;\n protected updateTimestampsTimer: number | null = null;\n protected unixTimestampAttr: string;\n\n constructor(app: JqueryApp, timezoneDiffMin: number = 0, unixTimestampAttr: string = \"data-time\") {\n super(app);\n this.timezoneDiffMin = timezoneDiffMin;\n this.unixTimestampAttr = unixTimestampAttr;\n }\n\n public updateTimestamps() {\n //const nowLocal = new Date();\n //const timestamp = this.getServerDate(); // use if server time is not GMT0\n const timestamp = Date.now() / 1000;\n const $ = this.app.$;\n const tr = this.app.getTr();\n\n $('.' + this.unixTimestampAttr).each((i, el) => {\n const $el = $(el);\n const added = $el.attr(this.unixTimestampAttr) as unknown as number;\n if (added == 0) // keep server value (might be \"n/a\" or \"unknown\"...)\n return;\n let diff = timestamp - added;\n let displayDate = \"\";\n if (diff > 0) {\n const showFullDate = $el.hasClass(\"date-full\");\n if (diff <= 60*60 && !showFullDate) {\n let minAgo = this.toInt(diff/60);\n if (minAgo < 1)\n displayDate = tr.get(\"justNow\");\n else\n displayDate = format(tr.get(\"minAgo\"), minAgo.toString());\n }\n else if (diff <= 24*60*60 && !showFullDate)\n displayDate = format(tr.get(\"hourAgo\"), this.toInt(diff/(60*60)).toString());\n else {\n // else: update to regular datetime formats using user locale\n displayDate = new Date(added*1000).toLocaleString();\n }\n }\n if (displayDate != \"\")\n $(el).html(displayDate);\n });\n }\n\n public updateTimestampsRepeating() {\n const $ = this.app.$;\n if (this.updateTimestampsTimer !== null) {\n clearTimeout(this.updateTimestampsTimer);\n this.updateTimestampsTimer = null;\n }\n if ($('.' + this.unixTimestampAttr).length === 0)\n return;\n this.updateTimestamps();\n this.updateTimestampsTimer = this.app.getWebHelpers().window.setTimeout(this.updateTimestampsRepeating.bind(this), 60*1000);\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected getServerDate(ms: boolean = false) {\n const date = new Date();\n let msDate = date.getTime() + (date.getTimezoneOffset()-this.timezoneDiffMin)*60000;\n return ms === true ? msDate : msDate/1000;\n }\n\n protected toInt(number: number) {\n if (number < 0)\n return Math.ceil(number);\n return Math.floor(number);\n }\n}\n","import {WebHelpers} from \"./utils/WebHelpers\";\nimport {AppMessage, AppMessageType} from \"./ui/AppMessage\";\nimport * as misc from \"./utils/misc\";\nimport {Merchant} from \"./Merchant\";\n//import {Statistics} from \"./Statistics\"; // use dynamic import because amcharts is too big for non-merchants\nimport {Pay} from \"./Pay\";\nimport {logger} from \"./utils/Log\";\nimport {Localizer} from \"./Localizer\";\nimport {Landing} from \"./Landing\";\nimport {Payment} from \"./structs/Payment\";\nimport {AbstractPage} from \"./AbstractPage\";\nimport {PlotConfig} from \"./Statistics\";\nimport {Timestamps} from \"./Timestamps\";\n\nexport interface AppConfig {\n // PAY page\n pathPay: string;\n pathPayDone: string;\n pathUpdatePayment: string;\n pathPayRefresh: string;\n submitCardToken: string;\n pathCardEvent: string;\n apiBase: string;\n ref: string; // referer\n reCaptchaKey: string;\n numDecimals: number; // 2\n checkStatusIntervalSec: number;\n maxCheckStatusCount: number;\n customerCount: number;\n\n // on Pay (payment) page\n fullPage: boolean; // true = full page payment, false = iframe\n payment: Payment;\n gateway: {\n key: string;\n }\n\n // Account page\n balance: number; // balance in merchant wallet\n\n // Refund page\n exchangeRate?: number;\n\n // Statistics pages\n plot: PlotConfig;\n\n // localizations\n tr: {\n // TODO can be removed in favor of new Localizer.ts\n close: string;\n confirmSignatures: string;\n updating: string;\n }\n\n cookieLifeDays: number;\n cookiePath: string;\n cookieHost: string;\n siteUrl: string;\n}\n\nexport type PageType = \"landing\" | \"merchant\" | \"pay\";\n\nexport class JqueryApp {\n protected static readonly TEXT_FIELDS = [\"wp-address\", \"private-key\", \"token-id\", \"reward-amount\",\n \"wc-api-key\", \"wc-api-secret\"];\n\n public readonly $: JQueryStatic;\n protected readonly config: AppConfig;\n protected readonly webHelpers: WebHelpers;\n protected readonly localizer: Localizer;\n protected readonly landing: Landing;\n protected readonly merchant: Merchant;\n protected statistics: AbstractPage; // Statistics // TODO dynamic import type?\n protected readonly pay: Pay;\n\n protected readonly pageType: PageType;\n\n constructor($: JQueryStatic) {\n this.$ = $;\n this.config = (window as any).vpayCfg || {};\n if (!this.config.cookieHost)\n this.config.cookieHost = window.location.host;\n\n this.webHelpers = new WebHelpers(window as any, this.$, this.config);\n const lang = this.webHelpers.getCookie(\"lng\");\n this.localizer = new Localizer(this.webHelpers, lang, `${document.location.origin}/pub/locales/`);\n this.localizer.loadTranslationsFromObject(\"vpayTr\");\n this.localizer.exportTranslationFunctionToWindow();\n\n AppMessage.setJquery(this.$);\n AppMessage.setLocales(this.config.tr);\n\n // create the class and bind events based on the page we are on\n this.pageType = this.getPageType();\n logger.info(\"%s page loading\", this.pageType);\n switch (this.pageType)\n {\n case \"merchant\":\n this.merchant = new Merchant(this);\n (async () => {\n //const { Merchant } = await import(\"./Merchant\"); // 1KB bundle, not worth splitting\n //this.merchant = new Merchant(this);\n\n if(this.$(\"#chartdiv\").length !== 0) {\n const { Statistics } = await import(\"./Statistics\"); // 466KB\n this.statistics = new Statistics(this);\n }\n })();\n break;\n case \"landing\":\n this.landing = new Landing(this);\n break;\n case \"pay\":\n this.pay = new Pay(this);\n break;\n default:\n misc.assertUnreachableCode(this.pageType);\n }\n this.$(() => {\n this.setupBoostrapFramework();\n const ts = new Timestamps(this, 0, \"data-unix\");\n ts.updateTimestampsRepeating();\n });\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getWebHelpers() {\n return this.webHelpers;\n }\n\n public getTr() {\n return this.localizer;\n }\n\n // ################################################################\n // ###################### PRIVATE FUNCTIONS #######################\n\n protected getPageType(): PageType {\n // must be checked before landing-area\n if (this.$(\"body\").hasClass(\"page-pay\") === true)\n return \"pay\";\n else if (this.$(\"body\").hasClass(\"landing-area\") === true)\n return \"landing\";\n else if (this.$(\"body\").hasClass(\"merchant-area\") === true)\n return \"merchant\";\n throw new Error(\"Unknown page type on body: \" + this.$(\"body\").attr(\"class\"));\n }\n\n protected setupBoostrapFramework() {\n const $ = this.$('[data-toggle=\"tooltip\"]') as any;\n $.tooltip();\n }\n}\n","import {JqueryApp} from \"./src/JqueryApp\";\n\nlet jqApp = new JqueryApp(jQuery);\n// export it so that the API is accessible to other libraries\n// this is optional\n(window as any).verifiedPay = jqApp;\n"],"names":["inProgress","dataWebpackPrefix","exports","formatArgs","args","this","useColors","namespace","module","humanize","diff","c","color","splice","index","lastC","replace","match","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","process","env","DEBUG","window","type","__nwjs","navigator","userAgent","toLowerCase","document","documentElement","style","WebkitAppearance","console","firebug","exception","table","parseInt","RegExp","$1","localStorage","localstorage","destroy","warned","warn","colors","log","debug","formatters","j","v","JSON","stringify","message","createDebug","prevTime","enableOverride","enabled","self","curr","Number","Date","ms","prev","coerce","unshift","format","formatter","val","call","apply","selectColor","extend","Object","defineProperty","enumerable","configurable","get","set","init","delimiter","newDebug","toNamespace","regexp","toString","substring","length","default","Error","stack","disable","names","map","skips","join","enable","i","split","len","push","substr","name","test","keys","forEach","key","hash","charCodeAt","Math","abs","s","m","h","d","plural","msAbs","n","isPlural","round","options","str","String","exec","parseFloat","parse","isFinite","long","fmtShort","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","e","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","run","marker","runClearTimeout","Item","array","noop","nextTick","Array","arguments","prototype","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","app","webHelpers","getWebHelpers","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","o","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","hasOwnProperty","l","url","done","script","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","event","onerror","onload","doneFns","parentNode","removeChild","fn","bind","target","head","appendChild","Symbol","toStringTag","value","scriptUrl","importScripts","location","currentScript","p","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","id","chunkLoadingGlobal","$","config","cssSelectors","setConfig","getConfig","getBrowserLang","language","getCookie","c_name","x","y","ARRcookies","cookie","indexOf","decodeURI","setCookie","expireDays","date","getTime","cookieLifeDays","toUTCString","cookiePath","cookieHost","removeCookie","fromBase64","atob","toBase64","btoa","translate","text","variables","safeHtml","start","end","charAt","placeHolder","translation","tr","textPiece","escapeOutput","reg","convertNewlines","escapeRegex","isAppleIOS","MSStream","getAllCssSelectors","cached","originRegex","origin","styleSheets","sheet","href","rules","selectorText","imports","err","isExistingCssSelector","selector","selectors","addParamToUrl","urlStr","overwrite","search","queryParam","getApi","path","callback","dataType","fixRelativeUrl","textStatus","jqXHR","postApi","post","postJson","that","ajax","contentType","accepts","json","method","success","errorThrown","preloadImages","urls","image","alt","fullUrl","siteUrl","canDismiss","AppMessage","counter","display","append","toHtml","animate","scrollTop","locales","close","setJquery","setLocales","string","NS_BASE","logger","trace","verbose","info","initPage","addEventListeners","togglePayoutMethodInputs","onRefundAmountChange","confirm","getTr","preventDefault","attr","amount","gatewayAmount","exchangeRate","toFixed","fadeOut","fadeIn","AbstractPage","action","time","CardEvent","autoSend","send","setWebHelpers","setAutoSend","setMessage","apiBase","pathCardEvent","tx_id","payment","token","merchantId","validated","expiryMonth","expiryYear","expiryField","changedMonth","changedYear","removeAttr","styleCards","form","width","height","cardNumber","cardNumberField","cvvNumberField","CVV","mastercard","visa","amex","payform","removeClass","validateCardNumber","addClass","showCardError","removeCardError","parseCardType","validateCardCVC","validateExpiration","isCardValid","isCvvValid","isValidExpiry","clearCardError","disablePayButtonTimer","trigger","validateCardExpiry","confirmButton","errLabel","html","t","getOwnPropertySymbols","a","filter","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","iterator","constructor","TypeError","writable","propertyIsEnumerable","slice","from","cookieTestUrl","publishableKey","publicKey","applePayVersion","applePayValidateSessionPath","applePayChargePath","C","checkoutUrl","paymentBaseUrl","paystackApiUrl","pusherKey","pusherUrl","encodeURIComponent","attributes","nodeName","b","k","borderRadius","padding","locale","w","M","headers","accept","referrerPolicy","mode","credentials","P","isArray","V","biannually","annually","toUpperCase","L","protocol","ApplePaySession","supportsVersion","S","includes","E","T","querySelector","_","q","channels","styles","applePay","addEventListener","remove","then","webpackJsonp","theme","styleSheet","cssText","createTextNode","catch","classList","add","I","z","H","required","types","or","override","metadata","referrer","card","bank","to","values","U","N","platform","userAgentData","R","D","initializeLog","attempts","authentication","errors","history","start_time","now","time_spent","mobile","input","getTimeSpent","logAPIResponse","status","logApiSuccess","logApiError","logValidationResponse","saveLog","logAttempt","response","Authorization","fetch","body","payload","B","merchant_key","saveIpAddress","Z","F","requestInline","accessCode","URL","urlParameters","transaction_status","access_code","assign","W","issues","find","validTypes","parameters","authorizationUrl","isActive","onError","onLoad","onSuccess","onCancel","onClose","onBankTransferConfirmationPending","callbacks","deprecatedCallbacks","logError","customer","cancel","J","K","Q","G","Y","X","sort","checkoutIframe","contentWindow","postMessage","params","ne","oe","re","ie","ce","floor","random","transactions","isOpen","isLoaded","isDeprecatedApi","isEmbed","isPaymentRequest","container","paymentRequestContainer","paymentRequestTransaction","preCheckoutModal","backgroundIframe","open","write","registerListeners","source","respondToEvent","respondToEmbedEvents","newTransaction","activeTransaction","preloadTransaction","inlineTransaction","zIndex","querySelectorAll","getComputedStyle","isNaN","pop","merchant_logo","merchant_name","email","currency","innerHTML","innerText","textContent","O","registerPreCheckoutModalEventListeners","registerPaymentRequestEventListeners","closePreCheckoutModal","animateCheckoutIn","onSetupError","isSameNode","onclick","sendAnalyticsEventToCheckout","closePreCheckoutModalAndCancelTransaction","cancelTransaction","preload","onElementsMount","loadPaystackCheckoutButton","finally","startApplePay","registerApplePayEventListener","firstChild","A","channel","paymentMethod","timeSpent","merchantName","interval","plan_details","countryCode","currencyCode","merchantCapabilities","supportedNetworks","requiredBillingContactFields","total","label","trim","lineItems","onvalidatemerchant","transactionId","validationURL","domainName","hostname","transaction","sessionUrl","displayName","completeMerchantValidation","oncancel","onpaymentauthorized","paymentObject","completePayment","STATUS_SUCCESS","STATUS_FAILURE","begin","getElementById","setStatus","visibility","opacity","removeAttribute","className","position","openIframe","parentElement","tagName","se","le","buttonId","buttonText","buttonVariant","buttonWordmarkVariant","pe","inlineId","normal","light","variant","wordmarkVariant","parent","insertBefore","nextSibling","next","return","resumeTransaction","reference","submit","sendSizeFrameMessage","ps","checkPaymentStatusTimer","paymentCheckStatusCount","connectForm","paymentForm","sendPayment","GatewaySa","FRAME_SIZE","gateway","tx","amountGateway","ref","descGateway","checkPaymentStatus","removeGrayOverlay","pingPayment","scheduleCheckPayment","alert","fullToken","pathUpdatePayment","maxCheckStatusCount","pathPayRefresh","pathPayDone","fail","checkStatusIntervalSec","each","el","$el","popup","detach","css","AbstractGateway","store","Store","SERIALIZE_PREFIX","unserialize","serialize","clear","getLength","keyName","loadStripe","stripe","elements","base","fontFamily","fontSmoothing","fontSize","lineHeight","invalid","iconColor","create","cardExpiry","cardCvc","nrEl","minWidth","styleInput","expiryEl","cvvEl","mount","createToken","sendPaymentToken","submitCardToken","errorUser","reload","border","paddingLeft","gatewayUs","gatewaySa","cards","customerCountUpdateTimerID","GatewayUs","CreditCard","Pace","connectReturnToMerchantButton","listenPaymentReceivedFrame","sendPaidFrameMessage","startCustomerCountUpdateTimer","hightlightDescriptor","descriptor","startTxt","endTxt","startPos","preStart","prestartTxt","searchText","caseInsensitive","toLocaleLowerCase","endPos","getBetween","paidKey","btn","disableReturnToMerchantButtonTimer","reloadKey","click","onMessage","func","attachEvent","customerCount","setInterval","updateCustomerCount","currentCount","clearInterval","step","nextCount","baseUrl","Localizer","DEFAULT_LANG","loadTranslations","langUrl","res","loadTranslationsFromObject","exportTranslationFunctionToWindow","getAll","setLang","lang","contactValidated","grecaptcha","disableContactButtonTimer","ready","execute","reCaptchaKey","timezoneDiffMin","unixTimestampAttr","updateTimestampsTimer","updateTimestamps","timestamp","added","displayDate","showFullDate","hasClass","minAgo","toInt","toLocaleString","updateTimestampsRepeating","getServerDate","msDate","getTimezoneOffset","number","ceil","vpayCfg","host","WebHelpers","localizer","pageType","getPageType","merchant","Merchant","Statistics","statistics","landing","Landing","pay","Pay","setupBoostrapFramework","Timestamps","tooltip","TEXT_FIELDS","jqApp","JqueryApp","jQuery","verifiedPay"],"sourceRoot":""}