@salla.sa/base 2.12.50-alpha.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@salla.sa/base.min.js +1 -1
- package/dist/@salla.sa/base.min.js.map +1 -1
- package/dist/index.js/index.js +2 -0
- package/dist/index.js/index.js.map +1 -0
- package/dist/index.mjs/index.js +2 -0
- package/dist/index.mjs/index.js.map +1 -0
- package/package.json +31 -9
- package/types/config.d.ts +57 -50
- package/types/event.d.ts +8 -8
- package/types/global.d.ts +6 -5
- package/types/helpers.d.ts +53 -47
- package/types/index.d.ts +19 -14
- package/types/storage.d.ts +8 -4
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/index.js.map +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +0 -1
- package/types/cookie.d.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.min.js","sources":["../../src/helpers/numbers.ts","../../src/helpers/string.ts","../../node_modules/lodash/isArray.js","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/isSymbol.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/_isKey.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/isFunction.js","../../node_modules/lodash/_isMasked.js","../../node_modules/lodash/_coreJsData.js","../../node_modules/lodash/_baseIsNative.js","../../node_modules/lodash/_toSource.js","../../node_modules/lodash/_getNative.js","../../node_modules/lodash/_getValue.js","../../node_modules/lodash/_nativeCreate.js","../../node_modules/lodash/_hashClear.js","../../node_modules/lodash/_hashDelete.js","../../node_modules/lodash/_hashGet.js","../../node_modules/lodash/_Hash.js","../../node_modules/lodash/_hashHas.js","../../node_modules/lodash/_hashSet.js","../../node_modules/lodash/_listCacheClear.js","../../node_modules/lodash/eq.js","../../node_modules/lodash/_assocIndexOf.js","../../node_modules/lodash/_ListCache.js","../../node_modules/lodash/_listCacheDelete.js","../../node_modules/lodash/_listCacheGet.js","../../node_modules/lodash/_listCacheHas.js","../../node_modules/lodash/_listCacheSet.js","../../node_modules/lodash/_Map.js","../../node_modules/lodash/_mapCacheClear.js","../../node_modules/lodash/_isKeyable.js","../../node_modules/lodash/_getMapData.js","../../node_modules/lodash/_MapCache.js","../../node_modules/lodash/_mapCacheDelete.js","../../node_modules/lodash/_mapCacheGet.js","../../node_modules/lodash/_mapCacheHas.js","../../node_modules/lodash/_mapCacheSet.js","../../node_modules/lodash/memoize.js","../../node_modules/lodash/_stringToPath.js","../../node_modules/lodash/_memoizeCapped.js","../../node_modules/lodash/_baseToString.js","../../node_modules/lodash/_arrayMap.js","../../node_modules/lodash/_castPath.js","../../node_modules/lodash/toString.js","../../node_modules/lodash/_baseGet.js","../../node_modules/lodash/_toKey.js","../../node_modules/lodash/get.js","../../src/helpers/url.ts","../../src/helpers/index.ts","../../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.1_rollup@2.79.1_tslib@2.6.1_typescript@4.9.5/node_modules/tslib/tslib.es6.js","../../src/logger.ts","../../src/config.ts","../../node_modules/eventemitter2/lib/eventemitter2.js","../../src/event.ts","../../node_modules/store/src/util.js","../../node_modules/store/src/store-engine.js","../../node_modules/store/storages/localStorage.js","../../node_modules/store/storages/sessionStorage.js","../../node_modules/store/storages/cookieStorage.js","../../node_modules/store/storages/memoryStorage.js","../../src/storage.ts","../../src/cookie.ts","../../src/index.ts"],"sourcesContent":["/**\n * @param num\n * @param {boolean} isToEnglish\n * @return {string}\n */\nexport function number(num, isToEnglish = false) {\n num = num + \"\";//make sure that number will be converted to string;\n isToEnglish = isToEnglish || !Salla.config.get('store.settings.arabic_numbers_enabled');\n let ar = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'];\n let en = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n let find = isToEnglish ? ar : en;\n let replace = isToEnglish ? en : ar;\n let regex;\n for (let i = 0; i < find.length; i++) {\n regex = new RegExp(find[i], \"g\");\n num = num.replace(regex, replace[i]);\n }\n //todo:: replace dots between two digits only, to avoid replacing the period\n return num.replace(isToEnglish ? '٫' : '.', isToEnglish ? '.' : '٫');\n}\n\n/**\n * when need to get digit's only from string \"Jamal12Hi\" => 12, or \"١٢٣\" => 123\n * @param {string} num\n * @return {string}\n */\nexport function digitsOnly(num) {\n return number(num, true).replace(/[^0-9.]/g, '')\n .replace('..', '.')\n .rtrim('.'); // without this: `Salla.helpers.digitsOnly('١٬٦٠٠ ر.س')` => `1600.`\n}\n\n/**\n * @param {HTMLInputElement|string} input - selector or input object\n * @param {boolean} is_decimal\n * @return {string|*|void}\n */\nexport function inputDigitsOnly(input, is_decimal = false) {\n if (typeof input == 'string') {\n return document.querySelectorAll(input).forEach(el => inputDigitsOnly(el, is_decimal));\n }\n if (!input) {\n Salla.logger.warn('Can\\'t find Object With Id: ' + input);\n return;\n }\n let new_val = Salla.helpers.digitsOnly(input.value);\n\n if (input.min && new_val < parseInt(input.min)) {\n return input.value = input.min;\n }\n if (input.max && new_val > parseInt(input.max)) {\n return input.value = input.max;\n }\n if (input.maxLength >= 1 && new_val.toString().length > input.maxLength) {\n return input.value = new_val.toString().substring(0, input.maxLength);\n }\n\n return input.value = (is_decimal || input.dataset.hasOwnProperty('digitsWithDecimal'))\n ? getOnlyDecimal(new_val)\n : new_val.replace(/\\D/g, '');\n}\n\nexport function getOnlyDecimal(value) {\n let dotsCount = (`${value}`.match(/\\./g) || []).length;\n if (!dotsCount || dotsCount === 1) {\n return value;\n }\n\n // if there is more than one dotes, remove the last dot.\n // Ex: 123.545.66 => 123.54566\n return getOnlyDecimal(value.replace(/\\.(.+)\\./g, '.$1'));\n}\n\n/**\n * @param {string|number|{amount: number,currency: string}} money\n * @return string\n */\nexport function money(money) {\n let currency = Salla.config.currency(money?.currency).symbol;\n money = typeof money === 'object' ? money.amount : money;\n return number(money) + ' ' + currency;\n}","String.prototype.toStudlyCase = function () {\n return this.trim() //remove first spaces\n .replace(/([^a-zA-Z\\d].)/g, function (t) {//get\n return t.toUpperCase()\n .replace(/[^a-zA-Z\\d]/g, '');\n });\n};\n\nString.prototype.toDatasetName = function () {\n return this.startsWith('data-')\n ? this.substr(5).toStudlyCase()\n : this.toStudlyCase();\n};\n\n// TODO: Check the importance of this method. Or add mode detail information.\n// helper method to get string as selector, by adding (#) to the beginning if it's not start with one.\nString.prototype.toSelector = function () {\n // todo:: add html tags if it's needed.\n return this.trim().startsWith(\".\") || this.trim().startsWith(\"#\")\n ? this.toString()\n : \"#\" + this.toString();\n};\n\nString.prototype.replaceArray = function (find:string, replace:string) {\n var replaceString = this;\n var regex:RegExp;\n for (var i = 0; i < find.length; i++) {\n regex = new RegExp(find[i], \"g\");\n replaceString = replaceString.replace(regex, replace[i]);\n }\n return replaceString;\n};\n\nString.prototype.rtrim = function (s?:string) {\n if (s === undefined)\n s = '\\\\s';\n return this.replace(new RegExp(\"[\" + s + \"]*$\"), '');\n};\n\nString.prototype.ltrim = function (s?:string) {\n if (s === undefined)\n s = '\\\\s';\n return this.replace(new RegExp(\"^[\" + s + \"]*\"), '');\n};\n\nString.prototype.digitsOnly = function () {\n return Salla.helpers.digitsOnly(this);\n};","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","export function is_full_url(url) {\n return `${url}`.startsWith('https://') || `${url}`.startsWith('http://');\n}\n\n/**\n * @param {string } url\n * @return string\n */\nexport function base(url) {\n if (is_full_url(url)) {\n return url;\n }\n\n const { hostname } = new URL(get('/'));\n\n return 'https://' + hostname + \"/\" + url?.ltrim(\"/\");\n}\n\n/**\n * @param {string } url\n * @return string\n */\nexport function get(url) {\n if (is_full_url(url)) {\n return url;\n }\n\n let storeUrl = Salla.config.get(\"store.url\");\n\n if(!storeUrl){\n storeUrl = window.location.href.split(\"/\").slice(0, -1).join(\"/\");\n Salla.config.set('store.url', storeUrl)\n }\n\n return storeUrl.rtrim(\"/\") + \"/\" + url?.ltrim(\"/\");\n}\n\nexport function domain(url) {\n if (is_full_url(url)) {\n return url;\n }\n\n return `${Salla.config.get(\"store.url\", window.location.href.split(\"/\").slice(0, -1).join(\"/\")).rtrim(\"/\")}/${url?.ltrim(\"/\")}`\n}\n\nexport function addParamToUrl(key, value, url) {\n url = url || window.location.href;\n if (!value || !key) {\n return url;\n }\n let regex = new RegExp(\"([?&])\" + key + \"=[^&]+[&]?\", \"g\");\n url = url\n .replace(regex, \"$1\") //remove old one\n .split('#')[0]//remove any hash values ex 'https://my_site.test/brands#brand-section-1'\n .replace(/&$|\\?$/, \"\");// remove the `?` or `&` if it's the last char\n if (url.includes(\"?\")) {\n url += \"&\";\n } else {\n //avoid cases like this: 'https://my_store.test/ar?test=hi'\n url += (url.endsWith('/') ? \"\" : \"/\") + \"?\";\n }\n\n return (url + key + \"=\" + encodeURIComponent(value)).replace(/&$|\\?$/, \"\");\n}\n\n//this will get it without username if it's salla domain ex: Salla.sa/test will ignore test\nexport function baseUrl(path) {\n return window.location.origin + \"/\" + path?.ltrim(\"/\");\n}\n\nexport function asset(path) {\n if (is_full_url(path)) {\n return path;\n }\n if (Salla.config.get('theme.assets')) {\n return Salla.config.get('theme.assets').replace(':path',path?.ltrim(\"/\"));\n }\n\n return baseUrl(\"themes/\" + Salla.config.get(\"theme.name\") + \"/\" + path?.ltrim(\"/\"));\n}\n\nexport function cdn(path) {\n return \"https://cdn.salla.network/\" + path?.ltrim(\"/\");\n}\n\n/**\n * Return url for api\n * @example Salla.url.api('test') => https://my_store.test/api/v1/test\n * @param path\n * @return {string}\n */\nexport function api(path) {\n return Salla.config.get(\"store.api\", get(\"\"))?.rtrim(\"/\") + \"/\" + path?.ltrim(\"/\");\n}\n\nexport function is_page(pageName) {\n return pageName && Salla.config.get(\"page.slug\") === pageName;\n}\n\nexport function is_placeholder(url) {\n return asset(salla.config.get('theme.settings.placeholder')) === asset(url);\n}","import { digitsOnly, inputDigitsOnly, money, number } from \"./numbers\";\nimport './string';\nimport {get} from \"lodash\";\nimport * as url from \"./url\";\n\n/**\n * To use it, you need some moves:\n * 1- First : you should have global variable:`let my_debounce;`\n * 2- Next : make your own function: `function my_debounce_fn(callback,...data){...}`\n * 3- Next : in your method, check if it's not existed yet, use this helper method to create it: `if(!my_debounce){my_debounce=Salla.helpers.debounce((fn, ...inner_data) => fn(...inner_data), 500)}`\n * 4- Next : then delay the passed callback: `my_debounce(callback, ...data);`\n * 5- Finally : use it: `my_debounce(() =>{...yourRepeatableLogic})`\n * will be something like:\n *\n * ```\n * let my_debounce;\n * function my_debounce_fn(callback,...data){\n * if(!my_debounce){\n * //inline method\n * my_debounce=Salla.helpers.debounce((fn, ...inner_data) => fn(...inner_data), 500);\n * }\n * return my_debounce(callback, ...data);\n * }\n * // use it like:\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 1');\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 2');\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 3');\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 4');\n * //output=> `hello there - 4`\n * ```\n * 😎Or just use Salla appHelpers:`app.debounce((my_data)=>Salla.log(my_data), 'hello there - *')`\n *\n * @param fn\n * @param delay\n * @return {function(...[*]): Promise<unknown>}\n */\nfunction debounce(fn, delay) {\n delay = delay || 100;\n let resolves = [];\n let timer;\n return function (...args) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n let result = fn(...args);\n resolves.forEach((r) => r(result));\n resolves = [];\n }, delay);\n //@ts-ignore\n return new Promise((r) => resolves.push(r));\n };\n}\n\n/**\n * Use It When You want to grab data from input names with brackets Ex.\n * <input name=\"products[0][id]\" value...>\n * <input name=\"products[0][name]\" value...>\n * <input name=\"products[1][id]\" value...>\n * <input name=\"products[1][name]\" value...>\n * will be like: {products:[{id:.., name:..},{id:.., name:..}]}\n * @param name\n * @param value\n * @param dataset\n * @return {{name, value}|{name, value: (*|[*, *]|[string, *]|{}|[*])}}\n */\nfunction getInputDataWithName(name, value, dataset = {}) {\n if (name.includes(\"[\")) {\n let nameLevels = name.split(\"]\").join(\"\").split(\"[\");\n return { name: nameLevels[0], value: getLeveledData(nameLevels.slice(1), value, dataset[nameLevels[0]]) };\n }\n return { name: name, value: value };\n}\n\n/**\n * in case input name is array for example \"jamal[4655]\" let's fix it\n * This Helper method to get suitable array data, Ex.\n * jamal[]=1\n * jamal[]=2\n * final result will be: {jamal:[1,2]}\n *\n * @param {String[]} nameLevels\n * @param {string|mixed} value\n * @param {{}|undefined} existedData\n * @return {*[]|*|(string|*)[]|{}}\n */\nfunction getLeveledData(nameLevels, value, existedData) {\n // TODO: typo, rename it to `getLabeledData`\n let currentName = nameLevels[0];\n\n //it's an array, so add value ass array\n if (existedData && nameLevels.length == 0) {\n if (Array.isArray(existedData)) {\n existedData.push(value);\n return existedData;\n }\n\n //todo::handle in case it's object\n return [existedData, value];\n }\n\n if (Array.isArray(existedData)) {\n existedData.push(value);\n return existedData;\n }\n\n if (typeof existedData === \"string\") {\n return [existedData, value];\n }\n\n //it's nested data\n if (existedData) {\n existedData[currentName] = getLeveledData(nameLevels.slice(1), value, existedData[currentName]);\n return existedData;\n }\n\n if (currentName) {\n //@ts-ignore\n return { [currentName]: getLeveledData(nameLevels.slice(1), value) };\n }\n\n //handling \"[]\" without name\n return currentName === \"\" ? [value] : value;\n}\n\n/*\nwindow.onbeforeunload = function (event) {\n Salla.document.event.leaving(event);\n if (!Salla.config.get(\"canLeave\")) {\n event.preventDefault();\n return false;\n }\n};\n*/\nexport function setNested(object, key, value) {\n let schema = object;\n let keys = key.split(\".\");\n let len = keys.length;\n for (let i = 0; i < len - 1; i++) {\n let elem = keys[i];\n if (!schema[elem]) schema[elem] = {};\n schema = schema[elem];\n }\n\n schema[keys[len - 1]] = value;\n return object;\n}\n\nexport function getNested(object, key, default_) {\n let data = get(object, key);\n return data !== undefined ? data : default_;\n}\n\n/**\n * @type {{debounce: (function(*, *=): function(...[*]): Promise<unknown>), inputData: ((function(*=, *=, *): ({name, value}|{name, value: (*|*[]|(string|*)[]|{})}))|*), digitsOnly: ((function(*=, *=): (undefined|*))|*)}}\n */\nexport default {\n // Numbers helpers\n digitsOnly: digitsOnly,\n inputDigitsOnly: inputDigitsOnly,\n number: number,\n money: money,\n\n // Nested objects helpers\n setNested: setNested,\n getNested: getNested,\n inputData: getInputDataWithName,\n\n // Url helpers\n url : url,\n addParamToUrl: url.addParamToUrl,\n\n // other\n debounce: debounce,\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","\"use strict\";\n/**\n * A logger to help us to use Salla.logger.log like console.log\n *\n * @namespace Salla.logger\n *\n * @credits @Ammar Hasan\n * @see https://stackoverflow.com/a/21856736\n *\n */\nexport default (function (c) {\n \"use strict\";\n let history=[];\n \n let proxy = {\n log: function (a, type) {\n if (!c) {\n return; /* return or call your custom function here */\n }\n\n //@ts-ignore\n if (!salla.config.isDebug()) {\n return;\n }\n\n history.push([type,a]);\n\n // let's force trace for all logs when the debug is trace level\n //@ts-ignore\n if (salla.config.get('debug') === 'trace') {\n type = 'trace';\n }\n let colorableTypes = {\n event: '#CFF680',\n backend: '#7b68ee'\n };\n\n let l = c.log,\n f = type === undefined ? l : (this.__dict__[type] || l);\n\n let style = ['%cTwilight', 'color: #5cd5c4;font-weight:bold; border:1px solid #5cd5c4; padding: 2px 6px; border-radius: 5px;'];\n let color = colorableTypes[type];\n if (color) {\n style[0] += '%c' + type[0].toUpperCase() + type.substring(1);\n style.push(`margin-left: 5px;color: ${color};font-weight:bold; border:1px solid ${color}; padding: 2px 6px; border-radius: 5px;`)\n }\n\n f.call(c, ...style.concat(...a))\n },\n __dict__: {\n \"trace\": c.trace,\n \"debug\": c.debug,\n \"info\": c.info,\n \"warn\": c.warn,\n \"error\": c.error\n }\n };\n\n return {\n event: function () {\n proxy.log(arguments, \"event\");\n },\n trace: function () {\n proxy.log(arguments, \"trace\");\n },\n debug: function () {\n proxy.log(arguments, \"debug\");\n },\n info: function () {\n proxy.log(arguments, \"info\");\n },\n warn: function () {\n proxy.log(arguments, \"warn\");\n },\n error: function () {\n proxy.log(arguments, \"error\");\n },\n log: function () {\n proxy.log(arguments, undefined);\n },\n //use this to pass messages from backEnd, no need to add documentations, because it will no passed in production\n backend: function () {\n proxy.log(arguments, \"backend\");\n },\n //this for internal usage to pass multi logs using one function, no need to add it to documentation @see \\Salla\\Core\\Traits\\WithStageLogger::debug\n logs: function (logs) {\n //@ts-ignore\n [logs].flat().forEach(logData => logData && proxy.log([logData].flat(), 'backend'));\n },\n history:function(){\n history.map(payload=>c.log(payload[0],...payload[1]));\n return history;\n }\n };\n}(console))\n","/**\n * @namespace Salla.config\n *\n * @property {any} properties_\n */\nexport default class Config {\n\n default_properties: object|any;\n properties_: object|any;\n\n constructor(properties = {}, default_properties = {}) {\n this.default_properties = default_properties;\n this.properties_ = { ...this.default_properties, ...properties };\n }\n\n merge(config:object) {\n this.properties_ = {...this.properties_, ...config};\n\n this.properties_.store = { ...this.default_properties?.store||{}, ...this.properties_.store };\t\n return this;\n }\n\n set(key:string, value:any) {\n if (key.includes(\".\")) {\n Salla.helpers.setNested(this.properties_, key, value);\n return this;\n }\n this.properties_[key] = value;\n return this;\n }\n\n /**\n * @param {string|undefined} isoCode\n * @return {Currency}\n */\n currency(isoCode:string|undefined = undefined){\n isoCode = isoCode || this.get('user.currency_code');\n return this.get('currencies.' + isoCode) || Object.values(this.get('currencies'))[0];\n }\n\n\n /**\n * @param {string} key\n * @param {null|any} default_\n * @return {any}\n */\n get(key:string, default_ = null) {\n if (key.includes(\".\")) {\n return Salla.helpers.getNested(this.properties_, key, default_);\n }\n return this.properties_.hasOwnProperty(key) ? this.properties_[key] || default_ : default_ || undefined;\n }\n\n all() {\n return this.properties_;\n }\n\n isDebug() {\n return this.get('debug') || Salla.storage.get('debug');\n }\n}\n","/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? values.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","import {EventEmitter2, OnOptions} from \"eventemitter2\";\n\n/**\n * @namespace Salla.event\n *\n * @property {string} delimiter\n * @property {array} loggableEvents - log errors or important events.\n */\nexport default class Emitter extends EventEmitter2 {\n delimiter: string;\n body?: HTMLBodyElement;\n logableEvents: string[];\n ingoreLogEvents: string[];\n noneFireableActions: string[];\n constructor() {\n let delimiter = \"::\";\n super({\n wildcard: true,\n delimiter: delimiter,\n newListener: false,\n removeListener: false,\n maxListeners: 10,\n verboseMemoryLeak: false,\n ignoreErrors: false,\n });\n this.delimiter = delimiter;\n\n //todo:: why we need this?\n if (typeof document !== \"undefined\") {\n this.body = document.querySelector(\"body\");\n }\n\n this.logableEvents = [\"cart::item.added.failed\", \"cart::item.deleted.failed\"];\n\n this.ingoreLogEvents = [\n \"document::click\",\n \"document::keyup\",\n \"document::change\",\n //'document::submit',\n ];\n\n this.noneFireableActions = [\"document.request\"];\n }\n\n /**\n * @param {string} event_name\n * @param data\n *\n * @deprecated , legacy code, use dispatch() instead\n */\n createAndDispatch(event_name, ...data) {\n this.dispatch(event_name, ...data);\n }\n\n //@ts-ignore\n emit(event_name, ...data) {\n /**\n * if the event, is api/event method, call it,\n * ex: cart::quick.add call Salla.api.cart.quickAdd(...data)\n * we don't used Salla.call(actionName)(...data), to avoid losing this scope in our apis.\n *\n * @deprecated don't use it anymore\n */\n let actionName = event_name.replace(\"::\", \".\");\n if (!this.noneFireableActions.includes(actionName) && Salla.call && typeof Salla.call(actionName) === \"function\") {\n Salla.log(`'Salla.${actionName}(...)' triggered using event '${event_name}'`);\n actionName = actionName.split(\".\"); //['cart','addItem']\n //when we are passing event from back end using `twilight()->addEvent('eventName', param1, param2, param3)`, here we will pass them back as variables\n if (Array.isArray(data[0])) {\n data = data[0];\n }\n salla[actionName[0]][actionName[1]](...data);\n return;\n }\n\n\n super.emit(event_name, ...data);\n this.trackEvents(event_name, ...data);\n }\n\n emitAsync(event_name, ...data) {\n //to make sure that data object will not be affected by track process\n let result = super.emitAsync(event_name, ...data);\n try {\n this.trackEvents(event_name, ...data);\n } catch (e) {\n Salla.logger.warn(`error on tracking event (${event_name})`, data, e);\n }\n return result;\n }\n\n trackEvents(event_name, ...data){\n // let's send the event to data layer\n if (typeof window !== \"undefined\") {\n try {\n window.dataLayer = window.dataLayer || [];\n /**\n * data is coming as an array like this:\n * [{\"services\": {\"intercom\": {\"app_id\": \"***\"}}}]\n * we will merge it into one object like this:\n * {event: event_name, \"services\": {\"intercom\": {\"app_id\": \"***\"}}}\n */\n let dataLayerObject = {event: event_name};\n data.map(item => typeof item === 'object' && (dataLayerObject = {...dataLayerObject, ...item}));\n window.dataLayer.push(dataLayerObject);\n }catch(e){\n salla.logger.error(e.message);\n }\n }\n\n //if there is need to log errors, or events, lets do it here.\n if (Salla.logger && !this.ingoreLogEvents.includes(event_name)) {\n Salla.logger.event(event_name, ...data);\n }\n this.dispatchMobileEvent(event_name, ...data);\n }\n /**\n * Fire Event with data\n *\n * @param {string} event_name - action name like `cart::addItem` or event name like `cart::item.added`\n * @param {any|undefined} data\n * @data {{payload}} data\n */\n dispatch(event_name, ...data) {\n return this.emit(event_name, ...data);\n }\n\n /**\n * Fire multi events using object of events\n *\n * @param {Object.<string, *>} events\n */\n dispatchEvents(events) {\n if (!events) {\n Salla.log(\"No Events To Dispatch!\", events);\n return;\n }\n\n if(typeof events !== \"object\" || Array.isArray(events)){\n Salla.log(\"Events object is wrong, it should be object of {event:payload}\", events);\n return;\n }\n\n for (const [event_name, payload] of Object.entries(events)) {\n this.dispatch(event_name, payload);\n }\n }\n\n /**\n * Alias for on function\n *\n * @param {string} eventName\n * @param {function} callback\n * @param options\n * @deprecated use on\n */\n addListener(eventName, callback, options?: boolean | OnOptions) {\n return this.on(eventName, callback, options);\n }\n\n /**\n * Alias for on function\n *\n * @param {string} eventName\n * @param {function} callback\n * @param {OnOptions} options\n * @deprecated use on\n */\n addEventListener(eventName, callback, options?: boolean | OnOptions) {\n return this.on(eventName, callback, options);\n }\n\n /**\n * Alias for this.addListener\n * @param {string} eventName\n * @param {function} callback\n */\n listen(eventName, callback) {\n return this.on(eventName, callback);\n }\n\n /**\n * Register Global listener will allow you to track all events in salla,\n * all Salla events will push to it.\n *\n * @param {string} name\n * @param {function} callback\n * @deprecated use onAny, it maybe used in the apps\n */\n registerGlobalListener(name, callback) {\n return this.onAny(callback);\n }\n\n /**\n * This help to push an event to mobile app.\n *\n * @param eventName\n * @param details\n * @returns {string}\n */\n dispatchMobileEvent(eventName, details = {}) {\n if (\n typeof window === \"undefined\" ||\n !window.dataLayer ||\n !window.dataLayer[0] ||\n !window.dataLayer[0].page ||\n !window.dataLayer[0].page.mobileApp\n ) {\n return \"\";\n }\n\n if (window.webkit) {\n try {\n window.webkit.messageHandlers.callbackHandler.postMessage(\n JSON.stringify({\n event: eventName,\n details: details,\n })\n );\n } catch (err) {\n Salla.log(err, \"The native context does not exist yet\");\n }\n return;\n }\n if (typeof window.Android !=='undefined') {\n try {\n window.Android.customEventWithData(eventName, JSON.stringify({ details: details }));\n } catch (err) {\n Salla.log(err, \"The native context does not exist yet\");\n }\n }\n }\n}\n","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i<obj.length; i++) {\n\t\t\tif (fn(obj[i], i)) {\n\t\t\t\treturn obj[i]\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (var key in obj) {\n\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\tif (fn(obj[key], key)) {\n\t\t\t\t\treturn obj[key]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction isList(val) {\n\treturn (val != null && typeof val != 'function' && typeof val.length == 'number')\n}\n\nfunction isFunction(val) {\n\treturn val && {}.toString.call(val) === '[object Function]'\n}\n\nfunction isObject(val) {\n\treturn val && {}.toString.call(val) === '[object Object]'\n}\n","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n","// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\n\nvar util = require('../src/util')\nvar Global = util.Global\nvar trim = util.trim\n\nmodule.exports = {\n\tname: 'cookieStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar doc = Global.document\n\nfunction read(key) {\n\tif (!key || !_has(key)) { return null }\n\tvar regexpStr = \"(?:^|.*;\\\\s*)\" +\n\t\tescape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\n\t\t\"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\"\n\treturn unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"))\n}\n\nfunction each(callback) {\n\tvar cookies = doc.cookie.split(/; ?/g)\n\tfor (var i = cookies.length - 1; i >= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n","import * as createStore from \"store/src/store-engine\"\nimport * as localStorage from \"store/storages/localStorage\"\nimport * as sessionStorage from \"store/storages/sessionStorage\"\nimport * as cookieStorage from \"store/storages/cookieStorage\"\nimport * as memoryStorage from \"store/storages/memoryStorage\"\n\nconst localStore = createStore.createStore([\n localStorage,\n sessionStorage,\n cookieStorage,\n memoryStorage,\n], [])\n\n\nexport default class Storage {\n store: StoreJsAPI;\n constructor() {\n Salla.event.on(\"storage::item.remove\", (key) => this.remove(key));\n Salla.event.on(\"storage::item.set\", (key, value) => this.set(key, value));\n this.store = localStore;\n }\n\n set(key, value) {\n if (key.includes(\".\")) {\n let firstKey = key.split(\".\")[0];\n let parentObject = {[firstKey]: this.store.get(firstKey)};\n parentObject = Salla.helpers.setNested(parentObject, key, value);\n return this.store.set(firstKey, parentObject[firstKey]);\n }\n return this.store.set(key, value);\n }\n\n remove(key) {\n return this.store.remove(key);\n }\n\n clearAll() {\n return this.store.clearAll();\n }\n\n get(key, value) {\n if (key.includes(\".\")) {\n let firstKey = key.split(\".\")[0];\n return Salla.helpers.getNested({[firstKey]: this.store.get(firstKey)}, key);\n }\n return this.store.get(key, value);\n }\n}\n","/**\n * @namespace Salla.cookie\n */\nexport default class Cookie {\n constructor() {\n //@ts-ignore\n Salla.event.on(\"cookies::remove\", (key) => this.remove(key));\n //@ts-ignore\n Salla.event.on(\"cookies::add\", (key, value) => this.set(key, value));\n }\n\n get(key) {\n //@ts-ignore\n return document.cookie\n .split(\"; \")\n .find((row) => row.startsWith(key + \"=\"))\n ?.split(\"=\")[1];\n }\n\n set(key, value = \"\", days = 10) {\n let expires = \"\";\n if (days) {\n let date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n document.cookie = `${key}=${value}${expires}\"; path=/; secure; SameSite=Lax\"`;\n return this;\n }\n\n remove(key) {\n document.cookie = `${key}=; Max-Age=0; path=/;`;\n return this;\n }\n\n clearAll() {\n let cookies = document.cookie.split(\";\");\n\n for (let i = 0; i < cookies.length; i++) {\n let cookie = cookies[i];\n let eqPos = cookie.indexOf(\"=\");\n let name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n this.remove(name);\n }\n }\n}\n","\"use strict\";\n\nif (typeof window !== \"undefined\") {\n window.salla = window.salla || window.Salla || {};\n window.Salla = window.salla;\n}\nif (typeof global !== \"undefined\") {\n //@ts-ignore\n global.salla = global.salla || global.Salla || {};\n //@ts-ignore\n global.Salla =global.salla;\n}\n\n// loading helpers object and link it to salla\nimport Helpers from \"./helpers\"\nimport Logger from \"./logger\"\nimport Config from \"./config\"\nimport Emitter from \"./event\"\nimport Storage from \"./storage\"\nimport Cookie from \"./cookie\"\n\nSalla.status = 'base';\n// const Salla = {};\nSalla.config = new Config();\nSalla.logger = Logger;\nSalla.event = new Emitter();\nSalla.helpers = Helpers;\nSalla.storage = new Storage();\nSalla.cookie = new Cookie();\n\n// alias\nSalla.log = Salla.logger.log;\nSalla.money = Salla.helpers.money;\nSalla.url = Salla.helpers.url;\nSalla.versions = {\n base: '[VI]{version}[/VI]'\n};\n\nexport default Salla"],"names":["number","num","isToEnglish","regex","ar","en","find","Salla","config","get","replace","i","length","RegExp","getOnlyDecimal","value","dotsCount","concat","match","String","prototype","toStudlyCase","trim","t","toDatasetName","this","startsWith","substr","toString","replaceArray","replaceString","rtrim","s","undefined","ltrim","digitsOnly","helpers","isArray","_typeof","commonjsGlobal","Object","freeGlobal","freeSelf","Function","Symbol","tag","symToStringTag","symToStringTag$1","unmasked","nativeObjectToString","nativeObjectToString$1","call","result","objectToString","_Symbol$3","getRawTag","isObjectLike","require$$1","baseGetTag$1","isSymbol","reIsPlainProp","object","isArray$2","type","isSymbol$2","test","reIsDeepProp","isObject","uid","isObject$3","baseGetTag","maskSrcKey","exec","coreJsData","keys","IE_PROTO","func","isMasked","isFunction_1","toSource","require$$3","e","funcProto","getValue","isObject$2","isFunction$2","reIsNative","reIsHostCtor","key","baseIsNative","size","nativeCreate$3","__data__","nativeCreate","data","HASH_UNDEFINED","hasOwnProperty$1","hashDelete","_hashClear","hashGet","_hashDelete","hashHas","hashSet","nativeCreate$1","hasOwnProperty","has","index","entries","clear","entry","set","Hash","hashClear","Hash$1","_Hash","other","array","eq","listCacheDelete","_listCacheClear","listCacheGet","assocIndexOf$3","lastIndex","pop","splice","listCacheHas","listCacheSet","assocIndexOf$1","assocIndexOf","push","ListCache","listCacheClear","ListCache$1","_ListCache","_Map","_getNative","Map","isKeyable","map","mapCacheDelete","hash","string","mapCacheGet","getMapData","mapCacheHas","getMapData$2","mapCacheSet","getMapData$1","MapCache","mapCacheClear","MapCache$1","_MapCache","memoize$1","TypeError","FUNC_ERROR_TEXT","resolver","memoized","cache","apply","args","Cache","memoize_1","memoize","MAX_MEMOIZE_SIZE","memoizeCapped","charCodeAt","rePropName","quote","subString","reEscapeChar","iteratee","Array","symbolToString","baseToString$1","isArray$1","arrayMap","isSymbol$1","isKey","isArray_1","stringToPath","baseToString","toKey","path","castPath","defaultValue","baseGet","is_full_url","url","storeUrl","window","location","href","split","slice","join","includes","endsWith","encodeURIComponent","baseUrl","origin","asset","existedData","getLeveledData","nameLevels","currentName","_a","inputDigitsOnly","input","is_decimal","document","querySelectorAll","forEach","el","new_val","min","parseInt","max","maxLength","substring","dataset","logger","warn","money","currency","symbol","amount","setNested","schema","len","elem","getNested","default_","get_1","name","URL","hostname","pageName","salla","debounce","fn","delay","resolves","_i","arguments","clearTimeout","timer","setTimeout","r","Promise","_extendStatics","d","b","__proto__","setPrototypeOf","p","__assign","_assign","assign","n","pack","to","from","l","SuppressedError","c","history","proxy","Logger","log","a","isDebug","__dict__","style","color","event","backend","f","__spreadArray","trace","debug","info","error","logs","flat","logData","payload","Config","properties","default_properties","properties_","store","isoCode","values","all","storage","undefined$1","obj","symbolsSupported","process__default","nextTick","reflectSupported","Reflect","setImmediateSupported","ownKeys","setImmediate","arr","getOwnPropertySymbols","init","_events","configure","_conf","conf","delimiter","_maxListeners","maxListeners","newListener","wildcard","removeListener","_newListener","verboseMemoryLeak","_removeListener","ignoreErrors","listenerTree","errorMsg","count","eventName","emitWarning","emitter","process","console","toObject","valuesCount","TargetObserver","target","options","_target","_listeners","_listenersCount","on","off","addEventListener","removeEventListener","addListener","Error","_off","_observers","resolveOptions","reducers","allowUnknown","computedOptions","reducer","reject","option","reason","constructorReducer","makeTypeReducer","types","firstType","secondType","v","message","kind","subscribe","localEvent","observer","listeners","_emitter","handler","eventObj","original","emit","_onNewListener","_event","_on","_onRemoveListener","hasListeners","unsubscribe","events","clearRefs","objectFunctionReducer","executor","callbacks","promise","subscriptionClosed","resolve","onCancel","timeout","overload","Number","isFinite","isCancelable","cleanup","cancel","err","_resolve","_reject","cb","code","findTargetIndex","observers","tree","handlers","typeLength","ns","j","dl","indexOf","xTree","xxTree","isolatedBranch","endReached","currentType","nextType","branches","branch","searchListenerTree","growListenerTree","listener","prepend","unshift","warned","logPossibleMemoryLeak","collectTreeEvents","root","asArray","branchName","isArrayPath","recursivelyGarbageCollect","flag","Listener","promisify","async","objectify","_listener","_origin","nextTickSupported","constructor","context","_setImmediate","then","EventEmitter","listenTo","listen","isSingleReducer","matched","setMaxListeners","once","_once","_many","many","ttl","prependMany","self","_all","containsSymbol","al","emitAsync","promises","onAny","_onAny","prependAny","returnValue","temp","leafs","iLeaf","leaf","position","offAny","fns","removeAllListeners","allListeners","nsAsArray","listenerCount","listenersAny","waitFor","filter","makeCancelablePromise","handleError","toArray","defaultMaxListeners","isNaN","enumerable","writable","errorListener","eventListener","configurable","amd","module","exports","Emitter","_super","_this","body","querySelector","logableEvents","ingoreLogEvents","extendStatics","__","create","__extends","createAndDispatch","event_name","dispatch","actionName","noneFireableActions","trackEvents","dataLayer","dataLayerObject_1","item","dispatchMobileEvent","dispatchEvents","_b","callback","details","page","mobileApp","webkit","messageHandlers","callbackHandler","postMessage","JSON","stringify","Android","customEventWithData","etc","each","val","assignProps2","assignArgsList","slice$1","F","make_create","Global","str","util","create$1","bind","each$5","pluck","isList$1","k","res","isList","isFunction","Global$3","util$4","storeEngine","createStore","_createStore","version","enabled","optionalDefaultValue","_deserialize","read","_namespacePrefix","remove","write","_serialize","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","namespace","addPlugin","_addPlugin","plugin","plugins","_namespace","storages","namespaceRegexp","namespacePrefix","legalNamespaces","_testStorage","testStr","_assignPluginFnProp","propName","pluginFnProp","oldFn","newFnArgs","arg","strVal","defaultVal","parse","_addStorage","seenPlugin","pluginProperties","each$4","_console","_warn","_privateStoreProps","storeAPI","raw","prop","localStorage_1","localStorage","setItem","read$3","removeItem","Global$2","getItem","sessionStorage_1","sessionStorage","read$2","Global$1","cookieStorage","_has","doc","escape","regexpStr","unescape","cookie","each$1","remove$1","_","cookies","kvp","memoryStorage","memoryStorage$1","Storage","localStore","firstKey","parentObject","Cookie","row","days","expires","date","Date","setTime","getTime","toUTCString","eqPos","name_1","global","status","Helpers","versions","base"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.min.js","sources":["../../src/helpers/utils.ts","../../src/config.ts","../../node_modules/store/src/util.js","../../node_modules/store/src/store-engine.js","../../node_modules/store/storages/localStorage.js","../../node_modules/store/storages/sessionStorage.js","../../node_modules/store/storages/cookieStorage.js","../../node_modules/store/storages/memoryStorage.js","../../../../node_modules/.pnpm/rollup-plugin-node-polyfills@0.2.1/node_modules/rollup-plugin-node-polyfills/polyfills/process-es6.js","../../node_modules/eventemitter2/lib/eventemitter2.js","../../src/logger.ts","../../src/event.ts","../../src/storage.ts","../../node_modules/universal-cookie/es6/utils.js","../../node_modules/universal-cookie/es6/Cookies.js","../../src/helpers/numbers.ts","../../src/helpers/url.ts","../../src/helpers/index.ts","../../src/helpers/string.ts","../../src/index.ts","../../src/cookie.ts"],"sourcesContent":["// import { get } from \"lodash\";\n\n/**\n * Retrieves the value at the specified nested path of an object.\n * If the value does not exist, it returns a default value.\n * @param object - The object to extract value from.\n * @param path - The path to the desired value, can be either a string with dot notation or an array of keys.\n * @param defaultValue - The default value to return if the desired value does not exist.\n * @returns The value at the specified path or the default value if it does not exist.\n */\nexport function get(object: any, path: string | string[], defaultValue?: any): any {\n\t// If object is null, undefined or not an object, return the default value\n\tif (!object || typeof object !== 'object') {\n\t return defaultValue;\n\t}\n \n\t// Convert path to an array if it's a string with dot notation\n\tconst keys = Array.isArray(path) ? path : path.split('.');\n\tlet result = object;\n \n\t// Traverse through the keys to get the desired value\n\tfor (const key of keys) {\n\t result = result[key];\n \n\t // If the desired value does not exist, return the default value\n\t if (typeof result === 'undefined') {\n\t\treturn defaultValue;\n\t }\n\t}\n \n\treturn result;\n }\n\n/**\n * Sets the value of a nested property in an object.\n * @param object - The object to set the nested property in.\n * @param key - The key of the nested property, specified in dot notation (e.g. \"foo.bar\").\n * @param value - The value to set for the nested property.\n * @returns The modified object.\n */\nexport function setNested(object: any, key: string, value: any): any {\n\tif (!object) return;\n\n\tlet schema: any = object;\n\tlet keys: string[] = key.split(\".\");\n\tlet len: number = keys.length;\n\n\tfor (let i = 0; i < len - 1; i++) {\n\t\tlet elem: string = keys[i] as string;\n\t\tif (!schema[elem]) schema[elem] = {};\n\t\tschema = schema[elem];\n\t}\n\n\tschema[keys[len - 1]!] = value;\n\treturn object;\n}\n\n/**\n * Gets the value of a nested property in an object, or a default value if the property is undefined.\n * @param object - The object to get the nested property from.\n * @param key - The key of the nested property, specified in dot notation (e.g. \"foo.bar\").\n * @param default_ - The default value to return if the nested property is undefined.\n * @returns The value of the nested property, or the default value if undefined.\n */\nexport function getNested(object: any, key: string, default_: any): any {\n\tif (!object) return default_;\n\n\tlet data: any = get(object, key);\n\treturn data !== undefined ? data : default_;\n}\n\nexport function hasDocument() {\n\treturn typeof document === 'object';\n}","/**\n * @namespace Salla.config\n *\n * @property {any} properties_\n */\n\nimport ConfigAbstract from \"../types/config\"\nimport {Currency} from \"../types/common\"\nimport {getNested, setNested} from \"./helpers/utils\";\n\nclass Config implements ConfigAbstract {\n\n\t/**\n / Default properties for the configuration\n\t */\n\tdefault_properties: object | any;\n\n\t/**\n\t * Current properties for the configuration\n\t */\n\tproperties_: object | any;\n\n\tprivate static instance: Config;\n\n\t/**\n\t * Creates an instance of Config.\n\t * @param {object} properties - Current properties for the configuration\n\t * @param {object} default_properties - Default properties for the configuration\n\t */\n\tprivate constructor(properties: object = {}, default_properties: object = {},) {\n\t\tthis.default_properties = default_properties;\n\t\tthis.properties_ = {...this.default_properties, ...properties};\n\t}\n\n\tpublic static getInstance(properties: object = {}, default_properties: object = {}): Config {\n\t\tif (!Config.instance) {\n\t\t\tConfig.instance = new Config(properties, default_properties);\n\t\t}\n\t\treturn Config.instance;\n\t}\n\n\t/**\n\t * Merge the provided configuration into the current properties.\n\t * @param {object} config - Configuration to merge\n\t * @returns {Config} - Reference to the current Config instance\n\t */\n\tmerge(config: object): this {\n\t\tthis.properties_ = {...this.properties_, ...config};\n\t\tthis.properties_.store = {...(this.default_properties?.store || {}), ...this.properties_.store};\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set a key-value pair in the configuration.\n\t * @param {string} key - Key to set\n\t * @param {any} value - Value to set\n\t * @returns {Config} - Reference to the current Config instance\n\t */\n\tset(key: string, value: any): this {\n\t\t//@ts-ignore\n\t\tif (key.includes(\".\")) {\n\t\t\tsetNested(this.properties_, key, value);\n\t\t\treturn this;\n\t\t}\n\t\tthis.properties_[key] = value;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the currency information for the given ISO code or user's currency code.\n\t * @param {string} isoCode - ISO code of the currency (optional)\n\t * @returns {Currency} - Currency object\n\t */\n\tcurrency(isoCode?: string): Currency {\n\t\tisoCode = isoCode || this.get('user.currency_code');\n\t\treturn this.get('currencies.' + isoCode) || Object.values(this.get('currencies'))[0];\n\t}\n\n\n\tget(key: string, default_: null | any = null): any {\n\t\tif (key.includes(\".\")) {\n\t\t\treturn getNested(this.properties_, key, default_);\n\t\t}\n\t\treturn this.properties_.hasOwnProperty(key) ? this.properties_[key] || default_ : default_ || undefined;\n\t}\n\n\tall(): object | any {\n\t\treturn this.properties_;\n\t}\n\n\tisDebug(): boolean {\n\t\treturn this.get('debug');\n\t}\n\n\tisGuest(): boolean {\n\t\treturn this.get('user.type') !== 'user';\n\t}\n\n\tisUser(): boolean {\n\t\treturn this.get('user.type') === 'user';\n\t}\n\n}\n\nexport default Config;","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i<obj.length; i++) {\n\t\t\tif (fn(obj[i], i)) {\n\t\t\t\treturn obj[i]\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (var key in obj) {\n\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\tif (fn(obj[key], key)) {\n\t\t\t\t\treturn obj[key]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction isList(val) {\n\treturn (val != null && typeof val != 'function' && typeof val.length == 'number')\n}\n\nfunction isFunction(val) {\n\treturn val && {}.toString.call(val) === '[object Function]'\n}\n\nfunction isObject(val) {\n\treturn val && {}.toString.call(val) === '[object Object]'\n}\n","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n","// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\n\nvar util = require('../src/util')\nvar Global = util.Global\nvar trim = util.trim\n\nmodule.exports = {\n\tname: 'cookieStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar doc = Global.document\n\nfunction read(key) {\n\tif (!key || !_has(key)) { return null }\n\tvar regexpStr = \"(?:^|.*;\\\\s*)\" +\n\t\tescape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\n\t\t\"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\"\n\treturn unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"))\n}\n\nfunction each(callback) {\n\tvar cookies = doc.cookie.split(/; ?/g)\n\tfor (var i = cookies.length - 1; i >= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nfunction nextTick(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// 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};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar browser$1 = {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\nexport default browser$1;\nexport { addListener, argv, binding, browser, chdir, config, cwd, emit, env, hrtime, nextTick, off, on, once, platform, release, removeAllListeners, removeListener, title, umask, uptime, version, versions };\n","/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? values.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","import SallaConfig from \"../types/config\";\nimport Config from \"../src/config\"\n\n/**\n * A logger to help us to use Salla.logger.log like console.log\n *\n * @namespace Salla.logger\n *\n * @credits @Ammar Hasan\n * @see https://stackoverflow.com/a/21856736\n *\n */\n\ntype ProxyType = {\n\tlog(a: any[], type: string): void;\n\t// __dict__: {\n\t// \twarn: { (message?: any, ...optionalParams: any[]): void; (...data: any[]): void };\n\t// \ttrace: { (message?: any, ...optionalParams: any[]): void; (...data: any[]): void };\n\t// \tdebug: { (message?: any, ...optionalParams: any[]): void; (...data: any[]): void };\n\t// \terror: { (message?: any, ...optionalParams: any[]): void; (...data: any[]): void };\n\t// \tinfo: { (message?: any, ...optionalParams: any[]): void; (...data: any[]): void }\n\t// }\n\t__dict__: { [p: string]: any }\n};\n\nexport default class Logger {\n\n\tprivate c = console;\n\tprivate config: SallaConfig;\n\tprivate _proxy: ProxyType;\n\tprivate historyData: any[] = [];\n\n\tget proxy(): ProxyType {\n\t\treturn this._proxy;\n\t}\n\n\tconstructor(cons = console) {\n\t\tthis.c = cons;\n\t\tthis.config = Config.getInstance();\n\t\tthis._proxy = {\n\t\t\tlog: (a, type) => {\n\t\t\t\tif (!this.config.isDebug()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.historyData.push([type, a]);\n\n\t\t\t\t// let's force trace for all logs when the debug is trace level\n\t\t\t\tif (this.config.get('debug') === 'trace') {\n\t\t\t\t\ttype = 'trace';\n\t\t\t\t}\n\t\t\t\tlet colorableTypes: { [key: string]: any } = {\n\t\t\t\t\t\"event\": '#CFF680',\n\t\t\t\t\t\"backend\": '#7b68ee',\n\t\t\t\t\t\"trace\": '#f9f9f9',\n\t\t\t\t\t\"debug\": '#f9f9f9',\n\t\t\t\t\t\"info\": '#f9f9f9',\n\t\t\t\t\t\"warn\": '#f9f9f9',\n\t\t\t\t\t\"error\": '#f9f9f9',\n\t\t\t\t\t\"history\": '#f9f9f9'\n\t\t\t\t};\n\n\t\t\t\tlet l = this.c.log,\n\t\t\t\t f = !!type ? l : (this.proxy.__dict__[type] || l);\n\n\t\t\t\tlet style = ['%cTwilight', 'color: #5cd5c4;font-weight:bold; border:1px solid #5cd5c4; padding: 2px 6px; border-radius: 5px;'];\n\t\t\t\tlet color = colorableTypes[type];\n\t\t\t\tif (color) {\n\t\t\t\t\tstyle[0] += '%c' + type.substring(0,1).toUpperCase() + type.substring(1);\n\t\t\t\t\tstyle.push(`margin-left: 5px;color: ${color};font-weight:bold; border:1px solid ${color}; padding: 2px 6px; border-radius: 5px;`)\n\t\t\t\t}\n\n\t\t\t\tf.call(this.c, ...style.concat(...a))\n\t\t\t},\n\t\t\t__dict__: {\n\t\t\t\t\"trace\": this.c.trace,\n\t\t\t\t\"debug\": this.c.debug,\n\t\t\t\t\"info\": this.c.info,\n\t\t\t\t\"warn\": this.c.warn,\n\t\t\t\t\"error\": this.c.error\n\t\t\t} as { [key: string]: any }\n\t\t};\n\t}\n\n\tevent(...args: any[]) {\n\t\tthis.proxy.log(args, \"event\");\n\t}\n\n\ttrace(...args: any[]) {\n\t\tthis.proxy.log(args, \"trace\");\n\t}\n\n\tdebug(...args: any[]) {\n\t\tthis.proxy.log(args, \"debug\");\n\t}\n\n\tinfo(...args: any[]) {\n\t\tthis.proxy.log(args, \"info\");\n\t}\n\n\twarn(...args: any[]) {\n\t\tthis.proxy.log(args, \"warn\");\n\t}\n\n\terror(...args: any[]) {\n\t\tthis.proxy.log(args, \"error\");\n\t}\n\n\tlog(...args: any[]) {\n\t\tthis.proxy.log(args, '');\n\t}\n\n\t//use this to pass messages from backEnd, no need to add documentations, because it will no passed in production\n\tbackend(...args: any[]) {\n\t\tthis.proxy.log(args, \"backend\");\n\t}\n\n\t//this for internal usage to pass multi logs using one function, no need to add it to documentation @see \\Salla\\Core\\Traits\\WithStageLogger::debug\n\tlogs(logs: any[]) {\n\t\t//@ts-ignore\n\t\t[logs].flat().forEach(logData => logData && this.proxy.log([logData].flat(), 'backend'));\n\t}\n\n\thistory() {\n\t\treturn this.historyData;\n\t}\n}","import {\n\tevent as EventType,\n\tEventAndListener,\n\tEventEmitter2,\n\teventNS,\n\tListener,\n\tListenerFn,\n\tOnOptions,\n} from 'eventemitter2';\nimport Logger from './logger';\nimport EmitterInterface, {typeSafeEvents} from \"../types/event\"\n\n/**\n * @namespace Salla.event\n *\n * @property {string} delimiter\n * @property {array} loggableEvents - log errors or important events.\n */\nexport default class Emitter extends EventEmitter2 implements EmitterInterface {\n\tdelimiter: string;\n\tloggableEvents: string[];\n\tignoreLogEvents: string[];\n\tnonFireableActions: string[];\n\n\tprivate static instance: Emitter;\n\n\tlogger = new Logger();\n\n\tprivate constructor() {\n\t\tconst delimiter = '::';\n\t\tsuper({\n\t\t\twildcard: true,\n\t\t\tdelimiter,\n\t\t\tnewListener: false,\n\t\t\tremoveListener: false,\n\t\t\tmaxListeners: 10,\n\t\t\tverboseMemoryLeak: false,\n\t\t\tignoreErrors: false,\n\t\t});\n\t\tthis.delimiter = delimiter;\n\n\t\tthis.loggableEvents = ['cart::item.added.failed', 'cart::item.deleted.failed'];\n\n\t\tthis.ignoreLogEvents = [\n\t\t\t'document::click',\n\t\t\t'document::keyup',\n\t\t\t'document::change',\n\t\t\t//'document::submit',\n\t\t];\n\n\t\tthis.nonFireableActions = ['document.request'];\n\t}\n\n\tpublic static getInstance(): Emitter {\n\t\tif (!Emitter.instance) {\n\t\t\tEmitter.instance = new Emitter();\n\t\t}\n\t\treturn Emitter.instance;\n\t}\n\n\t/**\n\t * @param {string} event_name\n\t * @param data\n\t *\n\t * @deprecated , legacy code, use dispatch() instead\n\t */\n\tcreateAndDispatch<Event extends string | symbol>(event_name: Event | Event[], ...data: any): void {\n\t\tthis.dispatch(event_name, ...data);\n\t}\n\n\temit<Event extends string | symbol>(event: Event | Event[], ...data: any): boolean {\n\t\t/**\n\t\t * if the event, is api/event method, call it,\n\t\t * ex: cart::quick.add call Salla.api.cart.quickAdd(...data)\n\t\t * we don't used Salla.call(actionName)(...data), to avoid losing this scope in our apis.\n\t\t *\n\t\t * @deprecated don't use it anymore\n\t\t */\n\t\tsuper.emit(event, ...data);\n\t\tthis.trackEvents(event, ...data);\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return the results of the listeners via Promise.all.\n\t * Only this method doesn't work IE.\n\t * @param event_name\n\t * @param data\n\t */\n\temitAsync<Event extends string | symbol>(event_name: Event | Event[], ...data: any): any {\n\t\t// to make sure that data object will not be affected by track process\n\t\tconst result = super.emitAsync(event_name, ...data);\n\t\ttry {\n\t\t\tthis.trackEvents(event_name, ...data);\n\t\t} catch (e) {\n\t\t\tthis.logger.warn(`error on tracking event (${String(event_name)})`, data, e);\n\t\t}\n\t\treturn result;\n\t}\n\n\ttrackEvents<Event extends string | symbol>(event_name: Event | Event[], ...data: any): void {\n\t\t// let's send the event to data layer\n\t\tif (typeof window !== 'undefined') {\n\t\t\ttry {\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\t\t/**\n\t\t\t\t * data is coming as an array like this:\n\t\t\t\t * [{\"services\": {\"intercom\": {\"app_id\": \"***\"}}}]\n\t\t\t\t * we will merge itf into one object like this:\n\t\t\t\t * {event: event_name, \"services\": {\"intercom\": {\"app_id\": \"***\"}}}\n\t\t\t\t */\n\t\t\t\tlet dataLayerObject = {event: event_name};\n\t\t\t\tdata.map((item: any) => typeof item === 'object' && (dataLayerObject = {...dataLayerObject, ...item}));\n\t\t\t\twindow.dataLayer.push(dataLayerObject);\n\t\t\t} catch (e: any) {\n\t\t\t\tthis.logger.error(e.message);\n\t\t\t}\n\t\t}\n\n\t\t// if there is need to log errors, or events, lets do it here.\n\t\tif (Array.isArray(event_name) ? !event_name.filter((item) => this.ignoreLogEvents.includes(item as string)) : !this.ignoreLogEvents.includes(event_name as string)) {\n\t\t\tthis.logger.event(event_name, ...data);\n\t\t}\n\t\tthis.dispatchMobileEvent(event_name, data);\n\t}\n\n\t/**\n\t * Fire Event with data\n\t *\n\t * @param {string} event_name - action name like `cart::addItem` or event name like `cart::item.added`\n\t * @param {any|undefined} data\n\t * @data {{payload}} data\n\t */\n\tdispatch<Event extends string | symbol>(event_name: Event | Event[], ...data: any): boolean {\n\t\treturn this.emit(event_name, ...data);\n\t}\n\n\t/**\n\t * Fire multi events using object of events\n\t *\n\t * @param {Object.<string, *>} events\n\t */\n\tdispatchEvents(events: { [key: string]: any }): void {\n\t\tif (!events) {\n\t\t\tthis.logger.log('No Events To Dispatch!', events);\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof events !== 'object' || Array.isArray(events)) {\n\t\t\tthis.logger.log('Events object is wrong, it should be object of {event:payload}', events);\n\t\t\treturn;\n\t\t}\n\n\t\t//@ts-ignore\n\t\tfor (const [event_name, payload] of Object.entries(events)) {\n\t\t\tthis.dispatch(event_name, payload);\n\t\t}\n\t}\n\n\t/**\n\t * Alias for this.addListener\n\t * @param {string} eventName\n\t * @param {function} callback\n\t */\n\tlisten(eventName: EventType | eventNS, callback: ListenerFn): this | Listener {\n\t\treturn this.on(eventName, callback);\n\t}\n\n\t/**\n\t * This help to push an event to mobile app.\n\t *\n\t * @param eventName\n\t * @param details\n\t * @returns {string}\n\t */\n\tdispatchMobileEvent<Event extends string | symbol>(eventName: Event | Event[], details = {}): void {\n\t\tif (\n\t\t typeof window === 'undefined' ||\n\t\t !window.dataLayer ||\n\t\t !window.dataLayer[0] ||\n\t\t !window.dataLayer[0].page ||\n\t\t !window.dataLayer[0].page.mobileApp\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!!window.webkit) {\n\t\t\ttry {\n\t\t\t\twindow.webkit.messageHandlers.callbackHandler.postMessage(\n\t\t\t\t JSON.stringify({\n\t\t\t\t\t event: eventName,\n\t\t\t\t\t details: details,\n\t\t\t\t })\n\t\t\t\t);\n\t\t\t} catch (err) {\n\t\t\t\tthis.logger.log(err, 'The native context does not exist yet');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!!window.Android) {\n\t\t\ttry {\n\t\t\t\twindow.Android.customEventWithData(eventName, JSON.stringify({details: details}));\n\t\t\t} catch (err) {\n\t\t\t\tthis.logger.log(err, 'The native context does not exist yet');\n\t\t\t}\n\t\t}\n\t}\n}","import * as createStore from \"store/src/store-engine\"\nimport * as localStorage from \"store/storages/localStorage\"\nimport * as sessionStorage from \"store/storages/sessionStorage\"\nimport * as cookieStorage from \"store/storages/cookieStorage\"\nimport * as memoryStorage from \"store/storages/memoryStorage\"\nimport {getNested, setNested} from \"./helpers/utils\"\nimport Emitter from \"./event\";\n\n// Define storage engines\nconst storageEngines: any[] = [\n\tlocalStorage,\n\tsessionStorage,\n\tcookieStorage,\n\tmemoryStorage,\n];\n\n// Create the store engine with the storage engines and the namespace\nconst localStore = createStore.createStore(storageEngines, [], \"salla\");\n\nexport default class Storage {\n\tprivate static instance: Storage;\n\tstore: typeof localStore;\n\n\tprivate constructor() {\n\t\tthis.store = localStore;\n\n\t\tlet sallaEvent = Emitter.getInstance();\n\t\tsallaEvent.on(\"storage::item.remove\", (key) => this.remove(key));\n\t\tsallaEvent.on(\"storage::item.set\", (key, value) => this.set(key, value));\n\t}\n\n\tpublic static getInstance(): Storage {\n\t\tif (!Storage.instance) {\n\t\t\tStorage.instance = new Storage();\n\t\t}\n\t\treturn Storage.instance;\n\t}\n\n\tpublic set(key: string, value: any): void {\n\t\t//@ts-ignore\n\t\tif (key.includes(\".\")) {\n\t\t\tconst firstKey: string = key.split(\".\")[0] as string;\n\t\t\tconst parentObject = {[firstKey]: this.store.get(firstKey)};\n\t\t\tconst updatedParentObject = setNested(parentObject, key, value);\n\t\t\tthis.store.set(firstKey, updatedParentObject[firstKey]);\n\t\t} else {\n\t\t\tthis.store.set(key, value);\n\t\t}\n\t}\n\n\tpublic remove(key: string): void {\n\t\tthis.store.remove(key);\n\t}\n\n\tpublic clearAll(): void {\n\t\tthis.store.clearAll();\n\t}\n\n\tpublic get(key: string, value?: any): any {\n\t\t//@ts-ignore\n\t\tif (key.includes(\".\")) {\n\t\t\tconst firstKey: string = key.split(\".\")[0] as string;\n\t\t\treturn getNested({[firstKey]: this.store.get(firstKey)}, key, undefined);\n\t\t} else {\n\t\t\treturn this.store.get(key, value);\n\t\t}\n\t}\n}","import * as cookie from 'cookie';\nexport function hasDocumentCookie() {\n // Can we get/set cookies on document.cookie?\n return typeof document === 'object' && typeof document.cookie === 'string';\n}\nexport function cleanCookies() {\n document.cookie.split(';').forEach(function (c) {\n document.cookie = c\n .replace(/^ +/, '')\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\n });\n}\nexport function parseCookies(cookies) {\n if (typeof cookies === 'string') {\n return cookie.parse(cookies);\n }\n else if (typeof cookies === 'object' && cookies !== null) {\n return cookies;\n }\n else {\n return {};\n }\n}\nexport function readCookie(value, options = {}) {\n const cleanValue = cleanupCookieValue(value);\n if (!options.doNotParse) {\n try {\n return JSON.parse(cleanValue);\n }\n catch (e) {\n // At least we tried\n }\n }\n // Ignore clean value if we failed the deserialization\n // It is not relevant anymore to trim those values\n return value;\n}\nfunction cleanupCookieValue(value) {\n // express prepend j: before serializing a cookie\n if (value && value[0] === 'j' && value[1] === ':') {\n return value.substr(2);\n }\n return value;\n}\n","import * as cookie from 'cookie';\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\nexport default class Cookies {\n constructor(cookies, defaultSetOptions = {}) {\n this.changeListeners = [];\n this.HAS_DOCUMENT_COOKIE = false;\n this.update = () => {\n if (!this.HAS_DOCUMENT_COOKIE) {\n return;\n }\n const previousCookies = this.cookies;\n this.cookies = cookie.parse(document.cookie);\n this._checkChanges(previousCookies);\n };\n const domCookies = typeof document === 'undefined' ? '' : document.cookie;\n this.cookies = parseCookies(cookies || domCookies);\n this.defaultSetOptions = defaultSetOptions;\n this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\n }\n _emitChange(params) {\n for (let i = 0; i < this.changeListeners.length; ++i) {\n this.changeListeners[i](params);\n }\n }\n _checkChanges(newCookies) {\n const names = new Set(Object.keys(newCookies).concat(Object.keys(this.cookies)));\n names.forEach((name) => {\n if (newCookies[name] !== this.cookies[name]) {\n this._emitChange({\n name,\n value: readCookie(newCookies[name]),\n });\n }\n });\n }\n _startPolling() {\n this.pollingInterval = setInterval(this.update, 300);\n }\n _stopPolling() {\n if (this.pollingInterval) {\n clearInterval(this.pollingInterval);\n }\n }\n get(name, options = {}) {\n if (!options.doNotUpdate) {\n this.update();\n }\n return readCookie(this.cookies[name], options);\n }\n getAll(options = {}) {\n if (!options.doNotUpdate) {\n this.update();\n }\n const result = {};\n for (let name in this.cookies) {\n result[name] = readCookie(this.cookies[name], options);\n }\n return result;\n }\n set(name, value, options) {\n if (options) {\n options = Object.assign(Object.assign({}, this.defaultSetOptions), options);\n }\n else {\n options = this.defaultSetOptions;\n }\n const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n this.cookies = Object.assign(Object.assign({}, this.cookies), { [name]: stringValue });\n if (this.HAS_DOCUMENT_COOKIE) {\n document.cookie = cookie.serialize(name, stringValue, options);\n }\n this._emitChange({ name, value, options });\n }\n remove(name, options) {\n const finalOptions = (options = Object.assign(Object.assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\n this.cookies = Object.assign({}, this.cookies);\n delete this.cookies[name];\n if (this.HAS_DOCUMENT_COOKIE) {\n document.cookie = cookie.serialize(name, '', finalOptions);\n }\n this._emitChange({ name, value: undefined, options });\n }\n addChangeListener(callback) {\n this.changeListeners.push(callback);\n if (this.changeListeners.length === 1) {\n if (typeof window === 'object' && 'cookieStore' in window) {\n window.cookieStore.addEventListener('change', this.update);\n }\n else {\n this._startPolling();\n }\n }\n }\n removeChangeListener(callback) {\n const idx = this.changeListeners.indexOf(callback);\n if (idx >= 0) {\n this.changeListeners.splice(idx, 1);\n }\n if (this.changeListeners.length === 0) {\n if (typeof window === 'object' && 'cookieStore' in window) {\n window.cookieStore.removeEventListener('change', this.update);\n }\n else {\n this._stopPolling();\n }\n }\n }\n}\n","import { Price } from \"../../types/common\";\nimport SallaConfig from \"../../types/config\";\nimport LoggerType from \"../../types/logger\";\n\nimport Logger from \"../logger\";\nimport Config from \"../config\"\nimport { hasDocument } from \"./utils\";\n\nconst sallaLogger = new Logger();\nconst config = Config.getInstance();\n\n\n/**\n * Converts a number to a string and replaces Arabic numerals with English numerals.\n * @param num - The number to convert.\n * @param isToEnglish - Whether to convert Arabic numerals to English numerals.\n * @returns The converted number as a string.\n */\nfunction number(num: number | string, isToEnglish = false): string {\n\tnum = String(num); // make sure that number will be converted to string.\n\tisToEnglish =\n\t\tisToEnglish ||\n\t\t!config.get(\"store.settings.arabic_numbers_enabled\");\n\tconst ar = [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\n\tconst en = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n\tconst find = isToEnglish ? ar : en;\n\tconst replace = isToEnglish ? en : ar;\n\tlet regex;\n\tfor (let i = 0; i < find.length; i++) {\n\t\t//@ts-ignore\n\t\tregex = new RegExp(find[i], \"g\");\n\t\t//@ts-ignore\n\t\tnum = (num as String).replace(regex, replace[i]);\n\t}\n\t// todo: replace dots between two digits only, to avoid replacing the period.\n\treturn (num as String).replace(isToEnglish ? \"٫\" : \".\", isToEnglish ? \".\" : \"٫\");\n}\n\nfunction digitsOnly(num: string): string {\n\treturn number(num, true)\n\t\t.replace(/[^0-9.]/g, \"\")\n\t\t.replace(\"..\", \".\")\n\t\t.replace(/\\.$/, \"\"); // without this: `Salla.helpers.digitsOnly('١٬٦٠٠ ر.س')` => `1600`\n}\n\nfunction inputDigitsOnly(input: HTMLInputElement | string, is_decimal = false): void {\n\tif (!hasDocument()) return;\n\tif (typeof input === \"string\") {\n\t\tdocument\n\t\t\t.querySelectorAll(input)\n\t\t\t.forEach((el) => inputDigitsOnly(el as HTMLInputElement, is_decimal));\n\t\treturn;\n\t}\n\tif (!input) {\n\t\tsallaLogger.warn(\"Can't find Object With Id: \" + input);\n\t\treturn;\n\t}\n\tlet new_val = digitsOnly(input.value);\n\tif (input.min && parseInt(new_val) < parseInt(input.min)) {\n\t\tinput.value = input.min;\n\t\treturn;\n\t}\n\tif (input.max && parseInt(new_val) > parseInt(input.max)) {\n\t\tinput.value = input.max\n\t\treturn;\n\t}\n\tif (input.maxLength >= 1 && new_val.length > input.maxLength) {\n\t\tinput.value = new_val.toString().substring(0, input.maxLength);\n\t\treturn;\n\t}\n\tinput.value = is_decimal || input.dataset.hasOwnProperty(\"digitsWithDecimal\")\n\t\t? getOnlyDecimal(new_val)\n\t\t: new_val.replace(/\\D/g, \"\");\n}\n\nfunction getOnlyDecimal(value: string): string {\n\tconst dotsCount = (`${value}`.match(/\\./g) || []).length;\n\tif (!dotsCount || dotsCount === 1) {\n\t\treturn value;\n\t}\n\t// if there is more than one dot, remove the last dot.\n\t// Ex: 123.545.66 => 123.54566\n\treturn getOnlyDecimal(value.replace(/\\.(.+)\\./g, \".$1\"));\n}\n\nfunction money(money: string | number | Price): string {\n\tconst currency = config.currency((money as Price).currency).symbol;\n\tmoney =\n\t\ttypeof money === \"object\" ? money.amount : money as unknown as number;\n\treturn number(money) + \" \" + currency;\n}\n\nexport default {\n\tnumber,\n\tdigitsOnly,\n\tinputDigitsOnly,\n\tgetOnlyDecimal,\n\tmoney,\n};","import SallaConfig from \"../../types/config\";\nimport {hasDocument} from \"./utils\";\nimport {UrlHelpers} from \"../../types/helpers\";\n\nimport Config from \"../config\"\n\nexport default class UrlHelper implements UrlHelpers{\n\tconfig: SallaConfig;\n\n\tconstructor() {\n\t\tthis.config = Config.getInstance();\n\t}\n\n\t/**\n\t * Check if the url is a full url.\n\t * @param {string} url - The url to check.\n\t * @returns {boolean} - True if the url is a full url.\n\t */\n\tisFullUrl(url: string): boolean {\n\t\treturn url.startsWith(\"https://\") || url.startsWith(\"http://\");\n\t}\n\n\t/**\n\t * Get the base url for the given url.\n\t * @param {string} url - The url to get the base url for.\n\t * @returns string - The base url for the given url.\n\t */\n\tgetBase(url: string): string {\n\t\tif (this.isFullUrl(url)) {\n\t\t\treturn url;\n\t\t}\n\n\t\tconst {hostname} = new URL(this.get(\"/\"));\n\n\t\treturn `https://${hostname}/${url?.ltrim(\"/\")}`;\n\t}\n\n\t/**\n\t * Get the full url for the given path.\n\t * @param {string} path - The path to get the full url for.\n\t * @returns {string} - The full url the given path.\n\t */\n\tget(path: string): string {\n\t\tif (this.isFullUrl(path)) {\n\t\t\treturn path;\n\t\t}\n\n\t\tlet storeUrl = this.config.get(\"store.url\");\n\n\t\tif (!storeUrl && hasDocument()) {\n\t\t\tstoreUrl = window.location.href.split(\"/\").slice(0, -1).join(\"/\");\n\t\t\tthis.config.set(\"store.url\", storeUrl);\n\t\t}\n\n\t\treturn `${storeUrl.rtrim(\"/\")}/${path?.ltrim(\"/\")}`;\n\t}\n\n\t/**\n\t * Get the domain for the given path.\n\t * @param {string} path - The path to get the domain for.\n\t * @returns {string} - The domain for the given path.\n\t */\n\tgetDomain(path: string): string {\n\t\tif (this.isFullUrl(path)) {\n\t\t\treturn path;\n\t\t}\n\n\t\treturn `${this.config.get(\n\t\t \"store.url\",\n\t\t (hasDocument() ? window.location.href : '').split(\"/\").slice(0, -1).join(\"/\")\n\t\t).rtrim(\"/\")}/${path?.ltrim(\"/\")}`;\n\t}\n\n\t/**\n\t * Add a parameter to a URL.\n\t * @param {string} key - The key of the parameter to add.\n\t * @param {string} value - The value of the parameter to add.\n\t * @param {string} [url] - The URL to add the parameter to. Defaults to window.location.href.\n\t * @returns {string} - The URL with the added parameter.\n\t */\n\tstatic addParamToUrl(key: string, value: string, url: any): string {\n\t\t//TODO: check when there is no url param provided (from the clinet side)\n\t\t// for the time being return empty string\n\t\t// url = url;\n\t\tif(!url) return \"\"\n\n\t\t// assuming url is a string type\n\n\t\tif (!value || !key) {\n\t\t\treturn url;\n\t\t}\n\n\t\tconst regex = new RegExp(`([?&])${key}=[^&]+[&]?`, \"g\");\n\n\t\turl = url\n\t\t .replace(regex, \"$1\") //remove old one\n\t\t .split(\"#\")[0] //remove any hash values ex 'https://my_site.test/brands#brand-section-1'\n\t\t .replace(/&$|\\?$/, \"\"); // remove the `?` or `&` if it's the last char\n\n\t\tif (url.includes(\"?\")) {\n\t\t\turl += \"&\";\n\t\t} else {\n\t\t\t//avoid cases like this: 'https://my_store.test/ar?test=hi'\n\t\t\turl += (url.endsWith(\"/\") ? \"\" : \"/\") + \"?\";\n\t\t}\n\n\t\treturn `${url}${key}=${encodeURIComponent(value)}`.replace(/&$|\\?$/, \"\");\n\t}\n\n\t/**\n\t * Get the base URL for a given path without username if it's salla domain ex: Salla.sa/test will ignore test.\n\t * @param {string} path - The path to get the base URL for.\n\t * @returns {string} - The base URL for the given path without username if it's salla domain ex: Salla.sa/test will ignore test.\n\t */\n\tbaseUrl(path: string): string {\n\t\t//TODO: check what to use for SSR\n\t\treturn `${hasDocument() ? window.location.origin : \"http://localhost\"}/${path?.ltrim(\"/\")}`;\n\t}\n\n\t/**\n\t * Returns the asset path.\n\t * @param path - The path to the asset.\n\t * @returns The asset path.\n\t */\n\tasset(path: string): string {\n\t\tif (this.isFullUrl(path)) {\n\t\t\treturn path;\n\t\t}\n\n\t\tif (this.config.get(\"theme.assets\")) {\n\t\t\treturn this.config.get(\"theme.assets\").replace(\":path\", path?.ltrim(\"/\"));\n\t\t}\n\n\t\treturn this.baseUrl(`themes/${this.config.get(\"theme.name\")}/${path?.ltrim(\"/\")}`);\n\t}\n\n\t/**\n\t * Returns the CDN path.\n\t * @param path - The path to the CDN.\n\t * @returns The CDN path.\n\t */\n\tcdn(path: string): string {\n\t\treturn `https://cdn.salla.network/${path?.ltrim(\"/\")}`;\n\t}\n\n\t/**\n\t * Returns the API URL.\n\t * @example Salla.url.api('test') => https://my_store.test/api/v1/test\n\t * @param path - The API endpoint.\n\t * @returns The API URL.\n\t */\n\tapi(path: string): string {\n\t\treturn `${this.config.get(\"store.api\", this.get(\"\"))?.rtrim(\"/\")}/${path?.ltrim(\"/\")}`;\n\t}\n\n\t/**\n\t * Returns whether the page name matches the current page slug.\n\t * @param pageName - The name of the page to check against.\n\t * @returns Whether the page name matches the current page slug.\n\t */\n\tisPage(pageName: string): boolean {\n\t\treturn !!pageName && this.config.get(\"page.slug\") === pageName;\n\t}\n\n\t/**\n\t * Returns whether the URL is a placeholder.\n\t * @param url - The URL to check.\n\t * @returns Whether the URL is a placeholder.\n\t */\n\tisPlaceholder(url: string): boolean {\n\t\treturn this.asset(this.config.get(\"theme.settings.placeholder\")) === this.asset(url);\n\t}\n\n\t/**\n\t * Check if a string is a valid URL or not.\n\t * @param value - url string\n\t * @returns boolean.\n\t */\n\tisAValidUrl(value: string): boolean {\n\t\ttry {\n\t\t\tnew URL(value);\n\t\t\treturn true;\n\t\t} catch (TypeError) {\n\t\t\treturn false;\n\t\t}\n\t}\n}","import NumbersHelper from \"./numbers\";\n\nimport UrlHelper from \"./url\";\nimport {getNested, setNested, hasDocument} from \"./utils\";\n\n/**\n * To use it, you need some moves:\n * 1- First : you should have global variable: `let my_debounce;`\n * 2- Next : make your own function: `function my_debounce_fn(callback,...data){...}`\n * 3- Next : in your method, check if it's not existed yet, use this helper method to create it: `if(!my_debounce){my_debounce=Salla.helpers.debounce((fn, ...inner_data) => fn(...inner_data), 500)}`\n * 4- Next : then delay the passed callback: `my_debounce(callback, ...data);`\n * 5- Finally : use it: `my_debounce(() =>{...yourRepeatableLogic})`\n * will be something like:\n *\n * ```\n * let my_debounce;\n * function my_debounce_fn(callback,...data){\n * if(!my_debounce){\n * // inline method\n * my_debounce=Salla.helpers.debounce((fn, ...inner_data) => fn(...inner_data), 500);\n * }\n * return my_debounce(callback, ...data);\n * }\n * // use it like:\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 1');\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 2');\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 3');\n * my_debounce_fn((my_data)=>Salla.log(my_data), 'hello there - 4');\n * // output=> `hello there - 4`\n * ```\n * 😎Or just use Salla appHelpers:`app.debounce((my_data)=>Salla.log(my_data), 'hello there - *')`\n *\n * @param fn\n * @param delay\n * @return Promise\n */\nfunction debounce(fn: Function, delay: number): Function {\n\tdelay = delay || 100;\n\tlet resolves: Function[] = [];\n\tlet timer: NodeJS.Timeout;\n\n\treturn function (...args: any[]): Promise<unknown> {\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(() => {\n\t\t\tlet result = fn(...args);\n\t\t\tresolves.forEach((r) => r(result));\n\t\t\tresolves = [];\n\t\t}, delay);\n\t\t//@ts-ignore\n\t\treturn new Promise((r) => resolves.push(r));\n\t};\n}\n\n/**\n * Use It When You want to grab data from input names with brackets Ex.\n * <input name=\"products[0][id]\" value...>\n * <input name=\"products[0][name]\" value...>\n * <input name=\"products[1][id]\" value...>\n * <input name=\"products[1][name]\" value...>\n * will be like: {products:[{id:.., name:..},{id:.., name:..}]}\n * @param name\n * @param value\n * @param dataset\n * @return {name, value}|{name, value: (*|[*, *]|[string, *]|{}|[*])}\n */\nfunction getInputDataWithName(name: string, value: any, dataset: object = {}): object {\n\t//@ts-ignore\n\tif (name.includes(\"[\")) {\n\t\tlet nameLevels = name.split(\"]\").join(\"\").split(\"[\");\n\t\t//@ts-ignore\n\t\treturn {name: nameLevels[0], value: getLabeledData(nameLevels.slice(1), value, dataset[nameLevels[0]])};\n\t}\n\treturn {name: name, value: value};\n}\n\n/**\n * in case input name is array for example \"jamal[4655]\" let's fix it\n * This Helper method to get suitable array data, Ex.\n * jamal[]=1\n * jamal[]=2\n * final result will be: {jamal:[1,2]}\n *\n * @param nameLabels\n * @param value\n * @param existedData\n * @return *[]|*|(string|*)[]|{}\n */\nfunction getLabeledData(nameLabels: string[], value: string | any, existedData: object | undefined): any[] | any {\n\tlet currentName = nameLabels[0];\n\n\t// it's an array, so add value as array\n\tif (existedData && nameLabels.length === 0) {\n\t\tif (Array.isArray(existedData)) {\n\t\t\texistedData.push(value);\n\t\t\treturn existedData;\n\t\t}\n\n\t\t// todo: handle in case it's object\n\t\treturn [existedData, value];\n\t}\n\n\tif (Array.isArray(existedData)) {\n\t\texistedData.push(value);\n\t\treturn existedData;\n\t}\n\n\tif (typeof existedData === \"string\") {\n\t\treturn [existedData, value];\n\t}\n\n\t// it's nested data\n\tif (existedData) {\n\t\t//@ts-ignore\n\t\texistedData[currentName] = getLabeledData(nameLabels.slice(1), value, existedData[currentName]);\n\t\treturn existedData;\n\t}\n\n\tif (currentName) {\n\t\t//@ts-ignore\n\t\treturn {[currentName]: getLabeledData(nameLabels.slice(1), value)};\n\t}\n\n\t// handling \"[]\" without name\n\treturn currentName === \"\" ? [value] : value;\n}\n\n/**\n * @type { debouce: (function(*, *=): function(...[*]): Promise<unknown>), getInputDataWithName: ((function(*=, *=, *): ({name, value}|{name, value: (*|*[]|(string|*)[]|{})}))|*), digitsOnly: ((function(*=, *=): (undefined|*))|*) }}\n */\nexport default {\n\t// Numbers helpers\n\tdigitsOnly: NumbersHelper.digitsOnly,\n\tinputDigitsOnly: NumbersHelper.inputDigitsOnly,\n\tnumber: NumbersHelper.number,\n\tmoney: NumbersHelper.money,\n\tgetOnlyDecimal: NumbersHelper.getOnlyDecimal,\n\n\t// Nested objects helpers\n\tsetNested,\n\tgetNested,\n\tgetInputDataWithName,\n\thasDocument,\n\n\t// Url helpers\n\turl: new UrlHelper(),\n\taddParamToUrl: UrlHelper.addParamToUrl,\n\n\t// other\n\tdebounce,\n};","import NumbersHelper from \"./numbers\";\n\ndeclare global {\n\tinterface String {\n\t\ttoStudlyCase(): string;\n\n\t\ttoDatasetName(): string;\n\n\t\ttoSelector(): string;\n\n\t\treplaceArray(find: string[], replace: string[]): string;\n\n\t\trtrim(s?: string): string;\n\n\t\tltrim(s?: string): string;\n\n\t\tdigitsOnly(): string;\n\t}\n}\n\n/**\n * Convert string to StudlyCase.\n * @returns {string} - The string in StudlyCase.\n */\nString.prototype.toStudlyCase = function (): string {\n\treturn this.trim().replace(/([^a-zA-Z\\d].)/g, (t: string) => {\n\t\treturn t.toUpperCase().replace(/[^a-zA-Z\\d]/g, '');\n\t});\n};\n\n/**\n * Convert a string to dataset name format.\n * @returns {string} - The string in dataset name format.\n */\nString.prototype.toDatasetName = function (): string {\n\t//@ts-ignore\n\treturn this.startsWith('data-')\n\t ? this.substr(5).toStudlyCase()\n\t : this.toStudlyCase();\n};\n\n/**\n * Get string as selector by adding \"#\" to the beginning if it doesn't start with \"#\" or \".\".\n * @returns {string} - The string as a selector.\n */\nString.prototype.toSelector = function (): string {\n\t//@ts-ignore\n\treturn this.trim().startsWith(\".\") || this.trim().startsWith(\"#\")\n\t ? this.toString()\n\t : \"#\" + this.toString();\n};\n\n/**\n * Replace an array of strings with another array of strings.\n * @param {string[]} find - The array of strings to be replaced.\n * @param {string[]} replace - The array of strings to replace with.\n * @returns {string} - The replaced string.\n */\nString.prototype.replaceArray = function (find: string[] | string, replace: string[] | string): string {\n\tlet replaceString = this;\n\tlet regex: RegExp;\n\tfor (let i = 0; i < find.length; i++) {\n\t\t//@ts-ignore\n\t\tregex = new RegExp(find[i], \"g\");\n\t\t//@ts-ignore\n\t\treplaceString = replaceString.replace(regex, replace[i]);\n\t}\n\t//@ts-ignore\n\treturn replaceString;\n};\n\n/**\n * Remove trailing spaces from the string.\n * @param {string} s - The character to remove from the end of the string. Default is a whitespace character.\n * @returns {string} - The string without trailing spaces.\n */\nString.prototype.rtrim = function (s: string = \"\\\\s\"): string {\n\treturn this.replace(new RegExp(\"[\" + s + \"]*$\"), '');\n};\n\n/**\n * Remove leading spaces from the string.\n * @param {string} s - The character to remove from the beginning of the string. Default is a whitespace character.\n * @returns {string} - The string without leading spaces.\n */\nString.prototype.ltrim = function (s: string = \"\\\\s\"): string {\n\treturn this.replace(new RegExp(\"^[\" + s + \"]*\"), '');\n};\n\n/**\n * Get only the digits from the string.\n * @returns {string} - The digits only from the string.\n */\nString.prototype.digitsOnly = function (): string {\n\t//@ts-ignore\n\treturn NumbersHelper.digitsOnly(this);\n};","\"use strict\";\n\nimport Config from \"./config\"\nimport Storage from \"./storage\"\nimport SallaCookies from \"./cookie\";\nimport Logger from \"./logger\";\nimport Emitter from \"./event\";\nimport helpers from \"./helpers\";\nimport UrlHelper from \"./helpers/url\";\nimport \"./helpers/string\"\n\nconst SallaBase = {\n Config,\n Logger,\n helpers,\n Emitter,\n Storage,\n SallaCookies,\n url: new UrlHelper(),\n log: new Logger().log,\n money: helpers.money,\n error: new Logger().error,\n isDebug: () => Config.getInstance().get('debug') || Storage.getInstance().get('debug'),\n status:'base',\n versions: {\n base: '[VI]{version}[/VI]'\n }\n}\n\nexport default SallaBase","import Cookies from \"universal-cookie\";\nimport { hasDocument } from \"./helpers/utils\";\nimport Emitter from \"./event\";\n\nexport default class SallaCookies extends Cookies {\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tlet sallaEvent = Emitter.getInstance();\n\t\tsallaEvent.on(\"cookies::remove\", (key) => this.remove(key));\n\t\tsallaEvent.on(\"cookies::add\", (key, value) => this.set(key, value));\n\t}\n\n\tclearAll() {\n\t\tif (hasDocument() && typeof document.cookie === 'string')\n\t\t\tdocument.cookie.split(';').forEach(function (c) {\n\t\t\t\tdocument.cookie = c\n\t\t\t\t\t.replace(/^ +/, '')\n\t\t\t\t\t.replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\n\t\t\t});\n\t\tconst allCookies = this.getAll();\n\t\tfor (let cookieName in allCookies) {\n\t\t\tthis.remove(cookieName);\n\t\t}\n\t}\n}"],"names":["setNested","object","key","value","schema","keys","split","len","length","i","elem","getNested","default_","data","defaultValue","Array","isArray","path","result","get","hasDocument","document","Config","default_properties","properties_","static","constructor","properties","this","getInstance","instance","merge","config","store","set","includes","currency","isoCode","Object","values","hasOwnProperty","all","isDebug","isGuest","isUser","create","assign","arguments","etc","each","obj","val","trim","slice","assignProps2","assignArgsList","slice$1","apply","concat","F","make_create","Global","String","prototype","str","call","replace","util","window","commonjsGlobal","create$1","bind","fn","map","each$5","pluck","isList$1","k","res","v","isList","isFunction","isObject","toString","Global$3","arr","index","util$4","storeEngine","createStore","_createStore","version","enabled","storage","optionalDefaultValue","_deserialize","read","_namespacePrefix","undefined","remove","write","_serialize","self","callback","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","namespace","addPlugin","_addPlugin","plugin","plugins","_namespace","storages","namespaceRegexp","namespacePrefix","legalNamespaces","RegExp","test","Error","_testStorage","testStr","e","_assignPluginFnProp","propName","pluginFnProp","oldFn","newFnArgs","args","arg","JSON","stringify","strVal","defaultVal","parse","_addStorage","seenPlugin","pluginProperties","each$4","name","_console","console","warn","log","_warn","_privateStoreProps","storeAPI","raw","prop","localStorage_1","localStorage","setItem","read$3","removeItem","clear","Global$2","getItem","sessionStorage_1","sessionStorage","read$2","Global$1","cookieStorage","_has","doc","escape","regexpStr","unescape","cookie","each$1","remove$1","_","cookies","kvp","memoryStorage","cachedClearTimeout","defaultClearTimeout","cachedSetTimeout","setTimeout","fun","clearTimeout","queueIndex","draining","currentQueue","queue","drainQueue","runTimeout","cleanUpNextTick","run","runClearTimeout","marker","timeout","Item","array","noop","addListener","once","off","removeListener","removeAllListeners","emit","binding","performanceNow","global","performance","getTime","now","mozNow","msNow","oNow","webkitNow","Date","startTime","nextTick","title","browser","env","argv","versions","on","cwd","chdir","umask","hrtime","platform","previousTimestamp","seconds","Math","nanoseconds","floor","clocktime","release","uptime","undefined$1","symbolsSupported","process","reflectSupported","Reflect","setImmediateSupported","_typeof","ownKeys","setImmediate","push","getOwnPropertySymbols","init","_events","configure","_conf","conf","delimiter","_maxListeners","maxListeners","newListener","wildcard","_newListener","verboseMemoryLeak","_removeListener","ignoreErrors","listenerTree","errorMsg","count","eventName","emitWarning","emitter","trace","a","b","c","n","toObject","valuesCount","TargetObserver","target","options","_target","_listeners","_listenersCount","addEventListener","removeEventListener","TypeError","_off","_observers","resolveOptions","reducers","allowUnknown","computedOptions","reducer","reject","option","reason","constructorReducer","makeTypeReducer","types","join","firstType","secondType","message","kind","subscribe","event","localEvent","observer","listeners","_emitter","handler","eventObj","original","_onNewListener","_event","_on","_onRemoveListener","hasListeners","unsubscribe","events","splice","clearRefs","objectFunctionReducer","Promise","executor","callbacks","timer","promise","subscriptionClosed","resolve","onCancel","overload","Number","isFinite","isCancelable","cleanup","cancel","err","_resolve","_reject","cb","code","findTargetIndex","observers","tree","handlers","type","typeLength","ns","l","j","dl","indexOf","xTree","xxTree","isolatedBranch","endReached","currentType","nextType","branches","branch","searchListenerTree","growListenerTree","listener","prepend","unshift","warned","logPossibleMemoryLeak","collectTreeEvents","root","asArray","branchName","isArrayPath","recursivelyGarbageCollect","flag","Listener","promisify","async","objectify","_listener","_origin","nextTickSupported","context","_setImmediate","then","EventEmitter","listenTo","listen","isSingleReducer","matched","setMaxListeners","_once","_many","many","ttl","prependMany","_all","containsSymbol","al","emitAsync","promises","onAny","_onAny","prependAny","returnValue","temp","leafs","iLeaf","leaf","position","offAny","fns","allListeners","nsAsArray","listenerCount","listenersAny","waitFor","filter","makeCancelablePromise","handleError","toArray","defaultMaxListeners","isNaN","enumerable","writable","errorListener","eventListener","configurable","amd","module","exports","Logger","_proxy","historyData","proxy","cons","__dict__","style","color","backend","debug","info","error","toUpperCase","substring","f","logs","flat","forEach","logData","history","eventemitter2","EventEmitter2","loggableEvents","ignoreLogEvents","nonFireableActions","logger","super","Emitter","createAndDispatch","dispatch","event_name","trackEvents","dataLayerObject","item","dataLayer","dispatchMobileEvent","dispatchEvents","entries","payload","details","page","mobileApp","webkit","messageHandlers","callbackHandler","postMessage","Android","customEventWithData","storageEngines","localStore","Storage","sallaEvent","firstKey","updatedParentObject","cleanValue","substr","doNotParse","Cookies","_this","defaultSetOptions","_classCallCheck","HAS_DOCUMENT_COOKIE","update","previousCookies","_checkChanges","domCookies","parseCookies","cookie__namespace","hasDocumentCookie","_createClass","changeListeners","params","_this2","newCookies","names","Set","_emitChange","readCookie","pollingInterval","setInterval","clearInterval","doNotUpdate","stringValue","_defineProperty","serialize","expires","maxAge","finalOptions","cookieStore","_startPolling","idx","_stopPolling","sallaLogger","number","num","isToEnglish","ar","en","find","regex","digitsOnly","getOnlyDecimal","dotsCount","match","NumbersHelper","inputDigitsOnly","input","is_decimal","querySelectorAll","el","new_val","min","parseInt","max","maxLength","dataset","money2","money","symbol","amount","isFullUrl","url","startsWith","getBase","URL","hostname","ltrim","storeUrl","location","href","rtrim","getDomain","addParamToUrl","endsWith","encodeURIComponent","baseUrl","origin","asset","cdn","api","isPage","pageName","isPlaceholder","isAValidUrl","getLabeledData","existedData","currentName","nameLabels","helpers","getInputDataWithName","nameLevels","UrlHelper","delay","resolves","r","toStudlyCase","t","toDatasetName","toSelector","replaceArray","replaceString","s","SallaCookies","toUTCString","allCookies","cookieName","status","base"],"mappings":"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"}
|