{"version":3,"file":"olp-custom-preset-list-min.js","mappings":"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","sources":["webpack://waves/./node_modules/charenc/charenc.js","webpack://waves/./node_modules/crypt/crypt.js","webpack://waves/./node_modules/is-buffer/index.js","webpack://waves/./node_modules/md5/md5.js","webpack://waves/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://waves/./node_modules/prop-types/index.js","webpack://waves/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://waves/./node_modules/shallowequal/index.js","webpack://waves/./node_modules/warning/warning.js","webpack://waves/webpack/bootstrap","webpack://waves/webpack/runtime/compat get default export","webpack://waves/webpack/runtime/define property getters","webpack://waves/webpack/runtime/global","webpack://waves/webpack/runtime/hasOwnProperty shorthand","webpack://waves/external var \"React\"","webpack://waves/external var \"ReactDOM\"","webpack://waves/./src/domain/common.ts","webpack://waves/./src/projects/shopping-cart/cart-bridger-pay/enums/cart-steps.ts","webpack://waves/./src/projects/products/enums/product-department-enum.ts","webpack://waves/./src/projects/shopping-cart/cart-bridger-pay/enums/last-payment-option-enum.ts","webpack://waves/./src/projects/shopping-cart/cart-bridger-pay/enums/payment-tabs-enum.ts","webpack://waves/./src/projects/shopping-cart/cart-bridger-pay/enums/credit-card-service-enum.ts","webpack://waves/./src/projects/shopping-cart/cart-bridger-pay/enums/credit-card-tab.ts","webpack://waves/./src/domain/validation/validation.ts","webpack://waves/./src/domain/marketing/gtm-provider.ts","webpack://waves/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://waves/./src/ui/svg/common/arrow.tsx","webpack://waves/./src/ui/svg/svg-provider.ts","webpack://waves/./src/domain/animations/animations-provider.ts","webpack://waves/./src/projects/galleries/gallery/gallery-provider.tsx","webpack://waves/./src/projects/galleries/gallery/gallery-item.tsx","webpack://waves/./src/projects/galleries/gallery/initial-loop-items.tsx","webpack://waves/./src/projects/galleries/gallery/gallery.tsx","webpack://waves/./node_modules/react-imgix/es/array-findindex.js","webpack://waves/./node_modules/react-imgix/es/config.js","webpack://waves/./node_modules/react-imgix/es/constants.js","webpack://waves/./node_modules/js-base64/base64.mjs","webpack://waves/./node_modules/ufo/dist/index.mjs","webpack://waves/./node_modules/@imgix/js-core/dist/index.esm.js","webpack://waves/./node_modules/react-imgix/es/constructUrl.js","webpack://waves/./node_modules/react-imgix/es/extractQueryParams.js","webpack://waves/./node_modules/react-imgix/es/HOCs/shouldComponentUpdateHOC.js","webpack://waves/./node_modules/react-imgix/es/HOCs/imgixProvider.js","webpack://waves/./node_modules/react-imgix/es/HOFs/propMerger.js","webpack://waves/./node_modules/react-imgix/es/HOFs/constants.js","webpack://waves/./node_modules/react-imgix/es/HOFs/propFormatter.js","webpack://waves/./node_modules/react-imgix/es/react-imgix.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://waves/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://waves/./node_modules/react-measure/dist/index.esm.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://waves/./node_modules/react-imgix/es/targetWidths.js","webpack://waves/./node_modules/react-imgix/es/react-imgix-bg.js","webpack://waves/./node_modules/react-imgix/es/findClosest.js","webpack://waves/./node_modules/react-imgix/es/index.js","webpack://waves/./src/projects/olp/common/common-enum.ts","webpack://waves/./src/ui/svg/common/social-icons/x.tsx","webpack://waves/./src/projects/olp/common/services/logic-provider.tsx","webpack://waves/./src/projects/olp/common/constants.ts","webpack://waves/./src/ui/svg/common/verified.tsx","webpack://waves/./src/projects/olp/common/components/creator-item.tsx","webpack://waves/./src/projects/olp/common/components/creator-list.tsx","webpack://waves/./src/ui/svg/common/link.tsx","webpack://waves/./src/ui/svg/common/drag-and-drop.tsx","webpack://waves/./src/projects/olp/common/svg/visit-chain-arrow.tsx","webpack://waves/./src/ui/svg/audio/stop-audio.tsx","webpack://waves/./src/ui/svg/audio/play-audio.tsx","webpack://waves/./src/DAL/data-provider.ts","webpack://waves/./src/projects/galleries/audio-base64/data-service.ts","webpack://waves/./src/projects/galleries/audio-base64/interfaces.ts","webpack://waves/./src/ui/svg/audio/play-audio-trian.tsx","webpack://waves/./src/projects/galleries/audio-base64/audio-base64.tsx","webpack://waves/./src/projects/olp/common/components/preset-visit-chain.tsx","webpack://waves/./src/ui/svg/common/heart.tsx","webpack://waves/./src/ui/svg/preset/preset-wsci.tsx","webpack://waves/./src/ui/svg/preset/preset-wscr.tsx","webpack://waves/./src/projects/olp/preset/components/preset-icons.tsx","webpack://waves/./src/projects/olp/common/components/preset.tsx","webpack://waves/./src/projects/olp/common/DAL/data-service.ts","webpack://waves/./src/ui/svg/common/close.tsx","webpack://waves/./src/ui/popup/popup.tsx","webpack://waves/./src/projects/olp/common/components/preset-list.tsx","webpack://waves/./src/projects/olp/custom-preset-list/index.tsx"],"sourcesContent":["var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const __WEBPACK_NAMESPACE_OBJECT__ = React;","const __WEBPACK_NAMESPACE_OBJECT__ = ReactDOM;","/**\r\n * get JSON from HTML element on the page\r\n */\r\nimport React, {useEffect, useState} from \"react\";\r\n\r\n\r\nexport const getJSONFromHtml = ($el: HTMLElement|null) => {\r\n if(!$el || !$el.textContent) return null;\r\n\r\n let json = null;\r\n\r\n try{\r\n json = JSON.parse($el.textContent);\r\n }\r\n catch(ex){}\r\n\r\n return json;\r\n};\r\n\r\n/**\r\n * get setting fromHTML\r\n *
...
\r\n */\r\nexport const getSettingFromHtml = (id: string) => {\r\n const $div = document.querySelector(`#${ id }`);\r\n if(!$div || !$div.textContent) return '';\r\n return $div.textContent.trim();\r\n};\r\n\r\n/**\r\n * helper: get GUID\r\n */\r\nconst guidHelper = () => {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n};\r\n\r\n/**\r\n * get GUID\r\n */\r\nexport const guid = () => {\r\n return guidHelper() + guidHelper() + '-' + guidHelper() + '-' + guidHelper() + '-' + guidHelper() + '-' + guidHelper() + guidHelper() + guidHelper();\r\n};\r\n\r\n/**\r\n * timeout in milliseconds\r\n */\r\nexport const timeout = (ms: number) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\n/**\r\n * get page node GUID from meta tag printed in HTML\r\n *
67633544-c1c1-4096-a3cc-880a96fe4713
\r\n */\r\nexport const getPageNodeGUID = () => {\r\n const $div = document.querySelector('#nodeguid');\r\n if(!$div || !$div.textContent) return '';\r\n return $div.textContent.trim();\r\n};\r\n\r\n/**\r\n * get img CDN domain\r\n */\r\nexport const getImgCDNDomain = () => {\r\n const $box = document.getElementById('img-cdn-domain');\r\n const domain = $box?.textContent || '';\r\n return domain.trim().toLowerCase();\r\n};\r\n\r\ndeclare const window: any;\r\nexport const isMobile = () => {\r\n let check = false;\r\n\r\n // eslint-disable-next-line\r\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) check = true;})( navigator.userAgent||navigator.vendor||window.opera);\r\n return check;\r\n};\r\nexport const isTablet_NOTWORK = () => {\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n const isTablet = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(userAgent);\r\n return isTablet;\r\n};\r\nexport const isTablet = () => {\r\n const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\r\n if (isTouchDevice && !isMobile()) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const stopAllYouTubeVideos = () => {\r\n // eslint-disable-next-line\r\n document.querySelectorAll('iframe').forEach(v => { v.src = v.src;});\r\n const cnt = document.querySelectorAll('iframe')?.length;\r\n if(cnt > 0){\r\n window.setTimeout(() => {\r\n window.history.go(cnt-1);\r\n }, 200);\r\n }\r\n //window.history.go(-1);\r\n}\r\n\r\n\r\nexport const getHashByPrefix = (toFind:string, indexToFind:number = 0) => {\r\n let result = \"\";\r\n const _hash = window.location.hash.substring(1);\r\n if(!_hash || _hash === '')\r\n return result;\r\n var a = decodeURIComponent(_hash).split(\"|\"),\r\n i;\r\n\r\n for (i = 0; i < a.length; i++) {\r\n\r\n if(i < indexToFind)\r\n continue;\r\n\r\n if(a[i].startsWith(toFind) || toFind === ''){\r\n result = a[i];\r\n return result;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const getParents = (elem: any) => {\r\n\r\n // Set up a parent array\r\n var parents = [];\r\n\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n parents.push(elem);\r\n }\r\n\r\n // Return our parent array\r\n return parents;\r\n\r\n};\r\nexport const isChildOfElementById = (elem: any, parentId: string) => {\r\n\r\n let res = false;\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n if(elem.id && elem.id === parentId)\r\n res = true;\r\n }\r\n\r\n // Return our parent array\r\n return res;\r\n\r\n};\r\n//Hook for dynamic window size\r\nexport const useWindowSize = () => {\r\n\r\n // Initialize state with undefined width/height so server and client renders match\r\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\r\n const [windowSize, setWindowSize] = useState({\r\n width: undefined,\r\n height: undefined,\r\n });\r\n useEffect(() => {\r\n // Handler to call on window resize\r\n function handleResize() {\r\n // Set window width/height to state\r\n setWindowSize({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n }\r\n // Add event listener\r\n window.addEventListener(\"resize\", handleResize);\r\n // Call handler right away so state gets updated with initial window size\r\n handleResize();\r\n // Remove event listener on cleanup\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, []); // Empty array ensures that effect is only run on mount\r\n\r\n return windowSize;\r\n\r\n};\r\n//Hook for detect if HTML element is overflow\r\nexport const useIsOverflow = (ref : any) => {\r\n const [isOverflow, setIsOverflow] = React.useState(false);\r\n\r\n React.useLayoutEffect(() => {\r\n const { current } = ref;\r\n\r\n const trigger = () => {\r\n const hasOverflow = current.scrollWidth > current.clientWidth;\r\n\r\n setIsOverflow(hasOverflow);\r\n\r\n //if (callback) callback(hasOverflow);\r\n };\r\n\r\n if (current) {\r\n trigger();\r\n }\r\n }, [ ref]);\r\n\r\n return isOverflow;\r\n};\r\n\r\nexport const openWindowPopup = (url: string, title: string, width: number, height: number) => {\r\n const left = (window.screen.width / 2) - (width / 2);\r\n const top = (window.screen.height / 2) - (height / 2);\r\n return window.open(\r\n url,\r\n title,\r\n `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=${ width }, height=${ height }, top=${ top }, left=${ left }`\r\n );\r\n};","export enum CartSteps {\r\n First = 1,\r\n Second = 2,\r\n Third = 3,\r\n}","export enum ProductDepartmentEnum {\r\n Bundles = 1,\r\n Plugins = 2,\r\n General = 5,\r\n Books = 6,\r\n InactiveItems = 7,\r\n LiveSound = 8,\r\n Hardware = 9,\r\n Software = 10,\r\n Subscription = 12,\r\n Consumer = 13,\r\n RentToOwnDynamic = 14,\r\n RentToOwnStatic = 15,\r\n Merch = 16,\r\n WavesUpdatePlan = 17,\r\n Upgrades = 18,\r\n Courses = 19,\r\n SubscriptionDynamic = 20,\r\n Gifts = 21,\r\n CoursesWithSoftware = 22,\r\n SubscriptionNonRecurring = 23,\r\n Mastering = 24,\r\n}","/**\r\n * https://wavesaudio.atlassian.net/browse/DSWEB-3278\r\n * ap = alipay, pp = paypal, cc = credit card, null = no previous purchase\r\n */\r\nexport enum LastPaymentOption {\r\n NONE = '',\r\n CreditCard = 'cc',\r\n PayPal = 'pp',\r\n AliPay = 'ap',\r\n}","export enum PaymentTabsEnum {\r\n CreditCard = 1,\r\n PayPal = 2,\r\n AliPay = 3,\r\n}","export enum CreditCardServiceEnum {\r\n None = 0,\r\n FirstData = 1,\r\n Pinnacle = 2,\r\n Stripe = 3\r\n}","export enum CreditCardTabTabsEnum {\r\n NewCreditCard = 1,\r\n SavedCreditCards = 2,\r\n}","import { IValidationRules } from './interfaces';\r\nimport { ClipboardEvent, Dispatch } from 'react';\r\nimport { IFormControl } from '../../ui/forms/interfaces';\r\nimport { getDecimalPlaces, isNumber } from '../math-provider';\r\n\r\n/**\r\n * Validation\r\n * ----------\r\n const userNameControl = createControl('userName', '', {\r\n required: true // required also can be a function\r\n requiredMessage: '...', // optional\r\n\r\n regex: string,\r\n regexMessage: '...', // optional\r\n\r\n email: true,\r\n emailMessage: '...', // optional\r\n\r\n name: true,\r\n nameMessage: '...', // optional\r\n\r\n password: true,\r\n passwordMessage: '...', // optional\r\n\r\n minlength: number, // minlength also can be a function\r\n minlengthMessage: '...', // optional\r\n\r\n maxlength: number, // maxlength also can be a function\r\n maxlengthMessage: '...', // optional\r\n\r\n minValue: number,\r\n minValueMessage: '...', // optional\r\n\r\n maxValue: number,\r\n maxValueMessage: '...', // optional\r\n\r\n length: number,\r\n lengthMessage: '...', // optional\r\n\r\n phone: true,\r\n phoneMessage: '...', // optional\r\n\r\n int: true,\r\n intMessage: '...', // optional\r\n\r\n number: true,\r\n numberMessage: '...', // optional\r\n\r\n general: (control) => false,\r\n generalMessage: '...',\r\n\r\n decimalPlaces: 2,\r\n decimalPlacesMessage: '...', // optional\r\n });\r\n const [userName, setUserName] = useState(userNameControl);\r\n */\r\n\r\nconst defaultMessages = {\r\n requiredMessage: 'This field is required.',\r\n regexMessage: 'This field is wrong.',\r\n emailMessage: 'Please enter a valid email address. Use letters (a-z), numbers, and the following characters: + - _ @ . only',\r\n nameMessage: 'Please use letters (a-z), numbers, spaces, and the following characters: - _ . ,\\' / # \" only.',\r\n passwordMessage: 'Please enter a mix of at least 8 characters, including at least one of each group: a-z, A-Z, 0-9, special characters (e.g. ! @ #).',\r\n minlengthMessage: 'Please enter at least $1 character$2.',\r\n maxlengthMessage: 'Please enter at most $1 character$2.',\r\n lengthMessage: 'Please enter $1 character$2.',\r\n phoneMessage: 'Invalid phone number.',\r\n intMessage: 'Please enter a valid number.',\r\n dateMessage: 'Please enter a valid date.',\r\n numberMessage: 'Please enter a valid number.',\r\n generalMessage: 'An error has occurred.',\r\n atLeastOneDigitMessage: 'At least one letter or digit is required.',\r\n handleMessage: 'Please use letters letters (a-z), numbers, and the following characters: - _ . only.',\r\n decimalPlacesMessage: 'Number of decimal places should be no more than $1.',\r\n maxValueMessage: 'The maximum value cannot exceed $1',\r\n minValueMessage: 'The minimum value cannot be less than $1',\r\n};\r\n\r\nexport const emailRegex = '^([a-zA-Z0-9_\\\\.\\\\-\\\\+]+)@([a-zA-Z0-9_\\\\-\\\\+\\\\.]+)((\\\\.([a-zA-Z0-9_\\\\-\\\\+]){2,20})+)$';\r\n\r\n/**\r\n * create form control\r\n */\r\nexport const createControl = (id: string, initialValue: any, rules: IValidationRules) : IFormControl => {\r\n return {\r\n id,\r\n value: initialValue,\r\n touched: false,\r\n isValid: true,\r\n error: '',\r\n rules: rules || []\r\n }\r\n};\r\n\r\n/**\r\n * validate form control\r\n */\r\nexport const validateControl = (control: IFormControl) : IFormControl => {\r\n\r\n const updatedControl : IFormControl = {\r\n ...control,\r\n isValid: true,\r\n error: '',\r\n };\r\n \r\n const rules = control.rules;\r\n\r\n // required ---------------------\r\n if(updatedControl.isValid && rules.required){\r\n if(typeof rules.required === 'function'){\r\n updatedControl.isValid = updatedControl.isValid && rules.required(updatedControl);\r\n }\r\n else{\r\n const _value = (typeof updatedControl.value === 'string') ? (updatedControl.value || '').trim() : updatedControl.value;\r\n updatedControl.isValid = updatedControl.isValid && !!_value;\r\n }\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.requiredMessage || defaultMessages.requiredMessage;\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // handle ---------------------\r\n if(updatedControl.isValid && rules.handle){\r\n\r\n const handleRegex = '^[a-zA-Z0-9-_\\\\.]+$';\r\n const re = new RegExp(handleRegex);\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.toString().trim() === '' || re.test(updatedControl.value));\r\n\r\n if(!updatedControl.isValid){\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.handleMessage || defaultMessages.handleMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // minlength -------------------------\r\n if(updatedControl.isValid && rules.minlength){\r\n\r\n const minlength = typeof rules.minlength === 'function' ? rules.minlength() : rules.minlength;\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.length <= 0 || updatedControl.value.length >= minlength);\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.minlengthMessage || defaultMessages.minlengthMessage;\r\n updatedControl.error = updatedControl.error.replace('$1', minlength.toString());\r\n updatedControl.error = updatedControl.error.replace('$2', minlength === 1 ? '' : 's');\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // maxlength ---------------------\r\n if(updatedControl.isValid && rules.maxlength){\r\n\r\n const maxlength = typeof rules.maxlength === 'function' ? rules.maxlength() : rules.maxlength;\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.length <= maxlength);\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.maxlengthMessage || defaultMessages.maxlengthMessage;\r\n updatedControl.error = updatedControl.error.replace('$1', maxlength.toString());\r\n updatedControl.error = updatedControl.error.replace('$2', maxlength === 1 ? '' : 's');\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // length ---------------------\r\n if(updatedControl.isValid && rules.length){\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.length === rules.length);\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.lengthMessage || defaultMessages.lengthMessage;\r\n updatedControl.error = updatedControl.error.replace('$1', rules.length.toString());\r\n updatedControl.error = updatedControl.error.replace('$2', rules.length === 1 ? '' : 's');\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // decimalPlaces ---------------------\r\n if(updatedControl.isValid && rules.decimalPlaces !== undefined && Number.isInteger(rules.decimalPlaces)){\r\n\r\n updatedControl.isValid = updatedControl.isValid && (getDecimalPlaces(Number(updatedControl.value)) <= rules.decimalPlaces);\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.decimalPlacesMessage || defaultMessages.decimalPlacesMessage;\r\n updatedControl.error = updatedControl.error.replace('$1', rules.decimalPlaces.toString());\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // email ---------------------\r\n if(updatedControl.isValid && rules.email){\r\n const re = new RegExp(emailRegex);\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.trim() === '' || re.test(updatedControl.value));\r\n\r\n if(updatedControl.isValid){\r\n updatedControl.isValid = updatedControl.value.indexOf('..') === -1;\r\n }\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.emailMessage || defaultMessages.emailMessage;\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // name ---------------------\r\n if(updatedControl.isValid && rules.name){\r\n\r\n const nameRegex = '^[a-zA-Z0-9-_\\\\.\\\\,\\\\/#\\'\\\\\" ]+$';\r\n const re = new RegExp(nameRegex);\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.trim() === '' || re.test(updatedControl.value));\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.nameMessage || defaultMessages.nameMessage;\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // password ---------------------\r\n if(updatedControl.isValid && rules.password){\r\n\r\n let isValid = true;\r\n\r\n if(updatedControl.value.length < 8){\r\n isValid = false;\r\n }\r\n else{\r\n const regexes = [/[0-9]+/, /[a-z]+/, /[A-Z]+/, /[^A-Za-z0-9]+/];\r\n\r\n for (let r = 0; r < regexes.length; r++){\r\n\r\n if ((updatedControl.value.match(regexes[r]) || []).length <= 0){\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.trim() === '' || isValid);\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.passwordMessage || defaultMessages.passwordMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // regex ---------------------\r\n if(updatedControl.isValid && rules.regex){\r\n\r\n const re = new RegExp(rules.regex);\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.trim() === '' || re.test(updatedControl.value));\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.regexMessage || defaultMessages.regexMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // phone ---------------------\r\n if(updatedControl.isValid && rules.phone){\r\n\r\n const intRegex = /^[0-9]{5,12}$/;\r\n const onlyZerosRegex = /^0+$/;\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.toString().trim() === '' || (intRegex.test(updatedControl.value) && !onlyZerosRegex.test(updatedControl.value)));\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.phoneMessage || defaultMessages.phoneMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // number ---------------------\r\n if(updatedControl.isValid && rules.number){\r\n\r\n const isNumeric = !isNaN(parseFloat(updatedControl.value)) && isFinite(updatedControl.value);\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.toString().trim() === '' || isNumeric);\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.numberMessage || defaultMessages.numberMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // int ---------------------\r\n if(updatedControl.isValid && rules.int){\r\n\r\n const intRegex = '^[0-9]+$';\r\n const re = new RegExp(intRegex);\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.toString().trim() === '' || re.test(updatedControl.value));\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.intMessage || defaultMessages.intMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // minDate - min date value ---------------------\r\n if(updatedControl.isValid && rules.minDate){\r\n //if the field is required and the filed is empty or null --> valid\r\n const validEmpty = (updatedControl.value === null || updatedControl.value.length === 0) && !rules.required;\r\n\r\n if(validEmpty){\r\n updatedControl.isValid = true;\r\n }else{\r\n const min = new Date(rules.minDate);\r\n updatedControl.isValid = min < new Date(updatedControl.value);\r\n }\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.minDateMessage || defaultMessages.dateMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // maxDate - max date value ---------------------\r\n if(updatedControl.isValid && rules.maxDate){\r\n //if the field is required and the filed is empty or null --> valid\r\n const validEmpty = (updatedControl.value === null || updatedControl.value.length === 0) && !rules.required;\r\n\r\n if(validEmpty){\r\n updatedControl.isValid = true;\r\n }else{\r\n const max = new Date(rules.maxDate);\r\n updatedControl.isValid = max > new Date(updatedControl.value);\r\n }\r\n\r\n\r\n if(!updatedControl.isValid){\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.maxDateMessage || defaultMessages.dateMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n\r\n // maxValue ---------------------\r\n if(updatedControl.isValid && rules.maxValue){\r\n\r\n const maxValue = typeof rules.maxValue === 'function' ? rules.maxValue() : rules.maxValue;\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value <= maxValue);\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.maxValueMessage || defaultMessages.maxValueMessage;\r\n updatedControl.error = updatedControl.error.replace('$1', maxValue.toString());\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // minValue ---------------------\r\n if(updatedControl.isValid && isNumber(rules.minValue)){\r\n\r\n const minValue = typeof rules.minValue === 'function' ? rules.minValue() : (rules.minValue ?? 0);\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value >= minValue);\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.minValueMessage || defaultMessages.minValueMessage;\r\n updatedControl.error = updatedControl.error.replace('$1', minValue.toString());\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // general ---------------------\r\n if(updatedControl.isValid && rules.general){\r\n\r\n if(typeof rules.general === 'function'){\r\n updatedControl.isValid = updatedControl.isValid && rules.general(updatedControl);\r\n }\r\n\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.generalMessage || defaultMessages.generalMessage;\r\n return updatedControl;\r\n }\r\n }\r\n\r\n // atLeastOneDigit ---------------------\r\n if(updatedControl.isValid && rules.atLeastOneDigit){\r\n\r\n const atLeastOneDigitRegex = '.*[A-Za-z0-9].*';\r\n const re = new RegExp(atLeastOneDigitRegex);\r\n\r\n updatedControl.isValid = updatedControl.isValid && (updatedControl.value.toString().trim() === '' || re.test(updatedControl.value));\r\n\r\n if(!updatedControl.isValid){\r\n if(!updatedControl.isValid){\r\n updatedControl.error = rules.atLeastOneDigitMessage || defaultMessages.atLeastOneDigitMessage;\r\n return updatedControl;\r\n }\r\n\r\n return updatedControl;\r\n }\r\n }\r\n\r\n return updatedControl;\r\n};\r\n\r\n/**\r\n * validate form\r\n */\r\nexport const validateForm = (params: ([IFormControl, Dispatch])[], errorControlsListHolder: IFormControl[] = []) => {\r\n\r\n let isValid = true;\r\n\r\n for(let i=0; i= 2){\r\n const setControl = param[1] as Dispatch;\r\n if(typeof setControl === 'function'){\r\n setControl(control);\r\n }\r\n }\r\n\r\n if(!control.isValid){\r\n // console.log('Non valid control', control)\r\n isValid = false;\r\n errorControlsListHolder.push(control);\r\n }\r\n }\r\n\r\n return isValid;\r\n};\r\n\r\n/**\r\n * update form control\r\n */\r\nexport const updateControl = (control: IFormControl, updatedValue: any, validate = false, reset = false) : IFormControl => {\r\n\r\n let updatedControl: IFormControl = {\r\n ...control,\r\n touched: true,\r\n value: updatedValue\r\n };\r\n\r\n if(reset) {\r\n updatedControl.touched = false;\r\n updatedControl.isValid = true;\r\n updatedControl.error = '';\r\n }\r\n\r\n if(validate) {\r\n // perform control validation, update the relevant properties\r\n updatedControl = validateControl(updatedControl);\r\n }\r\n\r\n return updatedControl;\r\n};\r\n\r\n/**\r\n * scroll to the first error\r\n */\r\nexport const scrollToFirstErrorControl = (errorControls: IFormControl[]) => {\r\n\r\n if(!errorControls || errorControls.length <= 0) return;\r\n\r\n const firstErrorControl = errorControls[0];\r\n const $control = document.getElementById(firstErrorControl.id);\r\n\r\n if(!$control) return;\r\n\r\n $control.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n\r\n $control.focus();\r\n};\r\n\r\n// eslint-disable-next-line\r\nconst invisibleCharactersRegex = /[\\0-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u037F-\\u0383\\u038B\\u038D\\u03A2\\u0528-\\u0530\\u0557\\u0558\\u0560\\u0588\\u058B-\\u058E\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EF\\u05F5-\\u0605\\u061C\\u061D\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB-\\u07FF\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F-\\u089F\\u08A1\\u08AD-\\u08E3\\u08FF\\u0978\\u0980\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FC-\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0C00\\u0C04\\u0C0D\\u0C11\\u0C29\\u0C34\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5A-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C80\\u0C81\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0D01\\u0D04\\u0D0D\\u0D11\\u0D3B\\u0D3C\\u0D45\\u0D49\\u0D4F-\\u0D56\\u0D58-\\u0D5F\\u0D64\\u0D65\\u0D76-\\u0D78\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F5-\\u13FF\\u169D-\\u169F\\u16F1-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180F\\u181A-\\u181F\\u1878-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191D-\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C80-\\u1CBF\\u1CC8-\\u1CCF\\u1CF7-\\u1CFF\\u1DE7-\\u1DFB\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20BB-\\u20CF\\u20F1-\\u20FF\\u218A-\\u218F\\u23F4-\\u23FF\\u2427-\\u243F\\u244B-\\u245F\\u2700\\u2B4D-\\u2B4F\\u2B5A-\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E3C-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u312E-\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FCD-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA698-\\uA69E\\uA6F8-\\uA6FF\\uA78F\\uA794-\\uA79F\\uA7AB-\\uA7F7\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C5-\\uA8CD\\uA8DA-\\uA8DF\\uA8FC-\\uA8FF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9E0-\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAA7C-\\uAA7F\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F-\\uABBF\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE27-\\uFE2F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF]/g;\r\n\r\n/**\r\n * remove invisible characters;\r\n * used on paste events in forms\r\n */\r\nexport const removeInvisibleChars = (text: string) => {\r\n return text.replace(invisibleCharactersRegex, '');\r\n};\r\n\r\n/**\r\n * remove invisible characters;\r\n * used on paste events in forms\r\n */\r\nexport const removeInvisibleCharsOnPaste = (evt: ClipboardEvent) => {\r\n evt.preventDefault();\r\n\r\n const $target = evt.target as HTMLInputElement;\r\n const currentFieldValue = $target ? ($target.value ?? '') : '';\r\n\r\n // get clipboard data if exists --------\r\n // @ts-ignore\r\n const clipboardData = evt.clipboardData || window.clipboardData;\r\n if(!clipboardData) return currentFieldValue;\r\n\r\n const data = evt.clipboardData.getData('text');\r\n if(!data) return '';\r\n\r\n const pasteText = removeInvisibleChars(data.trim());\r\n\r\n // handle partial and whole selections ----------\r\n const start = currentFieldValue.substring(0, $target.selectionStart ?? 0);\r\n const end = currentFieldValue.substring($target.selectionEnd ?? currentFieldValue.length, currentFieldValue.length);\r\n return start + pasteText + end;\r\n};\r\n\r\n/* let paste = (event.clipboardData || window.clipboardData).getData('text');\r\n paste = paste.toUpperCase();\r\n const selection = window.getSelection();\r\n if (!selection.rangeCount) return;\r\n selection.deleteFromDocument();\r\n selection.getRangeAt(0).insertNode(document.createTextNode(paste));\r\n selection.collapseToEnd();*/","/**\r\n * Allows to TypeScript recognize google tag manager namespace\r\n */\r\nimport {IListItem} from \"../../projects/list-page/interfaces/interfaces\";\r\nimport { CartSteps } from '../../projects/shopping-cart/cart-bridger-pay/enums/cart-steps';\r\nimport { ICartData } from '../../projects/shopping-cart/cart-bridger-pay/interfaces';\r\nimport { getHiddenDataNumber, getHiddenDataString } from '../hidden-data-provider';\r\nimport { IOrder } from '../../projects/shopping-cart/cart-thank-you/interfaces';\r\nimport { getExpectedLTV } from '../../projects/shopping-cart/cart-bridger-pay/domain/shopping-cart-provider';\r\n\r\ndeclare global {\r\n interface Window {\r\n dataLayer: any;\r\n }\r\n}\r\n\r\ninterface IGAProduct{\r\n name: string,\r\n id: string,\r\n price: number,\r\n category: string,\r\n variant: string,\r\n list: string,\r\n}\r\n\r\ninterface IGAImpression {\r\n name: string,\r\n id: string,\r\n price: number,\r\n category: string,\r\n variant: string,\r\n list: string,\r\n position: number,\r\n}\r\n\r\ninterface IActionField{\r\n list: string,\r\n}\r\n\r\ninterface ICheckoutActionField {\r\n step: number,\r\n option?: number,\r\n}\r\n\r\n/**\r\n * send data to GTM after registration\r\n */\r\nexport const gtmCreateAccount = (referrer = 'from Signup form') => {\r\n if(!window.dataLayer) return;\r\n\r\n window.dataLayer.push({\r\n 'GA_event_category': 'Registration',\r\n 'GA_event_action': 'New account',\r\n 'GA_event_label': referrer,\r\n 'event': 'GTM event To GA'\r\n });\r\n};\r\n\r\n/**\r\n * send google analytics track event\r\n * @param {string} eventTitle - event title (data-gaevent=\"Click\")\r\n * @param {string} eventValue - event value (data-gavalue=\"...\")\r\n */\r\nexport const sendGAEvent = (eventTitle: string, eventValue: string) => {\r\n\r\n if(!window.dataLayer) return;\r\n\r\n window.dataLayer.push({\r\n 'GA_event_action': eventTitle\r\n , 'GA_event_category': window.location.pathname\r\n , 'GA_event_label': eventValue\r\n , 'event': 'GTM event To GA'\r\n });\r\n};\r\n\r\n/**\r\n * get category from url\r\n */\r\nexport const getCategoryFromURL = (url: string) => {\r\n\r\n if(!url) return '';\r\n\r\n const idx = url.lastIndexOf('/');\r\n\r\n if(idx !== -1){\r\n return url.substring(0, url.lastIndexOf('/')).replace('/', '');\r\n }\r\n\r\n return '';\r\n};\r\n\r\n/**\r\n * send product clicks to the gtm\r\n */\r\nexport const sendGaEventImpressions = (impressions: IGAImpression[]) => {\r\n\r\n if(!window.dataLayer || !impressions || impressions.length <= 0) return;\r\n\r\n window.dataLayer.push({\r\n event: 'ProductImpression'\r\n ,ecommerce: {\r\n currencyCode: 'USD' //local currency is optional\r\n ,impressions: impressions\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * send product details to the gtm\r\n */\r\nexport const sendGaEventProductDetails = (analyticsData: { price: number; name: string; id: string; category: string }[]) => {\r\n\r\n if(!window.dataLayer || !analyticsData || analyticsData.length <= 0) return;\r\n\r\n window.dataLayer.push({\r\n event: 'productDetail'\r\n ,ecommerce: {\r\n detail: {\r\n products: analyticsData\r\n }\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * send product clicks to the gtm\r\n * actionField - {list: 'List Page'} (Product Page Tab / List Page / Shopping Cart Gallery / Homepage)\r\n */\r\nexport const sendGaEventProductClick = (actionField: IActionField, products: IGAProduct[]) => {\r\n\r\n if(!window.dataLayer || !products || products.length <= 0) return;\r\n\r\n window.dataLayer.push({\r\n event: 'productClick'\r\n ,ecommerce: {\r\n click: {\r\n actionField: actionField\r\n ,products: products\r\n }\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * send Google Analytics list page event\r\n */\r\nexport const sendGAListPageEvent = (product: IListItem, listName: string = 'List Page') => {\r\n\r\n const title = product.title ? product.title : listName;\r\n\r\n const item = {\r\n name: product.documentName\r\n ,id: product.skuNumber\r\n ,price: product.skuPrice\r\n ,category: getCategoryFromURL(product.documentUrlPath)\r\n ,variant: 'NONE'\r\n ,list: title\r\n };\r\n\r\n sendGaEventProductClick({list: title}, [item]);\r\n};\r\n\r\n/**\r\n * send page type event to google analytics according to the following meta on the page:\r\n * \r\n */\r\nexport const sendGAPageTypeEvent = () => {\r\n\r\n if(!window.dataLayer) return;\r\n\r\n const $meta = document.querySelector('meta[property=\"google-ecomm-pagetype\"]');\r\n if(!$meta) return;\r\n\r\n window.dataLayer.push({\r\n pageType: $meta.getAttribute('content') || '',\r\n });\r\n};\r\n\r\n/**\r\n * send GA user guid event from the following hidden field:\r\n *
@ViewBag.LayoutModel.GA_GUID
\r\n */\r\nexport const sendGAWavesUserGuidEvent = (gaGuid = '') => {\r\n if(!window.dataLayer) return;\r\n\r\n window['dataLayer'].push({\r\n 'waves-user-guid': gaGuid || getHiddenDataString('ga-user-guid'),\r\n });\r\n};\r\n\r\n/**\r\n * This event is sent when user clicks on 'proceed to checkout' button on each cart step.\r\n */\r\nexport const sendGaCheckoutEvent = (cartStep: CartSteps, cartData: ICartData) => {\r\n\r\n if(!window.dataLayer) return;\r\n\r\n if(cartStep === CartSteps.Third){\r\n\r\n window.dataLayer.push({\r\n 'GA_event_action': 'Payment Method'\r\n ,'GA_event_category': document.location.pathname\r\n ,'GA_event_label': 'Credit Card'\r\n ,'event': 'GTM event To GA'\r\n });\r\n }\r\n\r\n const actionField: ICheckoutActionField = {\r\n step: cartStep,\r\n };\r\n\r\n if(cartStep === CartSteps.First) {\r\n actionField.option = cartData.cartItems.reduce((total, cur) => total + cur.skuUnits, 0);\r\n }\r\n\r\n const products: any[] = cartData.cartItems.filter(cartItem => cartItem.isActive).map(cartItem => {\r\n return {\r\n skuid:\tcartItem.skuid,\r\n skuDepartment:\tcartItem.skuDepartmentID,\r\n skuDepartmentName:\tcartItem.departmentName, //'plugins',\r\n skuguid: cartItem.skuguid,\r\n name: cartItem.skuName,\r\n skunumber:\tcartItem.skuNumber,\r\n skuNeedsShipping:\tcartItem.skuNeedsShipping,\r\n //isSBL:\tfalse,\r\n //isPDL:\tfalse,\r\n //img:\t'/1lib/images/products/plugins/tiny/clarity-vx.png',\r\n thumb:\tcartItem.skuThumb,\r\n quantity:\tcartItem.skuUnits,\r\n price:\tcartItem.priceData.price,\r\n upsell:\tcartItem.priceData.discount,\r\n msrp:\tcartItem.skU_MSRP,\r\n yousave: cartItem.priceData.discount,\t//119.01,\r\n producttotal: cartItem.priceData.price * cartItem.skuUnits,\r\n link:\tcartItem.documentUrlPath,\r\n cartComment: cartItem.cartComment,\r\n skuEnabled:\tcartItem.skuEnabled,\r\n //mvrDiscountPrice:\t0,\r\n //mvrItemDiscount:\t0,\r\n pricega: cartItem.priceData.price,\r\n }\r\n })\r\n\r\n window['dataLayer'].push({\r\n event: 'checkout',\r\n CartValue: cartData.priceData.totalPrice,\r\n ecommerce: {\r\n checkout: {\r\n actionField: actionField,\r\n products,\r\n }\r\n }\r\n });\r\n};\r\n\r\nexport const sendGATransactionTriggerEventHelper = (orderData: IOrder) => {\r\n\r\n if(!window.dataLayer) return;\r\n\r\n const products: any[] = [];\r\n\r\n for(let orderItem of orderData.orderItems){\r\n products.push({\r\n 'name': orderItem.orderItemSKUName,\r\n 'id': orderItem.skuNumber,\r\n 'price': orderItem.discountPrice,\r\n 'brand': 'Waves',\r\n 'category': (orderItem.departmentDisplayName ?? '').toLowerCase(),\r\n 'quantity': orderItem.orderItemUnitCount,\r\n });\r\n }\r\n\r\n if(orderData.upsellDiscount > 0){\r\n\r\n products.push({\r\n 'name': 'Discount',\r\n 'price': -orderData.upsellDiscount,\r\n 'brand': 'Waves',\r\n 'quantity': 1,\r\n });\r\n }\r\n\r\n window.dataLayer.push({\r\n event: 'TransactionTrigger'\r\n ,PaymentMethod: orderData.fundSourceType // 'Credit Card / PayPal / AliPay / Splitit'\r\n\r\n ,ecommerce: {\r\n purchase: {\r\n 'actionField': {\r\n 'id': orderData.wavesReceiptID,\r\n 'affiliation': 'Online Store',\r\n 'revenue': orderData.totalPrice - orderData.taxPrice - orderData.shippingTaxPrice,\r\n 'tax': orderData.taxPrice + orderData.shippingTaxPrice,\r\n 'shipping': orderData.shippingPrice,\r\n },\r\n products,\r\n }\r\n }\r\n });\r\n\r\n};\r\n\r\n/**\r\n * This event is sent on 'thank you' page only after the real purchase.\r\n */\r\nexport const sendGATransactionTriggerEvent = (orderData: IOrder) => {\r\n sendGATransactionTriggerEventHelper(orderData);\r\n\r\n window.dataLayer.push({\r\n event: getExpectedLTV(orderData) > 0 ? 'TransactionTriggerSBS' : 'TransactionTriggerPerpetual',\r\n });\r\n};\r\n\r\nexport const sendThankYouDataToGTM = (orderData: IOrder) => {\r\n if(!window.dataLayer) return;\r\n\r\n const quantity = orderData.orderItems.reduce(\r\n (previousQty, orderItem) => previousQty + orderItem.orderItemUnitCount,\r\n 0\r\n );\r\n\r\n window.dataLayer.push({\r\n 'quantity': quantity,\r\n 'receiptid': orderData.wavesReceiptID,\r\n 'priceWithoutTaxAndShipping': getHiddenDataNumber('price-without-tax-and-shipping'),\r\n 'OrderID': orderData.orderID,\r\n 'email': orderData.email,\r\n 'yotpo-api-key': getHiddenDataString('yotpo-api-key'),\r\n 'expectedLTV': getExpectedLTV(orderData),\r\n });\r\n};\r\n\r\n/**\r\n * send data to gtm every time when product is added to cart\r\n */\r\nexport const sendGAEventAddToCart = (\r\n documentName: string,\r\n skuNumber: string,\r\n skuPrice: number,\r\n documentUrlPath: string,\r\n list: string = '',\r\n) => {\r\n\r\n if(!window.dataLayer) return;\r\n\r\n const data = {\r\n event: 'addToCart'\r\n ,ecommerce: {\r\n currencyCode: 'USD'\r\n ,add: {\r\n products: [\r\n {\r\n name: documentName\r\n ,id: skuNumber\r\n ,price: skuPrice\r\n ,variant: 'NONE'\r\n ,quantity: 1\r\n ,category: getCategoryFromURL(documentUrlPath)\r\n }\r\n ],\r\n }\r\n }\r\n };\r\n\r\n if(list){\r\n // @ts-ignore\r\n data.ecommerce.add.actionField = { list, };\r\n }\r\n\r\n window.dataLayer.push(data);\r\n};\r\n\r\n/**\r\n * https://wavesaudio.atlassian.net/browse/DSWEB-1143\r\n * Edited by Raz Liveyatan, 04.11.2021\r\n * Migrated by Raz Liveyatan, 27.06.2022\r\n * send page view to the gtm\r\n * @param {any} PageViewObject\r\n */\r\nexport const sendGaPageView = (PageViewObject:any) => {\r\n\r\n if(!window.dataLayer || !PageViewObject) return;\r\n\r\n window.dataLayer.push({\r\n event: 'pageview',\r\n page: {\r\n path: PageViewObject.pageLocation,\r\n title: PageViewObject.title\r\n }\r\n });\r\n};\r\n\r\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import React, { CSSProperties, useEffect, useState } from 'react';\r\nimport { getSVGHeight } from '../svg-provider';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst ArrowIcon = (props: IIconProps) => {\r\n\r\n const [ height, setHeight ] = useState(props.height);\r\n const [ style, setStyle ] = useState();\r\n\r\n const { width, rotationAngle } = props;\r\n\r\n useEffect(() => {\r\n\r\n // if height property is not defined, and width & height should be defined in px ->\r\n // calculate the height dynamically, keeping the aspect ratio using the viewport\r\n if(height === undefined && width.endsWith('px')){\r\n setHeight(getSVGHeight(width, 11, 7));\r\n }\r\n\r\n if(!isNaN(Number(rotationAngle))){\r\n const angle = `rotate(${ rotationAngle }deg)`;\r\n\r\n const style = props.style ? { ...props.style } : {};\r\n style.WebkitTransform = angle;\r\n style.msTransform = angle;\r\n style.transform = angle;\r\n\r\n setStyle(style)\r\n }\r\n }, [height, width, rotationAngle, props.style]);\r\n\r\n return (\r\n \r\n { props.title && { props.title } }\r\n \r\n )\r\n};\r\n\r\nexport default ArrowIcon;\r\n","/**\r\n * get image height based on width and viewport\r\n */\r\nexport const getSVGHeight = (width: string, viewPortWidth: number, viewPortHeight: number) => {\r\n const widthNum = Number(width.replace('px', ''));\r\n return`${ widthNum * viewPortHeight / viewPortWidth }px`;\r\n};","import { useEffect, useRef, useState } from 'react';\r\n\r\n// <= 767 - defined as mobile (iphone etc.)\r\nexport const MOBILE_BREAKPOINT = 767;\r\n\r\n// tablet range [768, 1023]\r\nexport const TABLET_BREAKPOINT_START = 768;\r\nexport const TABLET_BREAKPOINT_END = 1023;\r\n\r\n// DESKTOP >= 1024\r\nexport const DESKTOP_BREAKPOINT = 1024;\r\n\r\n/**\r\n * checks if Web Animation API is supported\r\n */\r\nexport const isWebAnimationSupported = () => {\r\n return 'animate' in document.createElement('div');\r\n};\r\n/**\r\n * if resize observer is supported\r\n * https://web.dev/resize-observer/\r\n */\r\nexport const isResizeObserverSupported = () => {\r\n return 'ResizeObserver' in window;\r\n};\r\n\r\n/**\r\n * get viewport width\r\n */\r\nexport const getViewportWidth = () => {\r\n return Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n};\r\n\r\n/**\r\n * get window width / height\r\n */\r\nexport const getWindowDimensions = () => {\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n }\r\n};\r\n\r\n/**\r\n * window resize observer hook\r\n * returns width and height on window resize\r\n * usage:\r\n * -------\r\n * const [width, height] = useWindowResizeObserver();\r\n * console.log(width, height);\r\n */\r\nexport const useWindowResizeObserver = () => {\r\n\r\n const [width, setWidth] = useState(document.body.clientWidth);\r\n const [height, setHeight] = useState(document.body.clientWidth);\r\n\r\n const observer = useRef(isResizeObserverSupported() ?\r\n new ResizeObserver(entries => {\r\n\r\n if(!entries || entries.length <= 0) return;\r\n\r\n const { width, height } = entries[0].contentRect;\r\n setWidth(width);\r\n setHeight(height);\r\n }) : null\r\n );\r\n\r\n useEffect(() => {\r\n\r\n observer?.current?.observe(document.body);\r\n\r\n return () => { // eslint-disable-next-line\r\n observer?.current?.unobserve(document.body);\r\n }\r\n }, []);\r\n\r\n return [\r\n width,\r\n height,\r\n ];\r\n};\r\n\r\nexport const getWidth = async ($el: HTMLElement) : Promise => {\r\n return new Promise((resolve, reject) => {\r\n const width = $el.style.getPropertyValue('width');\r\n $el.style.removeProperty('width');\r\n window.setTimeout(() => {\r\n const offsetWidth = $el.offsetWidth;\r\n $el.style.setProperty('width', width);\r\n window.setTimeout(() => {\r\n resolve(offsetWidth);\r\n }, 0);\r\n }, 0);\r\n });\r\n};","import {\r\n DESKTOP_BREAKPOINT,\r\n getViewportWidth, MOBILE_BREAKPOINT, TABLET_BREAKPOINT_END,\r\n TABLET_BREAKPOINT_START\r\n} from '../../../domain/animations/animations-provider';\r\n\r\n/**\r\n * in case of loop: get items that are visible by the user\r\n * type: 'current', 'prev', 'next'\r\n */\r\nexport const getLoopItems = (items: any[], slideItemIndex: number, itemsNumberPerSlide: number, type: string = 'current') => {\r\n\r\n const totalItems = items.length;\r\n const stateItems: any[] = [];\r\n\r\n let index = slideItemIndex;\r\n\r\n if(type === 'prev'){\r\n index = getNextPrevSlideItemIndex(slideItemIndex - itemsNumberPerSlide, totalItems, true, 'prev');\r\n }\r\n\r\n if(type === 'next'){\r\n index = getNextPrevSlideItemIndex(slideItemIndex + itemsNumberPerSlide, totalItems, true, 'next');\r\n }\r\n\r\n for(let i=0; i return -1\r\n */\r\nexport const getNextPrevSlideItemIndex = (index: number, total: number, loop: boolean, direction: string) => {\r\n if(loop){\r\n const updated = ((index % total) + total) % total;\r\n return direction === 'prev' ? Math.ceil(updated) : Math.floor(updated);\r\n }\r\n return (index < 0 || index >= total) ? -1: index;\r\n};\r\n\r\n/**\r\n * get number of items per slide depending on the viewport\r\n */\r\nexport const getItemsNumberPerSlide = (desktopItemsPerSlide?: number, tableItemsPerSlide?: number, mobileItemsPerSlide?: number) => {\r\n const vw = getViewportWidth();\r\n\r\n const desktopNum = !isNaN(Number(desktopItemsPerSlide)) ? desktopItemsPerSlide : 5;\r\n const tableNum = !isNaN(Number(tableItemsPerSlide)) ? tableItemsPerSlide : 2;\r\n const mobileNum = !isNaN(Number(mobileItemsPerSlide)) ? mobileItemsPerSlide : 2.5;\r\n\r\n if(vw >= DESKTOP_BREAKPOINT){\r\n return desktopNum;\r\n }\r\n\r\n if(vw >= TABLET_BREAKPOINT_START){\r\n return tableNum;\r\n }\r\n\r\n return mobileNum;\r\n};\r\n\r\n/**\r\n * check if orientation of the gallery is vertical,\r\n * depending on the provided properties\r\n */\r\nexport const checkIfVertical = (\r\n isVerticalDesktop: boolean,\r\n isVerticalTablet: boolean,\r\n isVerticalMobile: boolean) => {\r\n\r\n const vw = getViewportWidth();\r\n\r\n if(vw <= MOBILE_BREAKPOINT && isVerticalMobile) return true;\r\n if(vw >= TABLET_BREAKPOINT_START && vw <= TABLET_BREAKPOINT_END && isVerticalTablet) return true;\r\n\r\n return vw >= DESKTOP_BREAKPOINT && isVerticalDesktop;\r\n};\r\n\r\n/**\r\n * define if the buttons should be shown\r\n */\r\nexport const ifShowButtons = (hideButtons?: boolean, showOnMobile?: boolean) => {\r\n if(hideButtons) return false;\r\n if(showOnMobile) return true;\r\n\r\n const vw = getViewportWidth();\r\n return vw >= TABLET_BREAKPOINT_START;\r\n};\r\n\r\n/**\r\n * we assume, that duration provided in settings is the desktop duration\r\n * calculate duration for the given viewport\r\n */\r\nexport const getDurationPerViewport = (desktopDuration: number) => {\r\n const vw = getViewportWidth();\r\n if(vw >= DESKTOP_BREAKPOINT) return desktopDuration;\r\n\r\n return desktopDuration * vw / DESKTOP_BREAKPOINT;\r\n};\r\n","interface IGalleryItemProps {\r\n index: number,\r\n slideItemWidth: number, // for horizontal gallery\r\n slideItemHeight?: number, // for vertical gallery\r\n gap: number,\r\n left: number, // for horizontal gallery\r\n top?: number, // for vertical gallery\r\n renderItem: Function,\r\n item: any,\r\n isVertical?: boolean,\r\n}\r\n\r\nconst GalleryItem = (props: IGalleryItemProps) => {\r\n return (\r\n \r\n { props.item && props.renderItem(props.item, props.slideItemWidth) }\r\n \r\n )\r\n};\r\n\r\nexport default GalleryItem;","import GalleryItem from './gallery-item';\r\nimport { ISlideState } from './interfases';\r\n\r\ninterface IInitialLoopItemsProps {\r\n prevLoopItems: any[],\r\n currentLoopItems: any[],\r\n nextLoopItems: any[],\r\n slideData: ISlideState,\r\n renderItem: Function,\r\n}\r\n\r\nconst InitialLoopItems = (props: IInitialLoopItemsProps) => {\r\n\r\n const slideData = props.slideData;\r\n \r\n return (\r\n <>\r\n {\r\n props.prevLoopItems.map((dataItem, i) => {\r\n const idx = Math.ceil(i - slideData.itemsNumberPerSlide);\r\n\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n {\r\n props.currentLoopItems.map((dataItem, i) => {\r\n const [index, item] = dataItem;\r\n\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n {\r\n props.nextLoopItems.map((dataItem, i) => {\r\n const idx = Math.floor(i + slideData.itemsNumberPerSlide);\r\n\r\n return (\r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n};\r\n\r\nexport default InitialLoopItems;","import { IGalleryProps, ISlideState } from './interfases';\r\nimport { sendGAEvent } from '../../../domain/marketing/gtm-provider';\r\nimport ArrowIcon from '../../../ui/svg/common/arrow';\r\nimport { CSSProperties, useCallback, useEffect, useRef, useState } from 'react';\r\nimport {\r\n checkIfVertical,\r\n getDurationPerViewport,\r\n getItemsNumberPerSlide, getLoopItems,\r\n getNextPrevSlideItemIndex, ifShowButtons\r\n} from './gallery-provider';\r\nimport {\r\n getWidth,\r\n isWebAnimationSupported,\r\n useWindowResizeObserver\r\n} from '../../../domain/animations/animations-provider';\r\nimport ReactDOM from 'react-dom';\r\nimport GalleryItem from './gallery-item';\r\nimport InitialLoopItems from './initial-loop-items';\r\n\r\n/**\r\n * General gallery.\r\n */\r\nconst Gallery = (props: IGalleryProps) => {\r\n\r\n // used to get the wrapper width and defined 1 slide item width\r\n const galleryContentRef = useRef(null);\r\n\r\n // used to animate the content (using web animation api)\r\n const galleryAnimationRef = useRef(null);\r\n\r\n // used to updated buttons visibility on gallery state changes\r\n // without re-render (that causes flickering)\r\n const leftButtonRef = useRef(null);\r\n const rightButtonRef = useRef(null);\r\n\r\n // animation handler - it can be used to start, pause or cancel animation\r\n const animationRef = useRef(null);\r\n\r\n // handle window resize\r\n const [ width, height ] = useWindowResizeObserver();\r\n\r\n // styles\r\n const [rootStyle, setRootStyle] = useState();\r\n const [animatedContentStyle, setAnimatedContentStyle] = useState();\r\n\r\n // slide state data\r\n const slideData = useRef({\r\n slideContent: undefined,\r\n slideItemIndex: 0,\r\n slideIndex: 0,\r\n totalSlides: 0,\r\n itemsNumberPerSlide: 0,\r\n\r\n // dimensions\r\n galleryContentWidth: 0, // for horizontal gallery\r\n galleryContentHeight: 0, // for vertical gallery\r\n\r\n slideItemWidth: 0, // in case of horizontal gallery\r\n slideItemHeight: 0, // in case of vertical gallery\r\n gap: props.gap || 15,\r\n\r\n // data\r\n totalItems: props.items.length,\r\n\r\n // animation properties\r\n enableAnimation: isWebAnimationSupported() && (props.enableAnimation === undefined ? true : props.enableAnimation),\r\n animationTiming: {\r\n fill: 'forwards',\r\n duration: getDurationPerViewport(props.duration || 1000),\r\n easing: 'ease'\r\n },\r\n animating: false,\r\n currentLeftPos: 0, // horizontal gallery\r\n currentTopPos: 0, // vertical gallery\r\n\r\n // touch events\r\n xDown: 0,\r\n yDown: 0,\r\n\r\n // mobile\r\n showButtons: ifShowButtons(props.hideButtons, props.showButtonsOnMobile),\r\n });\r\n\r\n // initial items - printed on gallery init\r\n const [prevLoopItems, setPrevLoopItems] = useState([]);\r\n const [currentLoopItems, setCurrentLoopItems] = useState([]);\r\n const [nextLoopItems, setNextLoopItems] = useState([]);\r\n\r\n // orientation\r\n const [isVertical, setIsVertical] = useState(checkIfVertical(!!props.isVerticalDesktop, !!props.isVerticalTablet, !!props.isVerticalMobile));\r\n\r\n /**\r\n * buttons visibility changes depending on the gallery state\r\n */\r\n const updateButtonsVisibility = useCallback(() => {\r\n if(leftButtonRef.current){\r\n leftButtonRef.current.classList.toggle('invisible', !props.loop && slideData.current.slideIndex === 0);\r\n }\r\n\r\n if(rightButtonRef.current){\r\n rightButtonRef.current.classList.toggle('invisible', !props.loop && slideData.current.slideIndex === slideData.current.totalSlides - 1);\r\n }\r\n }, [props.loop]);\r\n\r\n /**\r\n * jump to the specific slide item without animation\r\n */\r\n const jumpToSlide = useCallback((slideItemIndex: number) => {\r\n const state = slideData.current;\r\n if(state.animating || !galleryAnimationRef.current) return;\r\n\r\n // find the proper slide indexes\r\n state.slideIndex = Math.floor(slideItemIndex / Math.floor(state.itemsNumberPerSlide));\r\n state.slideItemIndex = state.slideIndex * Math.floor(state.itemsNumberPerSlide);\r\n\r\n const $next = galleryAnimationRef.current?.querySelector(`[data-index=\"${ state.slideItemIndex }\"]`) as HTMLElement;\r\n state.currentLeftPos = $next ? $next.offsetLeft : 0;\r\n state.currentTopPos = $next ? $next.offsetTop : 0;\r\n\r\n // translate without animation\r\n const transform = isVertical ?\r\n `translateY(${ -state.currentTopPos }px)` :\r\n `translateX(${ -state.currentLeftPos }px)`;\r\n\r\n // @ts-ignore\r\n galleryAnimationRef.current.style['-webkit-transform'] = transform;\r\n // @ts-ignore\r\n galleryAnimationRef.current.style['-ms-transform'] = transform;\r\n galleryAnimationRef.current.style.transform = transform;\r\n\r\n // prev / next buttons visibility\r\n updateButtonsVisibility();\r\n\r\n }, [isVertical, updateButtonsVisibility]);\r\n\r\n /**\r\n * next / prev slide\r\n */\r\n const changeSlide = useCallback((direction: string, shouldAnimate: boolean = true, slideItemIndex: number|undefined = undefined) => {\r\n return new Promise((resolve, reject) => {\r\n\r\n const state = slideData.current;\r\n\r\n if(state.animating){\r\n resolve();\r\n return;\r\n }\r\n\r\n let newSlideItemIndex = 0;\r\n const prevIndex = Math.ceil(state.slideItemIndex - state.itemsNumberPerSlide);\r\n const nextIndex = state.slideItemIndex + Math.floor(state.itemsNumberPerSlide);\r\n const newItemIndex = (slideItemIndex === undefined) ? (direction === 'prev' ? prevIndex : nextIndex) : slideItemIndex;\r\n\r\n if(props.loop) {\r\n newSlideItemIndex = newItemIndex;\r\n }\r\n else{\r\n // if not looping and out of range ---> returns -1\r\n newSlideItemIndex = getNextPrevSlideItemIndex(\r\n newItemIndex,\r\n state.totalItems,\r\n !!props.loop,\r\n direction\r\n );\r\n\r\n if(newSlideItemIndex === -1){\r\n resolve();\r\n return;\r\n }\r\n }\r\n\r\n state.animating = true;\r\n\r\n const animate = state.enableAnimation && shouldAnimate;\r\n\r\n const $next = galleryAnimationRef.current?.querySelector(`[data-index=\"${ newSlideItemIndex }\"]`) as HTMLElement;\r\n state.currentLeftPos = $next ? $next.offsetLeft : 0;\r\n state.currentTopPos = $next ? $next.offsetTop : 0;\r\n\r\n if(animate && galleryAnimationRef.current) {\r\n\r\n animationRef.current = galleryAnimationRef.current.animate(\r\n [\r\n isVertical ?\r\n { transform: `translateY(${ -state.currentTopPos }px)`} :\r\n { transform: `translateX(${ -state.currentLeftPos }px)`}\r\n ],\r\n state.animationTiming\r\n );\r\n animationRef.current.play();\r\n }\r\n else{\r\n if(galleryAnimationRef.current) {\r\n const transform = isVertical ?\r\n `translateY(${ -state.currentTopPos }px)` :\r\n `translateX(${ -state.currentLeftPos }px)`;\r\n // @ts-ignore\r\n galleryAnimationRef.current.style['-webkit-transform'] = transform;\r\n // @ts-ignore\r\n galleryAnimationRef.current.style['-ms-transform'] = transform;\r\n galleryAnimationRef.current.style.transform = transform;\r\n }\r\n }\r\n\r\n window.setTimeout(() => {\r\n\r\n state.slideIndex = direction === 'prev' ? state.slideIndex - 1 : state.slideIndex + 1;\r\n state.slideItemIndex = newSlideItemIndex;\r\n\r\n updateButtonsVisibility();\r\n\r\n if(props.loop) {\r\n\r\n const nextExists = direction === 'next' &&\r\n galleryAnimationRef.current?.querySelector(`[data-index=\"${ newSlideItemIndex + slideData.current.itemsNumberPerSlide }\"]`);\r\n\r\n const prevExists = direction === 'prev' &&\r\n galleryAnimationRef.current?.querySelector(`[data-index=\"${ newSlideItemIndex - slideData.current.itemsNumberPerSlide }\"]`);\r\n\r\n if(!(prevExists || nextExists)){\r\n\r\n const newItems = getLoopItems(props.items, slideData.current.slideItemIndex, slideData.current.itemsNumberPerSlide, direction);\r\n\r\n for(let i=0; i,\r\n $node\r\n );\r\n\r\n if($node && $node.firstElementChild){\r\n if(direction === 'next'){\r\n galleryAnimationRef.current?.append($node);\r\n }\r\n else{\r\n galleryAnimationRef.current?.prepend($node.firstElementChild);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n state.animating = false;\r\n\r\n // send data to google analytics\r\n sendGAEvent(`gal-arrow-click-${ props.codeName }`, direction === 'prev' ? 'back' : 'next');\r\n\r\n resolve();\r\n }, animate ? state.animationTiming.duration : 0);\r\n\r\n });\r\n }, [\r\n props.codeName,\r\n props.items,\r\n props.loop,\r\n props.renderItem,\r\n updateButtonsVisibility,\r\n isVertical,\r\n ]);\r\n\r\n /**\r\n * update gallery state according to the current viewport\r\n * this function is called on gallery init, and on window resize\r\n */\r\n const resetState = useCallback(async () => {\r\n //alert(\"jump toss\");\r\n\r\n const galleryContentRefLocal = galleryContentRef.current;\r\n\r\n if(!galleryContentRefLocal || !galleryAnimationRef.current) return;\r\n\r\n const state = slideData.current;\r\n\r\n // cancel animation if needed\r\n if(animationRef.current){\r\n animationRef.current?.cancel();\r\n }\r\n\r\n // reset indexes\r\n state.slideItemIndex = 0;\r\n state.slideIndex = 0;\r\n state.currentLeftPos = 0;\r\n state.currentTopPos = 0;\r\n\r\n // reset orientation\r\n setIsVertical(checkIfVertical(!!props.isVerticalDesktop, !!props.isVerticalTablet, !!props.isVerticalMobile));\r\n\r\n // define the total width\r\n const offsetWidth = await getWidth(galleryContentRefLocal);\r\n state.galleryContentWidth = offsetWidth; //galleryContentRefLocal.offsetWidth;\r\n if(state.galleryContentWidth <= 0 && !isVertical) return;\r\n\r\n state.galleryContentHeight = galleryContentRefLocal.offsetHeight;\r\n if(state.galleryContentHeight <= 0 && isVertical) return;\r\n\r\n state.itemsNumberPerSlide = getItemsNumberPerSlide(\r\n props.desktopItemsPerSlide,\r\n props.tableItemsPerSlide,\r\n props.mobileItemsPerSlide\r\n ) || 1;\r\n\r\n state.totalSlides = state.itemsNumberPerSlide === 0 ? 0 : Math.ceil(props.items.length / state.itemsNumberPerSlide);\r\n if(state.totalSlides <= 0) return;\r\n\r\n // for horizontal gallery\r\n const temp = (state.itemsNumberPerSlide - 1) * state.gap;\r\n state.slideItemWidth = (state.galleryContentWidth - temp) / state.itemsNumberPerSlide;\r\n if(state.slideItemWidth <= 0 && !isVertical) return;\r\n\r\n // for vertical gallery\r\n state.slideItemHeight = state.galleryContentHeight / state.itemsNumberPerSlide;\r\n if(state.slideItemHeight <= 0 && isVertical) return;\r\n\r\n // define container styles\r\n const style = {\r\n width: `${ state.galleryContentWidth }px`,\r\n height: isVertical ? `${ state.galleryContentHeight }px` : 'auto',\r\n };\r\n\r\n setRootStyle(style);\r\n setAnimatedContentStyle(style);\r\n\r\n // update buttons\r\n state.showButtons = ifShowButtons(props.hideButtons, props.showButtonsOnMobile);\r\n updateButtonsVisibility();\r\n\r\n // reset initial loop view\r\n if(props.loop){\r\n // remove dynamically generated items\r\n const $dynamic = Array.from(galleryAnimationRef.current.querySelectorAll('[data-dynamic]'));\r\n $dynamic.forEach($dItem => {\r\n $dItem.remove();\r\n })\r\n\r\n setCurrentLoopItems(getLoopItems(props.items, slideData.current.slideItemIndex, slideData.current.itemsNumberPerSlide, 'current'));\r\n setPrevLoopItems(getLoopItems(props.items, slideData.current.slideItemIndex, slideData.current.itemsNumberPerSlide, 'prev'));\r\n setNextLoopItems(getLoopItems(props.items, slideData.current.slideItemIndex, slideData.current.itemsNumberPerSlide, 'next'));\r\n }\r\n\r\n if(Number.isInteger(props.jumpToItemIndex)){\r\n await jumpToSlide(props.jumpToItemIndex || 0);\r\n }\r\n }, [\r\n props.desktopItemsPerSlide,\r\n props.items,\r\n props.mobileItemsPerSlide,\r\n props.tableItemsPerSlide,\r\n props.showButtonsOnMobile,\r\n updateButtonsVisibility,\r\n props.loop,\r\n isVertical,\r\n props.isVerticalDesktop,\r\n props.isVerticalTablet,\r\n props.isVerticalMobile,\r\n props.jumpToItemIndex,\r\n jumpToSlide,\r\n props.hideButtons,\r\n ]);\r\n\r\n /**\r\n * init properties on gallery load\r\n */\r\n useEffect(() => {\r\n\r\n const galleryContentRefLocal = galleryContentRef.current;\r\n if(!galleryContentRefLocal || !galleryAnimationRef.current) return;\r\n\r\n const state = slideData.current;\r\n\r\n (async () => {\r\n await resetState();\r\n })();\r\n\r\n // handle touch events ===========================================================\r\n\r\n /**\r\n * since calling preventDefault() on a touchstart prevents the corresponding mouse events from firing,\r\n * it's common to call preventDefault() on touchmove rather than touchstart.\r\n * That way, mouse events can still fire and things like links will continue to work.\r\n * evt.preventDefault();\r\n */\r\n const handleTouchStart = (evt: TouchEvent) => {\r\n if(evt.touches.length <= 0) return;\r\n\r\n state.xDown = evt.touches[0].clientX;\r\n state.yDown = evt.touches[0].clientY;\r\n };\r\n\r\n /**\r\n * perform animation on touch move\r\n */\r\n const handleTouchMove = async (evt: TouchEvent) => {\r\n if (!state.xDown || !state.yDown || evt.touches.length <= 0) return;\r\n\r\n const xUp = evt.touches[0].clientX;\r\n const yUp = evt.touches[0].clientY;\r\n\r\n const xDiff = state.xDown - xUp;\r\n const yDiff = state.yDown - yUp;\r\n\r\n const isHorizontalSwipe = Math.abs(xDiff) > Math.abs(yDiff);\r\n\r\n if(!(props.allowVerticalScrolling && !isHorizontalSwipe)){\r\n evt.preventDefault();\r\n }\r\n\r\n if (isHorizontalSwipe) {\r\n if (xDiff > 0 ) {\r\n // left swipe\r\n await changeSlide('next');\r\n }\r\n else {\r\n // right swipe\r\n await changeSlide('prev');\r\n }\r\n }\r\n\r\n // reset values\r\n state.xDown = 0;\r\n state.yDown = 0;\r\n };\r\n\r\n galleryContentRefLocal.addEventListener('touchstart', handleTouchStart);\r\n galleryContentRefLocal.addEventListener('touchmove', handleTouchMove);\r\n\r\n return () => {\r\n galleryContentRefLocal?.removeEventListener('touchstart', handleTouchStart);\r\n galleryContentRefLocal?.removeEventListener('touchmove', handleTouchMove);\r\n };\r\n }, [\r\n changeSlide,\r\n resetState,\r\n props.items,\r\n props.allowVerticalScrolling\r\n ]);\r\n\r\n /**\r\n * handle window resize\r\n */\r\n useEffect(() => {\r\n\r\n // update gallery state according to the current viewport\r\n // it re-renders automagically ;)\r\n (async () => {\r\n await resetState();\r\n })();\r\n\r\n }, [\r\n width,\r\n height,\r\n resetState,\r\n ]);\r\n\r\n return (\r\n \r\n\r\n {\r\n slideData.current.showButtons &&\r\n {\r\n sendGAEvent(`gal-arrow-click-${ props.codeName }`, `back`);\r\n await changeSlide('prev');\r\n }}>\r\n {\r\n props.prevButtonArrow ?\r\n props.prevButtonArrow :\r\n \r\n }\r\n \r\n }\r\n\r\n
\r\n
\r\n {/* used to prevent height issues */}\r\n {\r\n props.items && props.items.length > 0 &&\r\n \r\n {\r\n props.renderItem(\r\n props.items[0],\r\n slideData.current.slideItemWidth,\r\n slideData.current.slideItemHeight\r\n )\r\n }\r\n
\r\n }\r\n
\r\n\r\n \r\n\r\n {\r\n !props.loop && props.items.map((item, i) => {\r\n return (\r\n \r\n {\r\n item && props.renderItem(\r\n item,\r\n slideData.current.slideItemWidth,\r\n slideData.current.slideItemHeight\r\n )\r\n }\r\n \r\n )\r\n })\r\n }\r\n\r\n {\r\n props.loop && (\r\n \r\n )\r\n }\r\n \r\n \r\n {\r\n slideData.current.showButtons &&\r\n {\r\n sendGAEvent(`gal-arrow-click-${props.codeName}`, `next`);\r\n await changeSlide('next');\r\n }}>\r\n {\r\n props.galleryRightFadeClasses !== undefined ?\r\n
: ''\r\n }\r\n {\r\n props.nextButtonArrow ?\r\n props.nextButtonArrow :\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default Gallery;","// from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex#Polyfill\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, \"findIndex\", {\n value: function value(predicate) {\n \"use strict\";\n\n if (this == null) {\n throw new TypeError(\"Array.prototype.findIndex called on null or undefined\");\n }\n if (typeof predicate !== \"function\") {\n throw new TypeError(\"predicate must be a function\");\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return i;\n }\n }\n return -1;\n },\n enumerable: false,\n configurable: false,\n writable: false\n });\n}\nexport default true;\n//# sourceMappingURL=array-findindex.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar config = {\n warnings: {\n fallbackImage: true,\n sizesAttribute: true,\n invalidARFormat: true,\n oversizeImage: true,\n lazyLCP: true\n }\n};\nvar _setWarning = function _setWarning(name, value) {\n if (!name || !(name in config.warnings)) {\n return;\n }\n config.warnings[name] = value;\n};\nvar PublicConfigAPI = /*#__PURE__*/function () {\n function PublicConfigAPI() {\n _classCallCheck(this, PublicConfigAPI);\n }\n return _createClass(PublicConfigAPI, null, [{\n key: \"disableWarning\",\n value: function disableWarning(name) {\n _setWarning(name, false);\n }\n }, {\n key: \"enableWarning\",\n value: function enableWarning(name) {\n _setWarning(name, true);\n }\n }]);\n}();\nexport default config;\nexport { PublicConfigAPI };\n//# sourceMappingURL=config.js.map","export var PACKAGE_VERSION = \"9.10.0\";\n//# sourceMappingURL=constants.js.map","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.7.7';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = Array.prototype.slice.call(b64ch);\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));\nconst _mkUriSafe = (src) => src\n .replace(/=/g, '').replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = typeof btoa === 'function' ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0)));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/={0,2}$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","const n = /[^\\0-\\x7E]/;\nconst t = /[\\x2E\\u3002\\uFF0E\\uFF61]/g;\nconst o = {\n overflow: \"Overflow Error\",\n \"not-basic\": \"Illegal Input\",\n \"invalid-input\": \"Invalid Input\"\n};\nconst e = Math.floor;\nconst r = String.fromCharCode;\nfunction s(n2) {\n throw new RangeError(o[n2]);\n}\nconst c = function(n2, t2) {\n return n2 + 22 + 75 * (n2 < 26) - ((t2 != 0) << 5);\n};\nconst u = function(n2, t2, o2) {\n let r2 = 0;\n for (n2 = o2 ? e(n2 / 700) : n2 >> 1, n2 += e(n2 / t2); n2 > 455; r2 += 36) {\n n2 = e(n2 / 35);\n }\n return e(r2 + 36 * n2 / (n2 + 38));\n};\nfunction toASCII(o2) {\n return function(n2, o3) {\n const e2 = n2.split(\"@\");\n let r2 = \"\";\n e2.length > 1 && (r2 = e2[0] + \"@\", n2 = e2[1]);\n const s2 = function(n3, t2) {\n const o4 = [];\n let e3 = n3.length;\n for (; e3--; ) {\n o4[e3] = t2(n3[e3]);\n }\n return o4;\n }((n2 = n2.replace(t, \".\")).split(\".\"), o3).join(\".\");\n return r2 + s2;\n }(o2, function(t2) {\n return n.test(t2) ? \"xn--\" + function(n2) {\n const t3 = [];\n const o3 = (n2 = function(n3) {\n const t4 = [];\n let o4 = 0;\n const e2 = n3.length;\n for (; o4 < e2; ) {\n const r2 = n3.charCodeAt(o4++);\n if (r2 >= 55296 && r2 <= 56319 && o4 < e2) {\n const e3 = n3.charCodeAt(o4++);\n (64512 & e3) == 56320 ? t4.push(((1023 & r2) << 10) + (1023 & e3) + 65536) : (t4.push(r2), o4--);\n } else {\n t4.push(r2);\n }\n }\n return t4;\n }(n2)).length;\n let f = 128;\n let i = 0;\n let l = 72;\n for (const o4 of n2) {\n o4 < 128 && t3.push(r(o4));\n }\n const h = t3.length;\n let p = h;\n for (h && t3.push(\"-\"); p < o3; ) {\n let o4 = 2147483647;\n for (const t4 of n2) {\n t4 >= f && t4 < o4 && (o4 = t4);\n }\n const a = p + 1;\n o4 - f > e((2147483647 - i) / a) && s(\"overflow\"), i += (o4 - f) * a, f = o4;\n for (const o5 of n2) {\n if (o5 < f && ++i > 2147483647 && s(\"overflow\"), o5 == f) {\n let n3 = i;\n for (let o6 = 36; ; o6 += 36) {\n const s2 = o6 <= l ? 1 : o6 >= l + 26 ? 26 : o6 - l;\n if (n3 < s2) {\n break;\n }\n const u2 = n3 - s2;\n const f2 = 36 - s2;\n t3.push(r(c(s2 + u2 % f2, 0))), n3 = e(u2 / f2);\n }\n t3.push(r(c(n3, 0))), l = u(i, a, p == h), i = 0, ++p;\n }\n }\n ++i, ++f;\n }\n return t3.join(\"\");\n }(t2) : t2;\n });\n}\n\nconst HASH_RE = /#/g;\nconst AMPERSAND_RE = /&/g;\nconst SLASH_RE = /\\//g;\nconst EQUAL_RE = /=/g;\nconst IM_RE = /\\?/g;\nconst PLUS_RE = /\\+/g;\nconst ENC_CARET_RE = /%5e/gi;\nconst ENC_BACKTICK_RE = /%60/gi;\nconst ENC_CURLY_OPEN_RE = /%7b/gi;\nconst ENC_PIPE_RE = /%7c/gi;\nconst ENC_CURLY_CLOSE_RE = /%7d/gi;\nconst ENC_SPACE_RE = /%20/gi;\nconst ENC_SLASH_RE = /%2f/gi;\nconst ENC_ENC_SLASH_RE = /%252f/gi;\nfunction encode(text) {\n return encodeURI(\"\" + text).replace(ENC_PIPE_RE, \"|\");\n}\nfunction encodeHash(text) {\n return encode(text).replace(ENC_CURLY_OPEN_RE, \"{\").replace(ENC_CURLY_CLOSE_RE, \"}\").replace(ENC_CARET_RE, \"^\");\n}\nfunction encodeQueryValue(input) {\n return encode(typeof input === \"string\" ? input : JSON.stringify(input)).replace(PLUS_RE, \"%2B\").replace(ENC_SPACE_RE, \"+\").replace(HASH_RE, \"%23\").replace(AMPERSAND_RE, \"%26\").replace(ENC_BACKTICK_RE, \"`\").replace(ENC_CARET_RE, \"^\").replace(SLASH_RE, \"%2F\");\n}\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, \"%3D\");\n}\nfunction encodePath(text) {\n return encode(text).replace(HASH_RE, \"%23\").replace(IM_RE, \"%3F\").replace(ENC_ENC_SLASH_RE, \"%2F\").replace(AMPERSAND_RE, \"%26\").replace(PLUS_RE, \"%2B\");\n}\nfunction encodeParam(text) {\n return encodePath(text).replace(SLASH_RE, \"%2F\");\n}\nfunction decode(text = \"\") {\n try {\n return decodeURIComponent(\"\" + text);\n } catch {\n return \"\" + text;\n }\n}\nfunction decodePath(text) {\n return decode(text.replace(ENC_SLASH_RE, \"%252F\"));\n}\nfunction decodeQueryKey(text) {\n return decode(text.replace(PLUS_RE, \" \"));\n}\nfunction decodeQueryValue(text) {\n return decode(text.replace(PLUS_RE, \" \"));\n}\nfunction encodeHost(name = \"\") {\n return toASCII(name);\n}\n\nfunction parseQuery(parametersString = \"\") {\n const object = {};\n if (parametersString[0] === \"?\") {\n parametersString = parametersString.slice(1);\n }\n for (const parameter of parametersString.split(\"&\")) {\n const s = parameter.match(/([^=]+)=?(.*)/) || [];\n if (s.length < 2) {\n continue;\n }\n const key = decodeQueryKey(s[1]);\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = decodeQueryValue(s[2] || \"\");\n if (object[key] === void 0) {\n object[key] = value;\n } else if (Array.isArray(object[key])) {\n object[key].push(value);\n } else {\n object[key] = [object[key], value];\n }\n }\n return object;\n}\nfunction encodeQueryItem(key, value) {\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n value = String(value);\n }\n if (!value) {\n return encodeQueryKey(key);\n }\n if (Array.isArray(value)) {\n return value.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join(\"&\");\n }\n return `${encodeQueryKey(key)}=${encodeQueryValue(value)}`;\n}\nfunction stringifyQuery(query) {\n return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join(\"&\");\n}\n\nconst PROTOCOL_STRICT_REGEX = /^[\\s\\w\\0+.-]{2,}:([/\\\\]{1,2})/;\nconst PROTOCOL_REGEX = /^[\\s\\w\\0+.-]{2,}:([/\\\\]{2})?/;\nconst PROTOCOL_RELATIVE_REGEX = /^([/\\\\]\\s*){2,}[^/\\\\]/;\nconst PROTOCOL_SCRIPT_RE = /^[\\s\\0]*(blob|data|javascript|vbscript):$/i;\nconst TRAILING_SLASH_RE = /\\/$|\\/\\?|\\/#/;\nconst JOIN_LEADING_SLASH_RE = /^\\.?\\//;\nfunction isRelative(inputString) {\n return [\"./\", \"../\"].some((string_) => inputString.startsWith(string_));\n}\nfunction hasProtocol(inputString, opts = {}) {\n if (typeof opts === \"boolean\") {\n opts = { acceptRelative: opts };\n }\n if (opts.strict) {\n return PROTOCOL_STRICT_REGEX.test(inputString);\n }\n return PROTOCOL_REGEX.test(inputString) || (opts.acceptRelative ? PROTOCOL_RELATIVE_REGEX.test(inputString) : false);\n}\nfunction isScriptProtocol(protocol) {\n return !!protocol && PROTOCOL_SCRIPT_RE.test(protocol);\n}\nfunction hasTrailingSlash(input = \"\", respectQueryAndFragment) {\n if (!respectQueryAndFragment) {\n return input.endsWith(\"/\");\n }\n return TRAILING_SLASH_RE.test(input);\n}\nfunction withoutTrailingSlash(input = \"\", respectQueryAndFragment) {\n if (!respectQueryAndFragment) {\n return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || \"/\";\n }\n if (!hasTrailingSlash(input, true)) {\n return input || \"/\";\n }\n let path = input;\n let fragment = \"\";\n const fragmentIndex = input.indexOf(\"#\");\n if (fragmentIndex >= 0) {\n path = input.slice(0, fragmentIndex);\n fragment = input.slice(fragmentIndex);\n }\n const [s0, ...s] = path.split(\"?\");\n const cleanPath = s0.endsWith(\"/\") ? s0.slice(0, -1) : s0;\n return (cleanPath || \"/\") + (s.length > 0 ? `?${s.join(\"?\")}` : \"\") + fragment;\n}\nfunction withTrailingSlash(input = \"\", respectQueryAndFragment) {\n if (!respectQueryAndFragment) {\n return input.endsWith(\"/\") ? input : input + \"/\";\n }\n if (hasTrailingSlash(input, true)) {\n return input || \"/\";\n }\n let path = input;\n let fragment = \"\";\n const fragmentIndex = input.indexOf(\"#\");\n if (fragmentIndex >= 0) {\n path = input.slice(0, fragmentIndex);\n fragment = input.slice(fragmentIndex);\n if (!path) {\n return fragment;\n }\n }\n const [s0, ...s] = path.split(\"?\");\n return s0 + \"/\" + (s.length > 0 ? `?${s.join(\"?\")}` : \"\") + fragment;\n}\nfunction hasLeadingSlash(input = \"\") {\n return input.startsWith(\"/\");\n}\nfunction withoutLeadingSlash(input = \"\") {\n return (hasLeadingSlash(input) ? input.slice(1) : input) || \"/\";\n}\nfunction withLeadingSlash(input = \"\") {\n return hasLeadingSlash(input) ? input : \"/\" + input;\n}\nfunction cleanDoubleSlashes(input = \"\") {\n return input.split(\"://\").map((string_) => string_.replace(/\\/{2,}/g, \"/\")).join(\"://\");\n}\nfunction withBase(input, base) {\n if (isEmptyURL(base) || hasProtocol(input)) {\n return input;\n }\n const _base = withoutTrailingSlash(base);\n if (input.startsWith(_base)) {\n return input;\n }\n return joinURL(_base, input);\n}\nfunction withoutBase(input, base) {\n if (isEmptyURL(base)) {\n return input;\n }\n const _base = withoutTrailingSlash(base);\n if (!input.startsWith(_base)) {\n return input;\n }\n const trimmed = input.slice(_base.length);\n return trimmed[0] === \"/\" ? trimmed : \"/\" + trimmed;\n}\nfunction withQuery(input, query) {\n const parsed = parseURL(input);\n const mergedQuery = { ...parseQuery(parsed.search), ...query };\n parsed.search = stringifyQuery(mergedQuery);\n return stringifyParsedURL(parsed);\n}\nfunction getQuery(input) {\n return parseQuery(parseURL(input).search);\n}\nfunction isEmptyURL(url) {\n return !url || url === \"/\";\n}\nfunction isNonEmptyURL(url) {\n return url && url !== \"/\";\n}\nfunction joinURL(base, ...input) {\n let url = base || \"\";\n for (const segment of input.filter((url2) => isNonEmptyURL(url2))) {\n if (url) {\n const _segment = segment.replace(JOIN_LEADING_SLASH_RE, \"\");\n url = withTrailingSlash(url) + _segment;\n } else {\n url = segment;\n }\n }\n return url;\n}\nfunction joinRelativeURL(..._input) {\n const JOIN_SEGMENT_SPLIT_RE = /\\/(?!\\/)/;\n const input = _input.filter(Boolean);\n const segments = [];\n let segmentsDepth = 0;\n for (const i of input) {\n if (!i || i === \"/\") {\n continue;\n }\n for (const [sindex, s] of i.split(JOIN_SEGMENT_SPLIT_RE).entries()) {\n if (!s || s === \".\") {\n continue;\n }\n if (s === \"..\") {\n if (segments.length === 1 && hasProtocol(segments[0])) {\n continue;\n }\n segments.pop();\n segmentsDepth--;\n continue;\n }\n if (sindex === 1 && segments[segments.length - 1]?.endsWith(\":/\")) {\n segments[segments.length - 1] += \"/\" + s;\n continue;\n }\n segments.push(s);\n segmentsDepth++;\n }\n }\n let url = segments.join(\"/\");\n if (segmentsDepth >= 0) {\n if (input[0]?.startsWith(\"/\") && !url.startsWith(\"/\")) {\n url = \"/\" + url;\n } else if (input[0]?.startsWith(\"./\") && !url.startsWith(\"./\")) {\n url = \"./\" + url;\n }\n } else {\n url = \"../\".repeat(-1 * segmentsDepth) + url;\n }\n if (input[input.length - 1]?.endsWith(\"/\") && !url.endsWith(\"/\")) {\n url += \"/\";\n }\n return url;\n}\nfunction withHttp(input) {\n return withProtocol(input, \"http://\");\n}\nfunction withHttps(input) {\n return withProtocol(input, \"https://\");\n}\nfunction withoutProtocol(input) {\n return withProtocol(input, \"\");\n}\nfunction withProtocol(input, protocol) {\n let match = input.match(PROTOCOL_REGEX);\n if (!match) {\n match = input.match(/^\\/{2,}/);\n }\n if (!match) {\n return protocol + input;\n }\n return protocol + input.slice(match[0].length);\n}\nfunction normalizeURL(input) {\n const parsed = parseURL(input);\n parsed.pathname = encodePath(decodePath(parsed.pathname));\n parsed.hash = encodeHash(decode(parsed.hash));\n parsed.host = encodeHost(decode(parsed.host));\n parsed.search = stringifyQuery(parseQuery(parsed.search));\n return stringifyParsedURL(parsed);\n}\nfunction resolveURL(base = \"\", ...inputs) {\n if (typeof base !== \"string\") {\n throw new TypeError(\n `URL input should be string received ${typeof base} (${base})`\n );\n }\n const filteredInputs = inputs.filter((input) => isNonEmptyURL(input));\n if (filteredInputs.length === 0) {\n return base;\n }\n const url = parseURL(base);\n for (const inputSegment of filteredInputs) {\n const urlSegment = parseURL(inputSegment);\n if (urlSegment.pathname) {\n url.pathname = withTrailingSlash(url.pathname) + withoutLeadingSlash(urlSegment.pathname);\n }\n if (urlSegment.hash && urlSegment.hash !== \"#\") {\n url.hash = urlSegment.hash;\n }\n if (urlSegment.search && urlSegment.search !== \"?\") {\n if (url.search && url.search !== \"?\") {\n const queryString = stringifyQuery({\n ...parseQuery(url.search),\n ...parseQuery(urlSegment.search)\n });\n url.search = queryString.length > 0 ? \"?\" + queryString : \"\";\n } else {\n url.search = urlSegment.search;\n }\n }\n }\n return stringifyParsedURL(url);\n}\nfunction isSamePath(p1, p2) {\n return decode(withoutTrailingSlash(p1)) === decode(withoutTrailingSlash(p2));\n}\nfunction isEqual(a, b, options = {}) {\n if (!options.trailingSlash) {\n a = withTrailingSlash(a);\n b = withTrailingSlash(b);\n }\n if (!options.leadingSlash) {\n a = withLeadingSlash(a);\n b = withLeadingSlash(b);\n }\n if (!options.encoding) {\n a = decode(a);\n b = decode(b);\n }\n return a === b;\n}\nfunction withFragment(input, hash) {\n if (!hash || hash === \"#\") {\n return input;\n }\n const parsed = parseURL(input);\n parsed.hash = hash === \"\" ? \"\" : \"#\" + encodeHash(hash);\n return stringifyParsedURL(parsed);\n}\nfunction withoutFragment(input) {\n return stringifyParsedURL({ ...parseURL(input), hash: \"\" });\n}\nfunction withoutHost(input) {\n const parsed = parseURL(input);\n return (parsed.pathname || \"/\") + parsed.search + parsed.hash;\n}\n\nconst protocolRelative = Symbol.for(\"ufo:protocolRelative\");\nfunction parseURL(input = \"\", defaultProto) {\n const _specialProtoMatch = input.match(\n /^[\\s\\0]*(blob:|data:|javascript:|vbscript:)(.*)/i\n );\n if (_specialProtoMatch) {\n const [, _proto, _pathname = \"\"] = _specialProtoMatch;\n return {\n protocol: _proto.toLowerCase(),\n pathname: _pathname,\n href: _proto + _pathname,\n auth: \"\",\n host: \"\",\n search: \"\",\n hash: \"\"\n };\n }\n if (!hasProtocol(input, { acceptRelative: true })) {\n return defaultProto ? parseURL(defaultProto + input) : parsePath(input);\n }\n const [, protocol = \"\", auth, hostAndPath = \"\"] = input.replace(/\\\\/g, \"/\").match(/^[\\s\\0]*([\\w+.-]{2,}:)?\\/\\/([^/@]+@)?(.*)/) || [];\n let [, host = \"\", path = \"\"] = hostAndPath.match(/([^#/?]*)(.*)?/) || [];\n if (protocol === \"file:\") {\n path = path.replace(/\\/(?=[A-Za-z]:)/, \"\");\n }\n const { pathname, search, hash } = parsePath(path);\n return {\n protocol: protocol.toLowerCase(),\n auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : \"\",\n host,\n pathname,\n search,\n hash,\n [protocolRelative]: !protocol\n };\n}\nfunction parsePath(input = \"\") {\n const [pathname = \"\", search = \"\", hash = \"\"] = (input.match(/([^#?]*)(\\?[^#]*)?(#.*)?/) || []).splice(1);\n return {\n pathname,\n search,\n hash\n };\n}\nfunction parseAuth(input = \"\") {\n const [username, password] = input.split(\":\");\n return {\n username: decode(username),\n password: decode(password)\n };\n}\nfunction parseHost(input = \"\") {\n const [hostname, port] = (input.match(/([^/:]*):?(\\d+)?/) || []).splice(1);\n return {\n hostname: decode(hostname),\n port\n };\n}\nfunction stringifyParsedURL(parsed) {\n const pathname = parsed.pathname || \"\";\n const search = parsed.search ? (parsed.search.startsWith(\"?\") ? \"\" : \"?\") + parsed.search : \"\";\n const hash = parsed.hash || \"\";\n const auth = parsed.auth ? parsed.auth + \"@\" : \"\";\n const host = parsed.host || \"\";\n const proto = parsed.protocol || parsed[protocolRelative] ? (parsed.protocol || \"\") + \"//\" : \"\";\n return proto + auth + host + pathname + search + hash;\n}\nconst FILENAME_STRICT_REGEX = /\\/([^/]+\\.[^/]+)$/;\nconst FILENAME_REGEX = /\\/([^/]+)$/;\nfunction parseFilename(input = \"\", { strict }) {\n const { pathname } = parseURL(input);\n const matches = strict ? pathname.match(FILENAME_STRICT_REGEX) : pathname.match(FILENAME_REGEX);\n return matches ? matches[1] : void 0;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nclass $URL {\n constructor(input = \"\") {\n __publicField(this, \"protocol\");\n __publicField(this, \"host\");\n __publicField(this, \"auth\");\n __publicField(this, \"pathname\");\n __publicField(this, \"query\", {});\n __publicField(this, \"hash\");\n if (typeof input !== \"string\") {\n throw new TypeError(\n `URL input should be string received ${typeof input} (${input})`\n );\n }\n const parsed = parseURL(input);\n this.protocol = decode(parsed.protocol);\n this.host = decode(parsed.host);\n this.auth = decode(parsed.auth);\n this.pathname = decodePath(parsed.pathname);\n this.query = parseQuery(parsed.search);\n this.hash = decode(parsed.hash);\n }\n get hostname() {\n return parseHost(this.host).hostname;\n }\n get port() {\n return parseHost(this.host).port || \"\";\n }\n get username() {\n return parseAuth(this.auth).username;\n }\n get password() {\n return parseAuth(this.auth).password || \"\";\n }\n get hasProtocol() {\n return this.protocol.length;\n }\n get isAbsolute() {\n return this.hasProtocol || this.pathname[0] === \"/\";\n }\n get search() {\n const q = stringifyQuery(this.query);\n return q.length > 0 ? \"?\" + q : \"\";\n }\n get searchParams() {\n const p = new URLSearchParams();\n for (const name in this.query) {\n const value = this.query[name];\n if (Array.isArray(value)) {\n for (const v of value) {\n p.append(name, v);\n }\n } else {\n p.append(\n name,\n typeof value === \"string\" ? value : JSON.stringify(value)\n );\n }\n }\n return p;\n }\n get origin() {\n return (this.protocol ? this.protocol + \"//\" : \"\") + encodeHost(this.host);\n }\n get fullpath() {\n return encodePath(this.pathname) + this.search + encodeHash(this.hash);\n }\n get encodedAuth() {\n if (!this.auth) {\n return \"\";\n }\n const { username, password } = parseAuth(this.auth);\n return encodeURIComponent(username) + (password ? \":\" + encodeURIComponent(password) : \"\");\n }\n get href() {\n const auth = this.encodedAuth;\n const originWithAuth = (this.protocol ? this.protocol + \"//\" : \"\") + (auth ? auth + \"@\" : \"\") + encodeHost(this.host);\n return this.hasProtocol && this.isAbsolute ? originWithAuth + this.fullpath : this.fullpath;\n }\n append(url) {\n if (url.hasProtocol) {\n throw new Error(\"Cannot append a URL with protocol\");\n }\n Object.assign(this.query, url.query);\n if (url.pathname) {\n this.pathname = withTrailingSlash(this.pathname) + withoutLeadingSlash(url.pathname);\n }\n if (url.hash) {\n this.hash = url.hash;\n }\n }\n toJSON() {\n return this.href;\n }\n toString() {\n return this.href;\n }\n}\nfunction createURL(input) {\n return new $URL(input);\n}\n\nexport { $URL, cleanDoubleSlashes, createURL, decode, decodePath, decodeQueryKey, decodeQueryValue, encode, encodeHash, encodeHost, encodeParam, encodePath, encodeQueryItem, encodeQueryKey, encodeQueryValue, getQuery, hasLeadingSlash, hasProtocol, hasTrailingSlash, isEmptyURL, isEqual, isNonEmptyURL, isRelative, isSamePath, isScriptProtocol, joinRelativeURL, joinURL, normalizeURL, parseAuth, parseFilename, parseHost, parsePath, parseQuery, parseURL, resolveURL, stringifyParsedURL, stringifyQuery, withBase, withFragment, withHttp, withHttps, withLeadingSlash, withProtocol, withQuery, withTrailingSlash, withoutBase, withoutFragment, withoutHost, withoutLeadingSlash, withoutProtocol, withoutTrailingSlash };\n","import { Base64 } from 'js-base64';\nimport md5 from 'md5';\nimport { hasProtocol, parseURL, getQuery } from 'ufo';\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\n// package version used in the ix-lib parameter\nvar VERSION = '3.8.0';\n// regex pattern used to determine if a domain is valid\nvar DOMAIN_REGEX = /^(?:[a-z\\d\\-_]{1,62}\\.){0,125}(?:[a-z\\d](?:\\-(?=\\-*[a-z\\d])|[a-z]|\\d){0,62}\\.)[a-z\\d]{1,63}$/i;\n// minimum generated srcset width\nvar MIN_SRCSET_WIDTH = 100;\n// maximum generated srcset width\nvar MAX_SRCSET_WIDTH = 8192;\n// default tolerable percent difference between srcset pair widths\nvar DEFAULT_SRCSET_WIDTH_TOLERANCE = 0.08;\n\n// default quality parameter values mapped by each dpr srcset entry\nvar DPR_QUALITIES = {\n 1: 75,\n 2: 50,\n 3: 35,\n 4: 23,\n 5: 20\n};\nvar DEFAULT_DPR = [1, 2, 3, 4, 5];\nvar DEFAULT_OPTIONS = {\n domain: null,\n useHTTPS: true,\n includeLibraryParam: true,\n urlPrefix: 'https://',\n secureURLToken: null\n};\n\n/**\n * `extractUrl()` extracts URL components from a source URL string.\n * It does this by matching the URL against regular expressions. The irrelevant\n * (entire URL) matches are removed and the rest stored as their corresponding\n * URL components.\n *\n * `url` can be a partial, full URL, or full proxy URL. `useHttps` boolean\n * defaults to false.\n *\n * @returns {Object} `{ protocol, auth, host, pathname, search, hash }`\n * extracted from the URL.\n */\nfunction extractUrl(_ref) {\n var _ref$url = _ref.url,\n url = _ref$url === void 0 ? '' : _ref$url,\n _ref$useHttps = _ref.useHttps,\n useHttps = _ref$useHttps === void 0 ? false : _ref$useHttps;\n var defaultProto = useHttps ? 'https://' : 'http://';\n if (!hasProtocol(url, true)) {\n return extractUrl({\n url: defaultProto + url\n });\n }\n /**\n * Regex are hard to parse. Leaving this breakdown here for reference.\n * - `protocol`: ([^:/]+:)? - all not `:` or `/` & preceded by `:`, 0-1 times\n * - `auth`: ([^/@]+@)? - all not `/` or `@` & preceded by `@`, 0-1 times\n * - `domainAndPath`: (.*) /) - all except line breaks\n * - `domain`: `([^/]*)` - all before a `/` token\n */\n return parseURL(url);\n}\n\nfunction validateAndDestructureOptions(options) {\n var widthTolerance;\n if (options.widthTolerance !== undefined) {\n validateWidthTolerance(options.widthTolerance);\n widthTolerance = options.widthTolerance;\n } else {\n widthTolerance = DEFAULT_SRCSET_WIDTH_TOLERANCE;\n }\n var minWidth = options.minWidth === undefined ? MIN_SRCSET_WIDTH : options.minWidth;\n var maxWidth = options.maxWidth === undefined ? MAX_SRCSET_WIDTH : options.maxWidth;\n\n // Validate the range unless we're using defaults for both\n if (minWidth != MIN_SRCSET_WIDTH || maxWidth != MAX_SRCSET_WIDTH) {\n validateRange(minWidth, maxWidth);\n }\n return [widthTolerance, minWidth, maxWidth];\n}\nfunction validateRange(min, max) {\n if (!(Number.isInteger(min) && Number.isInteger(max)) || min <= 0 || max <= 0 || min > max) {\n throw new Error(\"The min and max srcset widths can only be passed positive Number values, and min must be less than max. Found min: \".concat(min, \" and max: \").concat(max, \".\"));\n }\n}\nfunction validateWidthTolerance(widthTolerance) {\n if (typeof widthTolerance != 'number' || widthTolerance < 0.01) {\n throw new Error('The srcset widthTolerance must be a number greater than or equal to 0.01');\n }\n}\nfunction validateWidths(customWidths) {\n if (!Array.isArray(customWidths) || !customWidths.length) {\n throw new Error('The widths argument can only be passed a valid non-empty array of integers');\n } else {\n var allPositiveIntegers = customWidths.every(function (width) {\n return Number.isInteger(width) && width > 0;\n });\n if (!allPositiveIntegers) {\n throw new Error('A custom widths argument can only contain positive integer values');\n }\n }\n}\nfunction validateVariableQuality(disableVariableQuality) {\n if (typeof disableVariableQuality != 'boolean') {\n throw new Error('The disableVariableQuality argument can only be passed a Boolean value');\n }\n}\nfunction validateDevicePixelRatios(devicePixelRatios) {\n if (!Array.isArray(devicePixelRatios) || !devicePixelRatios.length) {\n throw new Error('The devicePixelRatios argument can only be passed a valid non-empty array of integers');\n } else {\n var allValidDPR = devicePixelRatios.every(function (dpr) {\n return typeof dpr === 'number' && dpr >= 1 && dpr <= 5;\n });\n if (!allValidDPR) {\n throw new Error('The devicePixelRatios argument can only contain positive integer values between 1 and 5');\n }\n }\n}\nfunction validateVariableQualities(variableQualities) {\n if (_typeof(variableQualities) !== 'object') {\n throw new Error('The variableQualities argument can only be an object');\n }\n}\n\nvar ImgixClient = /*#__PURE__*/function () {\n function ImgixClient() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, ImgixClient);\n this.settings = _objectSpread2(_objectSpread2({}, DEFAULT_OPTIONS), opts);\n // a cache to store memoized srcset width-pairs\n this.targetWidthsCache = {};\n if (typeof this.settings.domain != 'string') {\n throw new Error('ImgixClient must be passed a valid string domain');\n }\n if (DOMAIN_REGEX.exec(this.settings.domain) == null) {\n throw new Error('Domain must be passed in as fully-qualified ' + 'domain name and should not include a protocol or any path ' + 'element, i.e. \"example.imgix.net\".');\n }\n if (this.settings.includeLibraryParam) {\n this.settings.libraryParam = 'js-' + ImgixClient.version();\n }\n this.settings.urlPrefix = this.settings.useHTTPS ? 'https://' : 'http://';\n }\n _createClass(ImgixClient, [{\n key: \"buildURL\",\n value: function buildURL() {\n var rawPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = this._sanitizePath(rawPath, options);\n var finalParams = this._buildParams(params, options);\n if (!!this.settings.secureURLToken) {\n finalParams = this._signParams(path, finalParams);\n }\n return this.settings.urlPrefix + this.settings.domain + path + finalParams;\n }\n\n /**\n *`_buildURL` static method allows full URLs to be formatted for use with\n * imgix.\n *\n * - If the source URL has included parameters, they are merged with\n * the `params` passed in as an argument.\n * - URL must match `{host}/{pathname}?{query}` otherwise an error is thrown.\n *\n * @param {String} url - full source URL path string, required\n * @param {Object} params - imgix params object, optional\n * @param {Object} options - imgix client options, optional\n *\n * @returns URL string formatted to imgix specifications.\n *\n * @example\n * const client = ImgixClient\n * const params = { w: 100 }\n * const opts = { useHttps: true }\n * const src = \"sdk-test.imgix.net/amsterdam.jpg?h=100\"\n * const url = client._buildURL(src, params, opts)\n * console.log(url)\n * // => \"https://sdk-test.imgix.net/amsterdam.jpg?h=100&w=100\"\n */\n }, {\n key: \"_buildParams\",\n value: function _buildParams() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // If a custom encoder is present, use it\n // Otherwise just use the encodeURIComponent\n var useCustomEncoder = !!options.encoder;\n var customEncoder = options.encoder;\n var queryParams = [].concat(_toConsumableArray(this.settings.libraryParam ? [\"ixlib=\".concat(this.settings.libraryParam)] : []), _toConsumableArray(Object.entries(params).reduce(function (prev, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n if (value == null) {\n return prev;\n }\n var encodedKey = useCustomEncoder ? customEncoder(key, value) : encodeURIComponent(key);\n var encodedValue = key.substr(-2) === '64' ? useCustomEncoder ? customEncoder(value, key) : Base64.encodeURI(value) : useCustomEncoder ? customEncoder(value, key) : encodeURIComponent(value);\n prev.push(\"\".concat(encodedKey, \"=\").concat(encodedValue));\n return prev;\n }, [])));\n return \"\".concat(queryParams.length > 0 ? '?' : '').concat(queryParams.join('&'));\n }\n }, {\n key: \"_signParams\",\n value: function _signParams(path, queryParams) {\n var signatureBase = this.settings.secureURLToken + path + queryParams;\n var signature = md5(signatureBase);\n return queryParams.length > 0 ? queryParams + '&s=' + signature : '?s=' + signature;\n }\n\n /**\n * \"Sanitize\" the path of the image URL.\n * Ensures that the path has a leading slash, and that the path is correctly\n * encoded. If it's a proxy path (begins with http/https), then encode the\n * whole path as a URI component, otherwise only encode specific characters.\n * @param {string} path The URL path of the image\n * @param {Object} options Sanitization options\n * @param {boolean} options.encode Whether to encode the path, default true\n * @returns {string} The sanitized path\n */\n }, {\n key: \"_sanitizePath\",\n value: function _sanitizePath(path) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Strip leading slash first (we'll re-add after encoding)\n var _path = path.replace(/^\\//, '');\n if (options.disablePathEncoding) {\n return '/' + _path;\n }\n if (options.encoder) {\n _path = options.encoder(_path);\n } else if (/^https?:\\/\\//.test(_path)) {\n // Use de/encodeURIComponent to ensure *all* characters are handled,\n // since it's being used as a path\n _path = encodeURIComponent(_path);\n } else {\n // Use de/encodeURI if we think the path is just a path,\n // so it leaves legal characters like '/' and '@' alone\n _path = encodeURI(_path).replace(/[#?:+]/g, encodeURIComponent);\n }\n return '/' + _path;\n }\n }, {\n key: \"buildSrcSet\",\n value: function buildSrcSet(path) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var w = params.w,\n h = params.h;\n if (w || h) {\n return this._buildDPRSrcSet(path, params, options);\n } else {\n return this._buildSrcSetPairs(path, params, options);\n }\n }\n\n /**\n * _buildSrcSet static method allows full URLs to be used when generating\n * imgix formatted `srcset` string values.\n *\n * - If the source URL has included parameters, they are merged with\n * the `params` passed in as an argument.\n * - URL must match `{host}/{pathname}?{query}` otherwise an error is thrown.\n *\n * @param {String} url - full source URL path string, required\n * @param {Object} params - imgix params object, optional\n * @param {Object} srcsetModifiers - srcset modifiers, optional\n * @param {Object} clientOptions - imgix client options, optional\n * @returns imgix `srcset` for full URLs.\n */\n }, {\n key: \"_buildSrcSetPairs\",\n value: function _buildSrcSetPairs(path) {\n var _this = this;\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _validateAndDestructu = validateAndDestructureOptions(options),\n _validateAndDestructu2 = _slicedToArray(_validateAndDestructu, 3),\n widthTolerance = _validateAndDestructu2[0],\n minWidth = _validateAndDestructu2[1],\n maxWidth = _validateAndDestructu2[2];\n var targetWidthValues;\n if (options.widths) {\n validateWidths(options.widths);\n targetWidthValues = _toConsumableArray(options.widths);\n } else {\n targetWidthValues = ImgixClient.targetWidths(minWidth, maxWidth, widthTolerance, this.targetWidthsCache);\n }\n var srcset = targetWidthValues.map(function (w) {\n return \"\".concat(_this.buildURL(path, _objectSpread2(_objectSpread2({}, params), {}, {\n w: w\n }), options), \" \").concat(w, \"w\");\n });\n return srcset.join(',\\n');\n }\n }, {\n key: \"_buildDPRSrcSet\",\n value: function _buildDPRSrcSet(path) {\n var _this2 = this;\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (options.devicePixelRatios) {\n validateDevicePixelRatios(options.devicePixelRatios);\n }\n var targetRatios = options.devicePixelRatios || DEFAULT_DPR;\n var disableVariableQuality = options.disableVariableQuality || false;\n if (!disableVariableQuality) {\n validateVariableQuality(disableVariableQuality);\n }\n if (options.variableQualities) {\n validateVariableQualities(options.variableQualities);\n }\n var qualities = _objectSpread2(_objectSpread2({}, DPR_QUALITIES), options.variableQualities);\n var withQuality = function withQuality(path, params, dpr) {\n return \"\".concat(_this2.buildURL(path, _objectSpread2(_objectSpread2({}, params), {}, {\n dpr: dpr,\n q: params.q || qualities[dpr] || qualities[Math.floor(dpr)]\n }), options), \" \").concat(dpr, \"x\");\n };\n var srcset = disableVariableQuality ? targetRatios.map(function (dpr) {\n return \"\".concat(_this2.buildURL(path, _objectSpread2(_objectSpread2({}, params), {}, {\n dpr: dpr\n }), options), \" \").concat(dpr, \"x\");\n }) : targetRatios.map(function (dpr) {\n return withQuality(path, params, dpr);\n });\n return srcset.join(',\\n');\n }\n }], [{\n key: \"version\",\n value: function version() {\n return VERSION;\n }\n }, {\n key: \"_buildURL\",\n value: function _buildURL(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (url == null) {\n return '';\n }\n var _extractUrl = extractUrl({\n url: url,\n useHTTPS: options.useHTTPS\n }),\n host = _extractUrl.host,\n pathname = _extractUrl.pathname,\n search = _extractUrl.search;\n // merge source URL parameters with options parameters\n var combinedParams = _objectSpread2(_objectSpread2({}, getQuery(search)), params);\n\n // throw error if no host or no pathname present\n if (!host.length || !pathname.length) {\n throw new Error('_buildURL: URL must match {host}/{pathname}?{query}');\n }\n var client = new ImgixClient(_objectSpread2({\n domain: host\n }, options));\n return client.buildURL(pathname, combinedParams);\n }\n }, {\n key: \"_buildSrcSet\",\n value: function _buildSrcSet(url) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var srcsetModifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var clientOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (url == null) {\n return '';\n }\n var _extractUrl2 = extractUrl({\n url: url,\n useHTTPS: clientOptions.useHTTPS\n }),\n host = _extractUrl2.host,\n pathname = _extractUrl2.pathname,\n search = _extractUrl2.search;\n // merge source URL parameters with options parameters\n var combinedParams = _objectSpread2(_objectSpread2({}, getQuery(search)), params);\n\n // throw error if no host or no pathname present\n if (!host.length || !pathname.length) {\n throw new Error('_buildOneStepURL: URL must match {host}/{pathname}?{query}');\n }\n var client = new ImgixClient(_objectSpread2({\n domain: host\n }, clientOptions));\n return client.buildSrcSet(pathname, combinedParams, srcsetModifiers);\n }\n\n // returns an array of width values used during srcset generation\n }, {\n key: \"targetWidths\",\n value: function targetWidths() {\n var minWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;\n var maxWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8192;\n var widthTolerance = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.08;\n var cache = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var minW = Math.floor(minWidth);\n var maxW = Math.floor(maxWidth);\n validateRange(minWidth, maxWidth);\n validateWidthTolerance(widthTolerance);\n var cacheKey = widthTolerance + '/' + minW + '/' + maxW;\n\n // First, check the cache.\n if (cacheKey in cache) {\n return cache[cacheKey];\n }\n if (minW === maxW) {\n return [minW];\n }\n var resolutions = [];\n var currentWidth = minW;\n while (currentWidth < maxW) {\n // While the currentWidth is less than the maxW, push the rounded\n // width onto the list of resolutions.\n resolutions.push(Math.round(currentWidth));\n currentWidth *= 1 + widthTolerance * 2;\n }\n\n // At this point, the last width in resolutions is less than the\n // currentWidth that caused the loop to terminate. This terminating\n // currentWidth is greater than or equal to the maxW. We want to\n // to stop at maxW, so we make sure our maxW is larger than the last\n // width in resolutions before pushing it (if it's equal we're done).\n if (resolutions[resolutions.length - 1] < maxW) {\n resolutions.push(maxW);\n }\n cache[cacheKey] = resolutions;\n return resolutions;\n }\n }]);\n return ImgixClient;\n}();\n\nexport { ImgixClient as default };\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/*\nCopyright © 2015 by Coursera\nLicensed under the Apache License 2.0, seen https://github.com/coursera/react-imgix/blob/master/LICENSE\n\nMinor syntax modifications have been made\n*/\n\nvar PACKAGE_VERSION = \"9.10.0\";\nimport ImgixClient from \"@imgix/js-core\";\nimport extractQueryParams from \"./extractQueryParams\";\n\n// @see https://www.imgix.com/docs/reference\nvar PARAM_EXPANSION = Object.freeze({\n // Adjustment\n brightness: \"bri\",\n contrast: \"con\",\n exposure: \"exp\",\n gamma: \"gam\",\n highlights: \"high\",\n hue: \"hue\",\n invert: \"invert\",\n saturation: \"sat\",\n shaddows: \"shad\",\n shadows: \"shad\",\n sharpness: \"sharp\",\n \"unsharp-mask\": \"usm\",\n \"unsharp-radius\": \"usmrad\",\n vibrance: \"vib\",\n // Automatic\n \"auto-features\": \"auto\",\n // Background\n \"background-color\": \"bg\",\n // Blend\n blend: \"blend\",\n \"blend-mode\": \"bm\",\n \"blend-align\": \"ba\",\n \"blend-alpha\": \"balph\",\n \"blend-padding\": \"bp\",\n \"blend-width\": \"bw\",\n \"blend-height\": \"bh\",\n \"blend-fit\": \"bf\",\n \"blend-crop\": \"bc\",\n \"blend-size\": \"bs\",\n \"blend-x\": \"bx\",\n \"blend-y\": \"by\",\n // Border & Padding\n border: \"border\",\n padding: \"pad\",\n // Face Detection\n \"face-index\": \"faceindex\",\n \"face-padding\": \"facepad\",\n faces: \"faces\",\n // Format\n \"chroma-subsampling\": \"chromasub\",\n \"color-quantization\": \"colorquant\",\n download: \"dl\",\n DPI: \"dpi\",\n format: \"fm\",\n \"lossless-compression\": \"lossless\",\n quality: \"q\",\n // Mask\n \"mask-image\": \"mask\",\n // Mask\n \"noise-blur\": \"nr\",\n \"noise-sharpen\": \"nrs\",\n // Palette n/a\n // PDF n/a\n // Pixel Density n/a\n\n // Rotation\n \"flip-direction\": \"flip\",\n orientation: \"or\",\n \"rotation-angle\": \"rot\",\n // Size\n \"crop-mode\": \"crop\",\n \"fit-mode\": \"fit\",\n \"image-height\": \"h\",\n \"image-width\": \"w\",\n // Stylize\n blurring: \"blur\",\n halftone: \"htn\",\n monotone: \"mono\",\n pixelate: \"px\",\n \"sepia-tone\": \"sepia\",\n // Trim TODO\n // Watermark TODO\n\n // Extra\n height: \"h\",\n width: \"w\"\n});\nvar DEFAULT_OPTIONS = Object.freeze({\n auto: \"format\" // http://www.imgix.com/docs/reference/automatic#param-auto\n});\n\n/**\n * Construct a URL for an image with an Imgix proxy, expanding image options\n * per the [API reference docs](https://www.imgix.com/docs/reference).\n * @param {String} src src of raw image\n * @param {Object} longImgixParams map of image API options, in long or short form per expansion rules\n * @return {String} URL of image src transformed by Imgix\n */\nfunction constructUrl(src, longImgixParams, srcOptions) {\n if (!src) {\n return \"\";\n }\n var params = compactParamKeys(longImgixParams);\n var _extractClientAndPath = extractClientAndPathComponents(src),\n client = _extractClientAndPath.client,\n pathComponents = _extractClientAndPath.pathComponents;\n return client.buildURL(pathComponents.join(\"/\"), params, srcOptions);\n}\nfunction compactParamKeys(longImgixParams) {\n var keys = Object.keys(longImgixParams);\n var keysLength = keys.length;\n var params = {};\n for (var i = 0; i < keysLength; i++) {\n var key = keys[i];\n if (PARAM_EXPANSION[key]) {\n params[PARAM_EXPANSION[key]] = longImgixParams[key];\n } else {\n params[key] = longImgixParams[key];\n }\n }\n return params;\n}\nfunction extractClientAndPathComponents(src) {\n var _src$split = src.split(\"://\"),\n _src$split2 = _slicedToArray(_src$split, 2),\n scheme = _src$split2[0],\n rest = _src$split2[1];\n var _rest$split = rest.split(\"/\"),\n _rest$split2 = _toArray(_rest$split),\n domain = _rest$split2[0],\n pathComponents = _rest$split2.slice(1);\n var useHTTPS = scheme == \"https\";\n var client = new ImgixClient({\n domain: domain,\n useHTTPS: useHTTPS,\n includeLibraryParam: false\n });\n return {\n client: client,\n pathComponents: pathComponents\n };\n}\nfunction buildURLPublic(src) {\n var imgixParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disableLibraryParam = options.disableLibraryParam,\n disablePathEncoding = options.disablePathEncoding;\n var _extractQueryParams = extractQueryParams(src),\n _extractQueryParams2 = _slicedToArray(_extractQueryParams, 2),\n rawSrc = _extractQueryParams2[0],\n params = _extractQueryParams2[1];\n return constructUrl(rawSrc, _extends({}, params, imgixParams, disableLibraryParam ? {} : {\n ixlib: \"react-\".concat(PACKAGE_VERSION)\n }), {\n disablePathEncoding: disablePathEncoding\n });\n}\nexport default constructUrl;\nexport { buildURLPublic, compactParamKeys, extractClientAndPathComponents };\n//# sourceMappingURL=constructUrl.js.map","export default function extractQueryParams(src) {\n var splitSrc = src.split(\"?\");\n var url = splitSrc[0];\n var query = splitSrc[1];\n if (!query) {\n return [url, {}];\n }\n var paramsPairs = query.split(\"&\");\n var params = {};\n var len = paramsPairs.length;\n for (var i = 0; i < len; i++) {\n var param = paramsPairs[i];\n var splitParam = param.split(\"=\");\n var key = splitParam[0];\n var val = splitParam[1];\n params[key] = decodeURIComponent(val);\n }\n return [url, params];\n}\n//# sourceMappingURL=extractQueryParams.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from \"react\";\nimport { warning, shallowEqual } from \"../common\";\nvar ShouldComponentUpdateHOC = function ShouldComponentUpdateHOC(WrappedComponent) {\n var ShouldComponentUpdateHOC = /*#__PURE__*/function (_Component) {\n function ShouldComponentUpdateHOC() {\n var _this;\n _classCallCheck(this, ShouldComponentUpdateHOC);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, ShouldComponentUpdateHOC, [].concat(args));\n _defineProperty(_this, \"shouldComponentUpdate\", function (nextProps) {\n var props = _this.props;\n warning(nextProps.onMounted == _this.props.onMounted, \"props.onMounted() is changing between renders. This is probably not intended. Ensure that a class method is being passed to Imgix rather than a function that is created every render. If this is intended, ignore this warning.\");\n var customizer = function customizer(oldProp, newProp, key) {\n if (key === \"children\") {\n return shallowEqual(oldProp, newProp);\n }\n if (key === \"imgixParams\") {\n return shallowEqual(oldProp, newProp, function (a, b) {\n if (Array.isArray(a)) {\n return shallowEqual(a, b);\n }\n return undefined;\n });\n }\n if (key === \"htmlAttributes\") {\n return shallowEqual(oldProp, newProp);\n }\n if (key === \"attributeConfig\") {\n return shallowEqual(oldProp, newProp);\n }\n return undefined; // handled by shallowEqual\n };\n var propsAreEqual = shallowEqual(props, nextProps, customizer);\n return !propsAreEqual;\n });\n return _this;\n }\n _inherits(ShouldComponentUpdateHOC, _Component);\n return _createClass(ShouldComponentUpdateHOC, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n }\n }]);\n }(Component);\n ShouldComponentUpdateHOC.displayName = \"ShouldComponentUpdateHOC(\".concat(WrappedComponent.displayName, \")\");\n return ShouldComponentUpdateHOC;\n};\nexport { ShouldComponentUpdateHOC };\n//# sourceMappingURL=shouldComponentUpdateHOC.js.map","var _excluded = [\"children\"];\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nimport React, { useContext, createContext } from \"react\";\nvar ImgixContext = /*#__PURE__*/createContext();\n\n/**\n * `useImgixContext()` tries to invoke `React.useContext()`. If no context\n * is available, this function returns `undefined`.\n * @returns The context defined by the closest parent `ImgixProvider`.\n */\nfunction useImgixContext() {\n return useContext(ImgixContext);\n}\n\n/**\n * Creates a Provider component that passes `reactImgixProps` as the Context\n * for child components who use the `useImgixContext()` custom hook or\n * `React.useContext()` API.\n * @param {React.Element } children\n * @param {Object} reactImgixProps\n * @returns React.Element\n */\nfunction ImgixProvider(_ref) {\n var children = _ref.children,\n reactImgixProps = _objectWithoutProperties(_ref, _excluded);\n var value = reactImgixProps;\n if (children == null || children.length < 1) {\n console.error(\"ImgixProvider must have at least one Imgix child component\");\n }\n return /*#__PURE__*/React.createElement(ImgixContext.Provider, {\n value: value\n }, children);\n}\nexport { ImgixProvider, useImgixContext };\n//# sourceMappingURL=imgixProvider.js.map","function _objectEntries(obj) {\n var entries = [];\n var keys = Object.keys(obj);\n for (var k = 0; k < keys.length; k++) entries.push([keys[k], obj[keys[k]]]);\n return entries;\n}\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { useImgixContext } from \"../HOCs\";\n\n/**\n * Merges the `src` object into the `destination` object. Destination values are\n * not overwritten by source values. Destination properties that resolve to\n * `undefined` or `null` are not overwritten if a destination value exists\n * unless destination key does not exist . It recursively merges the\n * `imgixParams` and `htmlAttributes` values.\n *\n * @param {Object} src - The Provider component's props object\n * @param {Object} destination - The child component's props object\n * @returns Object with the combined values from `src` & `destination` Objects\n *\n * @example\n * const src = {\n * width: 100,\n * height: 200,\n * imgixParams: { ar: \"1:2\", dpr: 2},\n * htmlAttributes: { styles: \"width: 50\" }\n * }\n * const destination = {\n * width: 101,\n * height: 201,\n * imgixParams: { dpr: 1 },\n * htmlAttributes: { styles: \"width: 100\" }\n * }\n * const result = mergeProps(src, destination);\n *\n * {\n * width: 101,\n * height: 201,\n * imgixParams: { ar: \"1:2\", dpr: 1 },\n * htmlAttributes: { styles: \"width: 100\" }\n * }\n *\n */\nvar _mergeProps = function mergeProps(src, destination) {\n if (src == null && destination !== null) {\n return destination;\n }\n if (src !== null && destination == null) {\n return src;\n }\n if (src == null && destination == null) {\n return {};\n }\n var newProps = _objectSpread({}, destination);\n var newPropKeys = Object.keys(newProps);\n for (var _i = 0, _Object$entries = _objectEntries(src); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n k = _Object$entries$_i[0],\n v = _Object$entries$_i[1];\n if (newPropKeys.indexOf(k) == -1 && v !== null) {\n newProps[k] = v;\n }\n // recursively merge imgixParams and htmlAttributes\n if (k === \"imgixParams\" || k === \"htmlAttributes\") {\n if (v !== null) {\n newProps[k] = _mergeProps(src[k], newProps[k]);\n }\n }\n }\n return newProps;\n};\n\n/**\n * `mergeComponentPropsHOF` tries to invoke `React.useContext()`. If context is\n * `undefined`, context is being accessed outside of an `ImgixContext` provider\n * and the Component is returned as is.\n *\n * Otherwise, it merges a Component's props with the `ImgixContext` props and\n * return a Component with the merged `props`.\n * @param {React.Element r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nimport { PARAMS_EXP_MAP } from \"./constants\";\n\n/**\n * Creates a 1-step, or complete, URL from `domain` and `src` Strings.\n *\n * - First, the function checks if src has a defined `domain`. If it does, it\n * checks to see if `src` has a scheme, and prepends \"http\" or \"https\" as needed\n * - Otherwise, formatSrc formats `domain` and `src` Strings.\n * - First it strips the two strings of the leading and `/` or trailing `/`\n * slash characters.\n * - Then, it joins the two strings on a `/` character. IE,\n * `strippedDomain + \"/\" + strippedSrc`.\n * - If `domain` String argument `null` or `undefined`, the function returns\n * the original `src` String.\n *\n * @param {String} src - URL that is either 1-step or 2-step\n * @param {String} domain - Domain string, optional\n * @returns 1-step, or complete, URL String. Ex, _assets.ix.net/foo/bar.jpg_\n */\nexport function formatSrc(src, domain) {\n var useHTTPS = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // ignore if already has protocol\n if (src.indexOf(\"://\") !== -1) {\n return src;\n } else {\n // prepend domain if defined\n if (domain == null) {\n return src;\n }\n var strippedDomain = domain ? domain.replace(/^\\/|\\/$/g, \"\") : \"\";\n var strippedSrc = src.replace(/^\\/|\\/$/g, \"\");\n var prefix = useHTTPS ? \"https://\" : \"http://\";\n return prefix + strippedDomain + \"/\" + strippedSrc;\n }\n}\n\n/**\n * A function that formats the following values in the props Object:\n *\n * - `width`: if undefined or negative gets set to `undefined`.\n * - `height`: if undefined or negative gets set to `undefined`.\n * - `src`: concatenated to `domain` if `src` defined and has no domain.\n *\n * @param {Object} props\n * @returns A formatted `props` Object.\n */\nexport var formatProps = function formatProps(props) {\n var width = !props.width || props.width <= 1 ? undefined : props.width;\n var height = !props.height || props.height <= 1 ? undefined : props.height;\n var src = props.src ? formatSrc(props.src, props.domain, props.useHttps) : undefined;\n return _extends({}, props, {\n width: width,\n height: height,\n src: src\n });\n};\n\n/**\n * Function that shortens params keys according to the imgix spec.\n * @param {Object} params - imgixParams object\n * @returns imgixParams object with shortened keys\n * @see https://www.imgix.com/docs/reference\n */\nexport var collapseImgixParams = function collapseImgixParams(params) {\n if (params == null) {\n return params;\n }\n var compactedParams = {};\n for (var _i = 0, _Object$entries = _objectEntries(params); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n k = _Object$entries$_i[0],\n v = _Object$entries$_i[1];\n if (PARAMS_EXP_MAP[k]) {\n compactedParams[PARAMS_EXP_MAP[k]] = v;\n } else {\n compactedParams[k] = v;\n }\n }\n return compactedParams;\n};\n\n/**\n * `processPropsHOF` takes a Component's props and formats them to adhere to the\n * ImgixClient's specifications.\n *\n * @param {React.Element} Component - A react component with\n * defined `props`.\n * @returns A React Component who's `props` have been formatted and\n * `imgixParams` have been collapsed.\n */\nexport var processPropsHOF = function processPropsHOF(Component) {\n return function (props) {\n var formattedProps = formatProps(props);\n var formattedImgixParams = collapseImgixParams(formattedProps.imgixParams);\n return /*#__PURE__*/React.createElement(Component, _extends({}, formattedProps, {\n imgixParams: formattedImgixParams\n }));\n };\n};\n//# sourceMappingURL=propFormatter.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"width\", \"w\", \"height\", \"h\", \"q\"],\n _excluded2 = [\"width\", \"w\", \"height\", \"h\"];\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport \"./array-findindex\";\nimport { config } from \"./common\";\nimport { PACKAGE_VERSION } from \"./constants\";\nimport constructUrl, { compactParamKeys, extractClientAndPathComponents } from \"./constructUrl\";\nimport extractQueryParams from \"./extractQueryParams\";\nimport { ShouldComponentUpdateHOC } from \"./HOCs\";\nimport { mergeComponentPropsHOF, processPropsHOF } from \"./HOFs\";\nvar NODE_ENV = process.env.NODE_ENV;\nvar buildKey = function buildKey(idx) {\n return \"react-imgix-\".concat(idx);\n};\nvar defaultImgixParams = {\n auto: [\"format\"]\n};\nvar defaultAttributeMap = {\n src: \"src\",\n srcSet: \"srcSet\",\n sizes: \"sizes\"\n};\nvar noop = function noop() {};\nvar COMMON_PROP_TYPES = {\n className: PropTypes.string,\n onMounted: PropTypes.func,\n htmlAttributes: PropTypes.object,\n alt: PropTypes.string\n};\nvar SHARED_IMGIX_AND_SOURCE_PROP_TYPES = _extends({}, COMMON_PROP_TYPES, {\n disableQualityByDPR: PropTypes.bool,\n disableSrcSet: PropTypes.bool,\n disableLibraryParam: PropTypes.bool,\n disablePathEncoding: PropTypes.bool,\n imgixParams: PropTypes.object,\n sizes: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number,\n src: PropTypes.string.isRequired,\n srcSetOptions: PropTypes.shape({\n widths: PropTypes.arrayOf(PropTypes.number),\n widthTolerance: PropTypes.number,\n minWidth: PropTypes.number,\n maxWidth: PropTypes.number,\n devicePixelRatios: PropTypes.arrayOf(PropTypes.number)\n })\n});\nvar REACT_IMGIX_PROP_TYPES = _extends({}, SHARED_IMGIX_AND_SOURCE_PROP_TYPES, {\n alt: PropTypes.string\n});\nvar OVERSIZE_IMAGE_TOLERANCE = 500;\nvar performanceObserver;\n\n/**\n * Validates that an aspect ratio is in the format w:h. If false is returned, the aspect ratio is in the wrong format.\n */\nfunction aspectRatioIsValid(aspectRatio) {\n if (typeof aspectRatio !== \"string\") {\n return false;\n }\n return /^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$/.test(aspectRatio);\n}\nvar setParentRef = function setParentRef(parentRef, el) {\n if (!parentRef) {\n return;\n }\n\n // assign ref based on if it's a callback vs object\n if (typeof parentRef === \"function\") {\n parentRef(el);\n } else {\n parentRef.current = el;\n }\n};\nfunction buildSrcSet(rawSrc) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _extractClientAndPath = extractClientAndPathComponents(rawSrc),\n client = _extractClientAndPath.client,\n pathComponents = _extractClientAndPath.pathComponents;\n var compactedParams = compactParamKeys(params);\n return client.buildSrcSet(pathComponents.join(\"/\"), compactedParams, options);\n}\n\n/**\n * Build a imgix source url with parameters from a raw url\n */\nfunction buildSrc(_ref) {\n var inputSrc = _ref.src,\n width = _ref.width,\n height = _ref.height,\n disableLibraryParam = _ref.disableLibraryParam,\n disableSrcSet = _ref.disableSrcSet,\n disablePathEncoding = _ref.disablePathEncoding,\n imgixParams = _ref.imgixParams,\n disableQualityByDPR = _ref.disableQualityByDPR,\n srcSetOptions = _ref.srcSetOptions;\n var fixedSize = width != null || height != null;\n var _extractQueryParams = extractQueryParams(inputSrc),\n _extractQueryParams2 = _slicedToArray(_extractQueryParams, 2),\n rawSrc = _extractQueryParams2[0],\n params = _extractQueryParams2[1];\n var srcImgixParams = _extends({}, params, imgixParams, disableLibraryParam ? {} : {\n ixlib: \"react-\".concat(PACKAGE_VERSION)\n }, fixedSize && height ? {\n height: height\n } : {}, fixedSize && width ? {\n width: width\n } : {});\n var srcOptions = {\n disablePathEncoding: disablePathEncoding\n };\n var src = constructUrl(rawSrc, srcImgixParams, srcOptions);\n var srcSet;\n if (disableSrcSet) {\n srcSet = src;\n } else {\n var sharedSrcSetOptions = _extends({}, srcSetOptions, {\n disablePathEncoding: disablePathEncoding\n });\n if (fixedSize) {\n var _width = srcImgixParams.width,\n w = srcImgixParams.w,\n _height = srcImgixParams.height,\n h = srcImgixParams.h,\n q = srcImgixParams.q,\n urlParams = _objectWithoutProperties(srcImgixParams, _excluded);\n if (q) {\n urlParams[\"q\"] = q;\n }\n var finalWidth = _width || w;\n var finalHeight = _height || h;\n if (finalWidth) {\n urlParams[\"w\"] = finalWidth;\n }\n if (finalHeight) {\n urlParams[\"h\"] = finalHeight;\n }\n srcSet = buildSrcSet(rawSrc, urlParams, _extends({\n disableVariableQuality: disableQualityByDPR\n }, sharedSrcSetOptions));\n } else {\n var _width2 = srcImgixParams.width,\n _w = srcImgixParams.w,\n _height2 = srcImgixParams.height,\n _h = srcImgixParams.h,\n _urlParams = _objectWithoutProperties(srcImgixParams, _excluded2);\n var aspectRatio = imgixParams.ar;\n var showARWarning = aspectRatio != null && aspectRatioIsValid(aspectRatio) === false;\n srcSet = buildSrcSet(rawSrc, _urlParams, sharedSrcSetOptions);\n if (NODE_ENV !== \"production\" && showARWarning && config.warnings.invalidARFormat) {\n console.warn(\"[Imgix] The aspect ratio passed (\\\"\".concat(aspectRatio, \"\\\") is not in the correct format. The correct format is \\\"W:H\\\".\"));\n }\n }\n }\n return {\n src: src,\n srcSet: srcSet\n };\n}\n\n/**\n * Use the PerfomanceObser API to warn if an LCP element is loaded lazily.\n */\nfunction watchForLazyLCP(imgRef) {\n if (!performanceObserver && typeof window !== 'undefined' && window.PerformanceObserver) {\n performanceObserver = new PerformanceObserver(function (entryList) {\n var _lcpCandidate$element;\n var entries = entryList.getEntries();\n if (entries.length === 0) {\n return;\n }\n\n // The most recent LCP entry is the only one that can be the real LCP element.\n var lcpCandidate = entries[entries.length - 1];\n if (((_lcpCandidate$element = lcpCandidate.element) === null || _lcpCandidate$element === void 0 ? void 0 : _lcpCandidate$element.getAttribute(\"loading\")) === \"lazy\") {\n console.warn(\"An image with URL \".concat(imgRef.src, \" was detected as a possible LCP element (https://web.dev/lcp) \") + \"and also has 'loading=\\\"lazy\\\"'. This can have a significant negative impact on page loading performance. \" + \"Lazy loading is not recommended for images which may render in the initial viewport.\");\n }\n });\n performanceObserver.observe({\n type: 'largest-contentful-paint',\n buffered: true\n });\n }\n}\n\n/**\n * Once the image is loaded, warn if it's intrinsic size is much larger than its rendered size.\n */\nfunction checkImageSize(imgRef) {\n var renderedWidth = imgRef.clientWidth;\n var renderedHeight = imgRef.clientHeight;\n var intrinsicWidth = imgRef.naturalWidth;\n var intrinsicHeight = imgRef.naturalHeight;\n if (intrinsicWidth > renderedWidth + OVERSIZE_IMAGE_TOLERANCE || intrinsicHeight > renderedHeight + OVERSIZE_IMAGE_TOLERANCE) {\n console.warn(\"An image with URL \".concat(imgRef.src, \" was rendered with dimensions significantly smaller than intrinsic size, \") + \"which can slow down page loading. This may be caused by a missing or inaccurate \\\"sizes\\\" property. \" + \"Rendered size: \".concat(renderedWidth, \"x\").concat(renderedHeight, \". Intrinsic size: \").concat(intrinsicWidth, \"x\").concat(intrinsicHeight, \".\"));\n }\n}\n\n/**\n * Initializes listeners for performance-related image warnings\n */\nfunction doPerformanceChecksOnLoad(imgRef) {\n // Check image size on load\n if (config.warnings.oversizeImage) {\n if (imgRef.complete) {\n checkImageSize(imgRef);\n } else {\n imgRef.addEventListener('load', function () {\n checkImageSize(imgRef);\n });\n }\n }\n if (config.warnings.lazyLCP) {\n watchForLazyLCP(imgRef);\n }\n}\n\n/**\n * Combines default imgix params with custom imgix params to make a imgix params config object\n */\nfunction imgixParams(props) {\n var params = _extends({}, defaultImgixParams, props.imgixParams);\n return _extends({}, params);\n}\n\n/**\n * React component used to render elements with Imgix\n */\nvar ReactImgix = /*#__PURE__*/function (_Component) {\n function ReactImgix(props) {\n var _this;\n _classCallCheck(this, ReactImgix);\n _this = _callSuper(this, ReactImgix, [props]);\n _this.imgRef = null;\n return _this;\n }\n _inherits(ReactImgix, _Component);\n return _createClass(ReactImgix, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (NODE_ENV === 'development' && this.imgRef) {\n doPerformanceChecksOnLoad(this.imgRef);\n }\n this.props.onMounted(this.imgRef);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props$htmlAttri,\n _this$props$htmlAttri2,\n _this$props$htmlAttri3,\n _this$props$htmlAttri4,\n _this$props$htmlAttri5,\n _this2 = this;\n var _this$props = this.props,\n disableSrcSet = _this$props.disableSrcSet,\n width = _this$props.width,\n height = _this$props.height;\n\n // Pre-render checks\n if (NODE_ENV !== \"production\" && config.warnings.sizesAttribute) {\n if (this.props.width == null && this.props.height == null && this.props.sizes == null && !this.props._inPicture) {\n console.warn(\"If width and height are not set, a sizes attribute should be passed.\");\n }\n }\n var _buildSrc = buildSrc(_extends({}, this.props, {\n type: \"img\",\n imgixParams: imgixParams(this.props)\n })),\n src = _buildSrc.src,\n srcSet = _buildSrc.srcSet;\n var attributeConfig = _extends({}, defaultAttributeMap, this.props.attributeConfig);\n var fixedSize = !!((width || (_this$props$htmlAttri = this.props.htmlAttributes) !== null && _this$props$htmlAttri !== void 0 && _this$props$htmlAttri.width) && (height || (_this$props$htmlAttri2 = this.props.htmlAttributes) !== null && _this$props$htmlAttri2 !== void 0 && _this$props$htmlAttri2.height));\n var adjustedSizes = this.props.sizes;\n if (this.props.sizes && ((_this$props$htmlAttri3 = this.props.htmlAttributes) === null || _this$props$htmlAttri3 === void 0 ? void 0 : _this$props$htmlAttri3.loading) === \"lazy\" && !fixedSize) {\n var _ref2;\n adjustedSizes = (_ref2 = \"auto, \" + adjustedSizes) !== null && _ref2 !== void 0 ? _ref2 : \"\";\n }\n var childProps = _extends({}, this.props.htmlAttributes, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, attributeConfig.sizes, adjustedSizes), \"className\", this.props.className), \"width\", width <= 1 ? null : width !== null && width !== void 0 ? width : (_this$props$htmlAttri4 = this.props.htmlAttributes) === null || _this$props$htmlAttri4 === void 0 ? void 0 : _this$props$htmlAttri4.width), \"height\", height <= 1 ? null : height !== null && height !== void 0 ? height : (_this$props$htmlAttri5 = this.props.htmlAttributes) === null || _this$props$htmlAttri5 === void 0 ? void 0 : _this$props$htmlAttri5.height), attributeConfig.src, src), \"ref\", function ref(el) {\n _this2.imgRef = el;\n if (_this2.props.htmlAttributes !== undefined && \"ref\" in _this2.props.htmlAttributes) {\n setParentRef(_this2.props.htmlAttributes.ref, _this2.imgRef);\n }\n }));\n if (!disableSrcSet) {\n childProps[attributeConfig.srcSet] = srcSet;\n }\n if (this.props.alt) {\n childProps.alt = this.props.alt;\n }\n return /*#__PURE__*/React.createElement(\"img\", childProps);\n }\n }]);\n}(Component);\n_defineProperty(ReactImgix, \"propTypes\", _extends({}, REACT_IMGIX_PROP_TYPES));\n_defineProperty(ReactImgix, \"defaultProps\", {\n disableSrcSet: false,\n onMounted: noop\n});\nReactImgix.displayName = \"ReactImgix\";\n\n/**\n * React component used to render elements with Imgix\n */\nvar PictureImpl = /*#__PURE__*/function (_Component2) {\n function PictureImpl(props) {\n var _this3;\n _classCallCheck(this, PictureImpl);\n _this3 = _callSuper(this, PictureImpl, [props]);\n _this3.pictureRef = null;\n return _this3;\n }\n _inherits(PictureImpl, _Component2);\n return _createClass(PictureImpl, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMounted(this.pictureRef);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n var children = this.props.children;\n\n // make sure all of our children have key set, otherwise we get react warnings\n var _children = React.Children.map(children, function (child, idx) {\n var _child$type;\n var childIsReactImgix = ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name) === \"mergeComponentPropsHOFInner\";\n return /*#__PURE__*/React.cloneElement(child, _extends({\n key: buildKey(idx)\n },\n // This prevents props._inPicture being set on other children if\n // they're passed, such as an component, which will cause a\n // React error\n childIsReactImgix && {\n _inPicture: true\n }));\n }) || [];\n\n /*\n We need to make sure an or is the last child so we look for one in children\n a. if we find one, move it to the last entry if it's not already there\n b. if we don't find one, warn the user as they probably want to pass one.\n */\n\n // look for an or - at the bare minimum we have to have a single element or else it will not work.\n var imgIdx = _children.findIndex(function (c) {\n return c.type === \"img\" || c.type === ReactImgix || c.type === ReactImgixWrapped;\n });\n if (imgIdx === -1 && config.warnings.fallbackImage) {\n console.warn(\"No fallback or found in the children of a component. A fallback image should be passed to ensure the image renders correctly at all dimensions.\");\n } else if (imgIdx !== _children.length - 1) {\n // found one, need to move it to the end\n _children.push(_children.splice(imgIdx, 1)[0]);\n }\n return /*#__PURE__*/React.createElement(\"picture\", {\n ref: function ref(el) {\n return _this4.pictureRef = el;\n },\n children: _children\n });\n }\n }]);\n}(Component);\n_defineProperty(PictureImpl, \"propTypes\", _extends({}, COMMON_PROP_TYPES, {\n children: PropTypes.any\n}));\n_defineProperty(PictureImpl, \"defaultProps\", {\n onMounted: noop\n});\nPictureImpl.displayName = \"ReactImgixPicture\";\n\n/**\n * React component used to render elements with Imgix\n */\nvar SourceImpl = /*#__PURE__*/function (_Component3) {\n function SourceImpl(props) {\n var _this5;\n _classCallCheck(this, SourceImpl);\n _this5 = _callSuper(this, SourceImpl, [props]);\n _this5.sourceRef = null;\n return _this5;\n }\n _inherits(SourceImpl, _Component3);\n return _createClass(SourceImpl, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.onMounted(this.sourceRef);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props$htmlAttri6,\n _this$props$htmlAttri7,\n _this6 = this;\n var _this$props2 = this.props,\n disableSrcSet = _this$props2.disableSrcSet,\n width = _this$props2.width,\n height = _this$props2.height;\n var _buildSrc2 = buildSrc(_extends({}, this.props, {\n type: \"source\",\n imgixParams: imgixParams(this.props)\n })),\n src = _buildSrc2.src,\n srcSet = _buildSrc2.srcSet;\n var attributeConfig = _extends({}, defaultAttributeMap, this.props.attributeConfig);\n var childProps = _extends({}, this.props.htmlAttributes, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, attributeConfig.sizes, this.props.sizes), \"className\", this.props.className), \"width\", width <= 1 ? null : width !== null && width !== void 0 ? width : (_this$props$htmlAttri6 = this.props.htmlAttributes) === null || _this$props$htmlAttri6 === void 0 ? void 0 : _this$props$htmlAttri6.width), \"height\", height <= 1 ? null : height !== null && height !== void 0 ? height : (_this$props$htmlAttri7 = this.props.htmlAttributes) === null || _this$props$htmlAttri7 === void 0 ? void 0 : _this$props$htmlAttri7.height), \"ref\", function ref(el) {\n _this6.sourceRef = el;\n if (_this6.props.htmlAttributes !== undefined && \"ref\" in _this6.props.htmlAttributes) {\n setParentRef(_this6.props.htmlAttributes.ref, _this6.sourceRef);\n }\n }));\n\n // inside of a element a element ignores its src\n // attribute in favor of srcSet so we set that with either an actual\n // srcSet or a single src\n if (disableSrcSet) {\n childProps[attributeConfig.srcSet] = src;\n } else {\n childProps[attributeConfig.srcSet] = \"\".concat(srcSet);\n }\n // for now we'll take media from htmlAttributes which isn't ideal because\n // a) this isn't an \n // b) passing objects as props means that react will always rerender\n // since objects dont respond correctly to ===\n\n return /*#__PURE__*/React.createElement(\"source\", childProps);\n }\n }]);\n}(Component);\n_defineProperty(SourceImpl, \"propTypes\", _extends({}, SHARED_IMGIX_AND_SOURCE_PROP_TYPES));\n_defineProperty(SourceImpl, \"defaultProps\", {\n disableSrcSet: false,\n onMounted: noop\n});\nSourceImpl.displayName = \"ReactImgixSource\";\nvar ReactImgixWrapped = mergeComponentPropsHOF(processPropsHOF(ShouldComponentUpdateHOC(ReactImgix)));\nvar Picture = mergeComponentPropsHOF(processPropsHOF(ShouldComponentUpdateHOC(PictureImpl)));\nvar Source = mergeComponentPropsHOF(processPropsHOF(ShouldComponentUpdateHOC(SourceImpl)));\nexport default ReactImgixWrapped;\nexport { ReactImgix as __ReactImgixImpl, Picture, Source, SourceImpl as __SourceImpl, PictureImpl as __PictureImpl // for testing\n};\n//# sourceMappingURL=react-imgix.js.map","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\nfunction getTypes(props) {\n var allowedTypes = [];\n types.forEach(function (type) {\n if (props[type]) {\n allowedTypes.push(type);\n }\n });\n return allowedTypes;\n}\n\nfunction getContentRect(node, types) {\n var calculations = {};\n\n if (types.indexOf('client') > -1) {\n calculations.client = {\n top: node.clientTop,\n left: node.clientLeft,\n width: node.clientWidth,\n height: node.clientHeight\n };\n }\n\n if (types.indexOf('offset') > -1) {\n calculations.offset = {\n top: node.offsetTop,\n left: node.offsetLeft,\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n }\n\n if (types.indexOf('scroll') > -1) {\n calculations.scroll = {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n }\n\n if (types.indexOf('bounds') > -1) {\n var rect = node.getBoundingClientRect();\n calculations.bounds = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n\n if (types.indexOf('margin') > -1) {\n var styles = getComputedStyle(node);\n calculations.margin = {\n top: styles ? parseInt(styles.marginTop) : 0,\n right: styles ? parseInt(styles.marginRight) : 0,\n bottom: styles ? parseInt(styles.marginBottom) : 0,\n left: styles ? parseInt(styles.marginLeft) : 0\n };\n }\n\n return calculations;\n}\n\n/**\n * Returns the global window object associated with provided element.\n */\nfunction getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local window object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || window;\n}\n\nfunction withContentRect(types) {\n return function (WrappedComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithContentRect, _Component);\n\n function WithContentRect() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n contentRect: {\n entry: {},\n client: {},\n offset: {},\n scroll: {},\n bounds: {},\n margin: {}\n }\n };\n _this._animationFrameID = null;\n _this._resizeObserver = null;\n _this._node = null;\n _this._window = null;\n\n _this.measure = function (entries) {\n var contentRect = getContentRect(_this._node, types || getTypes(_this.props));\n\n if (entries) {\n contentRect.entry = entries[0].contentRect;\n }\n\n _this._animationFrameID = _this._window.requestAnimationFrame(function () {\n if (_this._resizeObserver !== null) {\n _this.setState({\n contentRect: contentRect\n });\n\n if (typeof _this.props.onResize === 'function') {\n _this.props.onResize(contentRect);\n }\n }\n });\n };\n\n _this._handleRef = function (node) {\n if (_this._resizeObserver !== null && _this._node !== null) {\n _this._resizeObserver.unobserve(_this._node);\n }\n\n _this._node = node;\n _this._window = getWindowOf(_this._node);\n var innerRef = _this.props.innerRef;\n\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(_this._node);\n } else {\n innerRef.current = _this._node;\n }\n }\n\n if (_this._resizeObserver !== null && _this._node !== null) {\n _this._resizeObserver.observe(_this._node);\n }\n };\n\n return _this;\n }\n\n var _proto = WithContentRect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._resizeObserver = this._window !== null && this._window.ResizeObserver ? new this._window.ResizeObserver(this.measure) : new ResizeObserver(this.measure);\n\n if (this._node !== null) {\n this._resizeObserver.observe(this._node);\n\n if (typeof this.props.onResize === 'function') {\n this.props.onResize(getContentRect(this._node, types || getTypes(this.props)));\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._window !== null) {\n this._window.cancelAnimationFrame(this._animationFrameID);\n }\n\n if (this._resizeObserver !== null) {\n this._resizeObserver.disconnect();\n\n this._resizeObserver = null;\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n innerRef = _this$props.innerRef,\n onResize = _this$props.onResize,\n props = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"onResize\"]);\n\n return createElement(WrappedComponent, _extends({}, props, {\n measureRef: this._handleRef,\n measure: this.measure,\n contentRect: this.state.contentRect\n }));\n };\n\n return WithContentRect;\n }(Component), _class.propTypes = {\n client: PropTypes.bool,\n offset: PropTypes.bool,\n scroll: PropTypes.bool,\n bounds: PropTypes.bool,\n margin: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n onResize: PropTypes.func\n }, _temp;\n };\n}\n\nvar Measure = withContentRect()(function (_ref) {\n var measure = _ref.measure,\n measureRef = _ref.measureRef,\n contentRect = _ref.contentRect,\n children = _ref.children;\n return children({\n measure: measure,\n measureRef: measureRef,\n contentRect: contentRect\n });\n});\nMeasure.displayName = 'Measure';\nMeasure.propTypes.children = PropTypes.func;\n\nexport default Measure;\nexport { withContentRect };\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import ImgixClient from \"@imgix/js-core\";\nexport default ImgixClient.targetWidths();\n//# sourceMappingURL=targetWidths.js.map","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nimport React from \"react\";\nimport { withContentRect } from \"react-measure\";\nimport { shallowEqual } from \"./common\";\nimport { PACKAGE_VERSION } from \"./constants\";\nimport constructUrl from \"./constructUrl\";\nimport extractQueryParams from \"./extractQueryParams\";\nimport findClosest from \"./findClosest\";\nimport targetWidths from \"./targetWidths\";\nimport { mergeComponentPropsHOF, processPropsHOF } from \"./HOFs\";\nvar findNearestWidth = function findNearestWidth(actualWidth) {\n return findClosest(actualWidth, targetWidths);\n};\nvar toFixed = function toFixed(dp, value) {\n return +value.toFixed(dp);\n};\nexport var __shouldComponentUpdate = function __shouldComponentUpdate(props, nextProps) {\n var contentRect = props.contentRect;\n var bounds = contentRect.bounds;\n var prevWidth = bounds.width,\n prevHeight = bounds.height;\n var nextContentRect = nextProps.contentRect;\n var nextBounds = nextContentRect.bounds;\n var nextWidth = nextBounds.width,\n nextHeight = nextBounds.height;\n\n // If neither of the previous nor next dimensions are present,\n // re-render.\n if (!nextWidth || !nextHeight || !prevWidth || !prevHeight) {\n return true;\n }\n\n // The component has been rendered at least twice by this point\n // and both the previous and next dimensions should be defined.\n // Only update if the nextWidth is greater than the prevWidth.\n if (prevWidth && nextWidth && nextWidth > prevWidth) {\n return true;\n }\n\n // Similarly, only update if the next height is greater than\n // the previous height.\n if (prevHeight && nextHeight && nextHeight > prevHeight) {\n return true;\n }\n var customizer = function customizer(oldProp, newProp, key) {\n // these keys are ignored from prop checking process\n if (key === \"contentRect\" || key === \"measure\" || key === \"measureRef\") {\n return true;\n }\n if (key === \"children\") {\n return oldProp == newProp;\n }\n if (key === \"imgixParams\") {\n return shallowEqual(oldProp, newProp, function (a, b) {\n if (Array.isArray(a)) {\n return shallowEqual(a, b);\n }\n return undefined;\n });\n }\n if (key === \"htmlAttributes\") {\n return shallowEqual(oldProp, newProp);\n }\n return undefined; // handled by shallowEqual\n };\n\n // If we made it here, we need to check if the \"top-level\"\n // props have changed (e.g. disableLibraryParam).\n var propsEqual = shallowEqual(props, nextProps, customizer);\n return !propsEqual;\n};\nvar BackgroundImpl = /*#__PURE__*/function (_React$Component) {\n function BackgroundImpl(props) {\n _classCallCheck(this, BackgroundImpl);\n return _callSuper(this, BackgroundImpl, [props]);\n }\n _inherits(BackgroundImpl, _React$Component);\n return _createClass(BackgroundImpl, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return __shouldComponentUpdate(this.props, nextProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n measureRef = _this$props.measureRef,\n contentRect = _this$props.contentRect,\n _this$props$imgixPara = _this$props.imgixParams,\n imgixParams = _this$props$imgixPara === void 0 ? {} : _this$props$imgixPara,\n onLoad = _this$props.onLoad,\n disableLibraryParam = _this$props.disableLibraryParam,\n disablePathEncoding = _this$props.disablePathEncoding,\n src = _this$props.src,\n children = _this$props.children,\n _this$props$className = _this$props.className,\n className = _this$props$className === void 0 ? \"\" : _this$props$className;\n var forcedWidth = imgixParams.w,\n forcedHeight = imgixParams.h;\n var hasDOMDimensions = contentRect.bounds.width != null && contentRect.bounds.height != null;\n var htmlAttributes = this.props.htmlAttributes || {};\n var dpr = toFixed(2, imgixParams.dpr || global.devicePixelRatio || 1);\n var ref = htmlAttributes.ref;\n var onRef = function onRef(el) {\n measureRef(el);\n if (typeof ref === \"function\") {\n ref(el);\n }\n };\n var _ref = function () {\n var bothWidthAndHeightPassed = forcedWidth != null && forcedHeight != null;\n if (bothWidthAndHeightPassed) {\n return {\n width: forcedWidth,\n height: forcedHeight\n };\n }\n if (!hasDOMDimensions) {\n return {\n width: undefined,\n height: undefined\n };\n }\n var ar = contentRect.bounds.width / contentRect.bounds.height;\n var neitherWidthNorHeightPassed = forcedWidth == null && forcedHeight == null;\n if (neitherWidthNorHeightPassed) {\n var _width = findNearestWidth(contentRect.bounds.width);\n var _height = Math.ceil(_width / ar);\n return {\n width: _width,\n height: _height\n };\n }\n if (forcedWidth != null) {\n var _height2 = Math.ceil(forcedWidth / ar);\n return {\n width: forcedWidth,\n height: _height2\n };\n } else if (forcedHeight != null) {\n var _width2 = Math.ceil(forcedHeight * ar);\n return {\n width: _width2,\n height: forcedHeight\n };\n }\n }(),\n width = _ref.width,\n height = _ref.height;\n var isReady = width != null && height != null;\n var commonProps = _objectSpread({}, htmlAttributes);\n if (!isReady) {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, commonProps, {\n className: \"react-imgix-bg-loading \".concat(className),\n ref: onRef\n }), children);\n }\n var renderedSrc = function () {\n var _extractQueryParams = extractQueryParams(src),\n _extractQueryParams2 = _slicedToArray(_extractQueryParams, 2),\n rawSrc = _extractQueryParams2[0],\n params = _extractQueryParams2[1];\n var longImgixParams = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, params), {}, {\n fit: \"crop\"\n }, imgixParams), disableLibraryParam ? {} : {\n ixlib: \"react-\".concat(PACKAGE_VERSION)\n }), {}, {\n width: width,\n height: height,\n dpr: dpr\n });\n var srcOptions = {\n disablePathEncoding: disablePathEncoding\n };\n return constructUrl(rawSrc, longImgixParams, srcOptions);\n }();\n var style = _objectSpread(_objectSpread({}, htmlAttributes.style), {}, {\n backgroundImage: \"url(\".concat(renderedSrc, \")\"),\n backgroundSize: (htmlAttributes.style || {}).backgroundSize !== undefined ? htmlAttributes.style.backgroundSize : \"cover\"\n });\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, commonProps, {\n className: className,\n ref: onRef,\n style: style\n }), children);\n }\n }]);\n}(React.Component);\nvar Background = mergeComponentPropsHOF(processPropsHOF(withContentRect(\"bounds\")(BackgroundImpl)));\nexport { Background, BackgroundImpl as __BackgroundImpl };\n//# sourceMappingURL=react-imgix-bg.js.map","/**\n * Finds the closest value in the search array to the value provided using a binary search\n * If the value is in the middle of two candidate values, it chooses the higher value\n */\nexport default function findClosest(searchValue, arr) {\n if (searchValue < arr[0]) {\n return arr[0];\n }\n if (searchValue > arr[arr.length - 1]) {\n return arr[arr.length - 1];\n }\n var mid;\n var lo = 0;\n var hi = arr.length - 1;\n while (hi - lo > 1) {\n mid = Math.floor((lo + hi) / 2);\n if (arr[mid] < searchValue) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n if (searchValue - arr[lo] < arr[hi] - searchValue) {\n return arr[lo];\n }\n return arr[hi];\n}\n//# sourceMappingURL=findClosest.js.map","'use client';\n\nimport ReactImgix, { Picture, Source } from \"./react-imgix\";\nimport { PublicConfigAPI } from \"./config\";\nimport { buildURLPublic as buildURL } from \"./constructUrl\";\nimport { ImgixProvider } from \"./HOCs\";\nexport { ImgixProvider };\nexport { buildURL };\nexport { Picture, Source, PublicConfigAPI };\nexport { Background } from \"./react-imgix-bg\";\nexport default ReactImgix;\n//# sourceMappingURL=index.js.map","export enum StudioVersePageTypeEnum {\r\n AboutSV = 1,\r\n Community = 2,\r\n BrowseByTags = 3\r\n}\r\n/*export enum IssueTypeEnum {\r\n OffensiveLanguage = 0,\r\n OffensiveImage = 1,\r\n SpammingOrJunkContent = 2,\r\n CopyrightClaimOnImage =3\r\n}*/\r\nexport enum ModeratorEntityTypeEnum {\r\n Profile = 1,\r\n Preset = 2\r\n}","import React from 'react';\r\nimport { IIconProps } from '../../interfaces';\r\nconst XIcon = (props: IIconProps) => {\r\n /*w13 h16*/\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default XIcon;","import DiscordIcon from \"../../../../ui/svg/common/social-icons/discord\";\r\nimport FacebookIcon from \"../../../../ui/svg/common/social-icons/facebook\";\r\nimport InstagramIcon from \"../../../../ui/svg/common/social-icons/instagram\";\r\nimport LinkedinIcon from \"../../../../ui/svg/common/social-icons/linkedin\";\r\nimport PinterestIcon from \"../../../../ui/svg/common/social-icons/pinterest\";\r\nimport RedditIcon from \"../../../../ui/svg/common/social-icons/reddit\";\r\nimport RumbleIcon from \"../../../../ui/svg/common/social-icons/rumble\";\r\nimport SnapchatIcon from \"../../../../ui/svg/common/social-icons/snapchat\";\r\nimport SoundbetterIcon from \"../../../../ui/svg/common/social-icons/soundbetter\";\r\nimport SoundcloudIcon from \"../../../../ui/svg/common/social-icons/soundcloud\";\r\nimport SpotifyIcon from \"../../../../ui/svg/common/social-icons/spotify\";\r\nimport TelegramIcon from \"../../../../ui/svg/common/social-icons/telegram\";\r\nimport TikTokIcon from \"../../../../ui/svg/common/social-icons/tiktok\";\r\nimport TwitchIcon from \"../../../../ui/svg/common/social-icons/twitch\";\r\nimport TwitterIcon from \"../../../../ui/svg/common/social-icons/twitter\";\r\nimport VimeoIcon from \"../../../../ui/svg/common/social-icons/vimeo\";\r\nimport YouTubeIcon from \"../../../../ui/svg/common/social-icons/youtube\";\r\nimport React from \"react\";\r\nimport {sendGAEvent} from \"../../../../domain/marketing/gtm-provider\";\r\nimport {ModeratorEntityTypeEnum} from \"../common-enum\";\r\nimport { ProfileDM, SiteDM} from \"../interfaces\";\r\nimport XIcon from \"../../../../ui/svg/common/social-icons/x\";\r\n\r\nexport const sleep = (ms = 0) => {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n};\r\nexport const getSocialIconByDomainName =(domainName:string, iconSize:string) => {\r\n let svgComponent = <>{domainName};\r\n switch(domainName.toLowerCase()){\r\n case 'discord':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'facebook':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'instagram':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'linkedin':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'pinterest':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'reddit':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'rumble':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'snapchat':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'soundbetter':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'soundcloud':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'spotify':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'telegram':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'tiktok':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'twitch':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'x':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'twitter':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'vimeo':{\r\n svgComponent = ;\r\n break;\r\n }\r\n case 'youtube':{\r\n svgComponent = ;\r\n break;\r\n }\r\n }\r\n\r\n return svgComponent;\r\n}\r\nexport const getEpochFromDate = (date : Date) => {\r\n return new Date(date) !== null ? new Date(date).getTime() : 0;\r\n}\r\nexport const clickProfileReportAnIssue = (profile : ProfileDM) => {\r\n sendGAEvent(\"Click\",\"Report an issue Profile: \" + profile.publicName );\r\n window.location.href = \"/studioverse/report-an-issue/\"+ModeratorEntityTypeEnum.Profile+\"/\"+ profile.prfUserGUID;\r\n}\r\nexport const clickProfileSite = (site : SiteDM) => {\r\n sendGAEvent(\"Click\",\"Social: \" + site.domainName );\r\n window.open(site.siteURL);\r\n}\r\nexport const onClickProfile = (profile : ProfileDM) => {\r\n sendGAEvent(\"SV Widget\",\"Widget Profile: \" + profile.handle);\r\n window.location.href = \"/studioverse/creator/\" + profile.handle;\r\n}","export const MAX_MOBILE_SIZE = 600;\r\nexport const AVATAR_PATH = \"/images/studioverse/creators/creator-def.png\";\r\nexport const DEFAULT_PRESET_IMAGE_PATH = \"/images/studioverse/presets/preset-def.png\";\r\nexport const OLP_DESKTOP_BREAKPOINT = 1200;\r\n\r\nexport const MAX_TABLET_WIDTH = 820;\r\n\r\nexport const FACEBOOK_SHARE_PATH = \"https://www.facebook.com/sharer/sharer.php?u=\";\r\nexport const INSTAGRAM_SHARE_PATH = \"https://www.instagram.com/sharer.php?u=\";\r\nexport const TWITTER_SHARE_PATH = \"https://twitter.com/intent/tweet?url=\";\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\nconst VerifiedIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n )\r\n};\r\n\r\nexport default VerifiedIcon;","import React from 'react';\r\n\r\nimport { ProfileDM } from '../../common/interfaces';\r\nimport Imgix from \"react-imgix\";\r\nimport {getEpochFromDate, onClickProfile} from \"../../common/services/logic-provider\";\r\nimport {AVATAR_PATH} from \"../../common/constants\";\r\nimport VerifiedIcon from \"../../../../ui/svg/common/verified\";\r\n\r\nexport interface CreatorItemProps {\r\n creator:ProfileDM;\r\n imgCdnDomain:string;\r\n creatorsPath:string;\r\n imgWidth?:number;\r\n imgHeight?:number;\r\n isDarkBackground?:boolean;\r\n cancelImgLazyload?:boolean;\r\n\r\n}\r\nconst CreatorItem = (props:CreatorItemProps) => {\r\n\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n
onClickProfile(props.creator)} >\r\n
{props.creator.publicName}
\r\n {props.creator.isVerified &&\r\n
\r\n \r\n
\r\n }\r\n\r\n
\r\n
\r\n
\r\n
onClickProfile(props.creator)} >\r\n @{props.creator.handle}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n )\r\n};\r\n\r\nexport default CreatorItem;","import React from 'react';\r\nimport {CreatorsListDM, PresetSizes} from \"../interfaces\";\r\nimport Gallery from \"../../../galleries/gallery/gallery\";\r\nimport { ProfileDM } from '../../common/interfaces';\r\nimport CreatorItem from \"./creator-item\";\r\nimport {useWindowSize} from \"../../../../domain/common\";\r\nimport {OLP_DESKTOP_BREAKPOINT} from \"../constants\";\r\n\r\nexport interface CreatorListProps {\r\n creatorsIDs:number[];\r\n creatorListData:CreatorsListDM;\r\n imgCdnDomain:string;\r\n creatorsPath:string;\r\n isDarkBackground?:boolean;\r\n loop?:boolean;\r\n presetSizes?:string | null;\r\n\r\n}\r\nconst CreatorList = (props:CreatorListProps) => {\r\n\r\n\r\n const ListCreators = props.creatorsIDs.map(creatorId => (props.creatorListData.profiles as ProfileDM[]).filter(creator => creatorId === creator.profileID)[0]);\r\n const size = useWindowSize();\r\n\r\n const isDesktop = size.width !== undefined && size.width > OLP_DESKTOP_BREAKPOINT;\r\n const presetSizes: PresetSizes = JSON.parse(props.presetSizes || '{\"d\":5.5,\"t\":2.5,\"m\":1.2}') as PresetSizes;\r\n const DesktopItemsPerSlide = isDesktop ? presetSizes.d : 3;\r\n //if the list's length is the same as the number of items that ara visible --> disable loop (hide arrows)\r\n const isLoop = (isDesktop && ListCreators.length <= DesktopItemsPerSlide) ? false : props.loop;\r\n return (\r\n
\r\n positioning the arrows in the middle of the preset's and creator's image height\r\n //When this prop is defined, set the arrows height to slideItemWidth * arrowsHeightWidthRatio\r\n arrowsHeightWidthRatio={1}\r\n //for lg size set desktopItemsPerSlide to 3\r\n desktopItemsPerSlide={ DesktopItemsPerSlide }\r\n tableItemsPerSlide={ presetSizes.t }\r\n mobileItemsPerSlide={ presetSizes.m }\r\n codeName=\"cp\"\r\n items={ ListCreators }\r\n gap={ 43}\r\n loop={ isLoop }\r\n classes=\"w-full\"\r\n duration={ 800 }\r\n arrowsColor={props.isDarkBackground ? \"white\" : undefined}\r\n renderItem={(profile: ProfileDM, slideItemWidth: number) => {\r\n\r\n return (\r\n
\r\n \r\n
\r\n\r\n )\r\n }}\r\n />\r\n
\r\n\r\n\r\n )\r\n};\r\n\r\nexport default CreatorList;","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst LinkIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n \r\n { props.title }\r\n\r\n )\r\n};\r\n\r\nexport default LinkIcon;\r\n","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst DragAndDropIcon = (props: IIconProps) => {\r\n const iconColor = props.color !== undefined ? props.color : \"black\";\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n )\r\n};\r\n\r\nexport default DragAndDropIcon;\r\n","import React from 'react';\r\nimport {IIconProps} from \"../../../../ui/svg/interfaces\";\r\nconst VisitChainArrowIcon = (props: IIconProps) => {\r\n return (\r\n\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default VisitChainArrowIcon;","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst StopAudioIcon: React.FC = ({\r\n color = '#ffffff', // Default color for the play square\r\n bgColor = '#3452FF', // Default color for the background circle\r\n width = '44' // Default width and height of the icon\r\n }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Square Path */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default StopAudioIcon;\r\n","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst PlayAudioIcon: React.FC = ({\r\n color = '#ffffff', // Default color for the play triangle\r\n bgColor = '#3452FF', // Default color for the background circle\r\n width = '44' // Default width and height of the icon\r\n }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default PlayAudioIcon;\r\n","import { IResponse } from '../interfaces/common-interfaces';\r\n\r\nexport const DEFAULT_ERROR = 'An error has occurred.';\r\n\r\n/**\r\n * encode and format the data\r\n */\r\nexport const encodeData = (data: any) => {\r\n\r\n const params = [];\r\n\r\n for(let key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n params.push(key + '=' + window.encodeURIComponent(data[key]));\r\n }\r\n }\r\n\r\n return params.join('&');\r\n};\r\n\r\n/**\r\n * Returns true if access is denied.\r\n */\r\nconst ifShouldDenyOnReadOnly = async (response: Response|null) => {\r\n if(response?.status !== 999) return false;\r\n window.location.href = '/maintenance';\r\n\r\n /*\r\n let isLoggedIn = false;\r\n\r\n try{\r\n // {\"message\":\"Waves.com is undergoing maintenance.\",\"isLoggedIn\":false}\r\n const text = await response.text();\r\n const parsed = JSON.parse(text);\r\n isLoggedIn = parsed.isLoggedIn;\r\n if(isLoggedIn){\r\n window.location.href = '/maintenance';\r\n }\r\n }\r\n catch(ex){\r\n console.log(ex);\r\n }*/\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * get request\r\n */\r\nexport const get = async (url: string, data: any = null) : Promise => {\r\n\r\n if(data){\r\n\r\n const qs = encodeData(data);\r\n url += `?${qs}`;\r\n }\r\n\r\n const headers = new Headers();\r\n headers.append('pragma', 'no-cache');\r\n headers.append('cache-control', 'no-cache');\r\n headers.append('Content-Type', 'application/json');\r\n\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers,\r\n credentials: 'same-origin' //'include', 'omit'\r\n });\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n return {\r\n data: await response.json(),\r\n statusCode: response.status\r\n }\r\n};\r\n\r\n/**\r\n * post request\r\n */\r\nexport const post = async (url: string, data: any) : Promise => {\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n return {\r\n data: await response.json(),\r\n statusCode: response.status\r\n }\r\n};\r\n\r\nexport const del = async (url: string, data: any) : Promise => {\r\n\r\n const response = await fetch(url, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n return {\r\n data: await response.json(),\r\n statusCode: response.status\r\n }\r\n};\r\n\r\nexport const put = async (url: string, data: any) : Promise => {\r\n\r\n const response = await fetch(url, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n return {\r\n data: await response.json(),\r\n statusCode: response.status\r\n }\r\n};\r\n\r\n/**\r\n * upload file\r\n */\r\nexport const upload = async (url: string, data: FormData, headers?: any) => {\r\n\r\n let response: Response | null = null;\r\n const config: RequestInit = {\r\n method: 'POST',\r\n body: data\r\n };\r\n\r\n if(headers){\r\n config.headers = headers;\r\n }\r\n\r\n try{\r\n response = await fetch(url, config);\r\n }\r\n catch(ex){\r\n console.log('Error:', ex);\r\n }\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n return {\r\n data: await response?.json(),\r\n statusCode: response?.status\r\n }\r\n};\r\n\r\nexport const download = (fileName: string, blob: Blob) => {\r\n const url = window.URL.createObjectURL(blob);\r\n const $a = document.createElement('a');\r\n $a.style.display = 'none';\r\n $a.href = url;\r\n // the filename you want\r\n $a.download = fileName;\r\n document.body.appendChild($a);\r\n $a.click();\r\n window.URL.revokeObjectURL(url);\r\n};\r\n\r\nexport const getDownload = async (fileName: string, url: string, data: any = null) => {\r\n\r\n if(data){\r\n\r\n const qs = encodeData(data);\r\n url += `?${qs}`;\r\n }\r\n\r\n const headers = new Headers();\r\n headers.append('pragma', 'no-cache');\r\n headers.append('cache-control', 'no-cache');\r\n headers.append('Content-Type', 'application/json');\r\n\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers,\r\n credentials: 'same-origin' //'include', 'omit'\r\n });\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n const blob = await response.blob();\r\n download(fileName, blob);\r\n};\r\n\r\nexport const postDownload = async (fileName: string, url: string, data: any = null) => {\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n });\r\n\r\n if(await ifShouldDenyOnReadOnly(response)){\r\n throw new Error('Waves.com is undergoing maintenance.');\r\n }\r\n\r\n const blob = await response.blob();\r\n download(fileName, blob);\r\n};\r\n\r\n\r\n","import { get, post } from '../../../DAL/data-provider';\r\n\r\n\r\nexport const getSasUrl = async (presetGuid: string) => {\r\n\r\n return get('/api/audiobase64/get-sas-url', {\r\n presetGuid,\r\n });\r\n};\r\n\r\nexport const getBase64String = async (sasUrl: string) => {\r\n\r\n return get(sasUrl);\r\n};","/*{\"ResultStatus\":false,\"ResultObject\":[],\"ResultObjectEx\":\"\",\"ErrorList\":[\"Please enter URL to the textbox below.\"]}*/\r\n\r\nimport {ProcessResult} from \"../../../domain/process-result/interfaces\";\r\n\r\nexport interface IAudioBase64 {\r\n ind: number,\r\n sasUrl: string\r\n}\r\n\r\nexport interface IAudioBase64Wrapper{\r\n base64Str:string;\r\n root: Root;\r\n pResult: ProcessResult;\r\n}\r\n\r\nexport interface Error {\r\n errorCode: number;\r\n errorDescription: string;\r\n}\r\n\r\nexport interface Root {\r\n error: Error;\r\n sasUrl: string;\r\n appCode: any;\r\n env: any;\r\n}\r\n\r\nexport enum AudioBase64StyleEnum {\r\n DefaultStyle = 1,\r\n ChainStyle = 2,\r\n IconStyle = 3\r\n}","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst PlayAudioTriangleIcon: React.FC = ({\r\n color = '#ffffff', // Default color for the play triangle\r\n width = '15' // Default width and height of the icon\r\n }) => (\r\n \r\n \r\n \r\n\r\n);\r\n\r\nexport default PlayAudioTriangleIcon;\r\n","import {parseInt} from \"lodash\";\r\nimport {useEffect, useState} from \"react\";\r\nimport StopAudioIcon from \"../../../ui/svg/audio/stop-audio\";\r\nimport PlayAudioIcon from \"../../../ui/svg/audio/play-audio\";\r\nimport {getSasUrl} from \"./data-service\";\r\nimport {AudioBase64StyleEnum, IAudioBase64Wrapper} from \"./interfaces\";\r\nimport PlayAudioTriangleIcon from \"../../../ui/svg/audio/play-audio-trian\";\r\n\r\n\r\ninterface IAudioBase64Props {\r\n elId: string,\r\n presetGuid: string,\r\n buttonStyle?: AudioBase64StyleEnum,\r\n buttonColor?: string,\r\n buttonBgColor?: string,\r\n showDebugInfo?: boolean\r\n}\r\n\r\n/**\r\n * the entry point\r\n */\r\nconst AudioBase64 = (props?: IAudioBase64Props) => {\r\n const buttonColor = props?.buttonColor ?? \"#000000\";\r\n const buttonBgColor = props?.buttonBgColor ?? \"#ffffff\";\r\n const buttonStyle = props?.buttonStyle ?? AudioBase64StyleEnum.DefaultStyle;\r\n\r\n const [isPlayed, setIsPlayed] = useState(false);\r\n const [isFirstTimeSelected, setIsFirstTimeSelected] = useState(false);\r\n const [perfTime, setPerfTime] = useState(0);\r\n const [serverTime, setServerTime] = useState(\"\");\r\n const [player, setPlayer] = useState(null);\r\n //var player: any = null;\r\n\r\n useEffect(() => {\r\n (async () => {\r\n\r\n\r\n })()\r\n\r\n }, []);\r\n\r\n useEffect(() => {\r\n var playerHTML: any = document.getElementById('pb64_' + props?.elId);\r\n playerHTML.addEventListener(\"ended\", function () {\r\n console.log(\"ended\");\r\n setIsPlayed(false);\r\n });\r\n\r\n playerHTML.addEventListener(\"pause\", function () {\r\n console.log(\"pause\");\r\n setIsPlayed(false);\r\n });\r\n setPlayer(playerHTML);\r\n },\r\n // VLAD TODO\r\n // eslint-disable-next-line\r\n []);\r\n const stopAllMusicOnPage = () => {\r\n const allAudio = document.getElementsByTagName('audio');\r\n // Loop through each audio element and pause it\r\n for (let i = 0; i < allAudio.length; i++) {\r\n // Check if the audio is playing\r\n if (!allAudio[i].paused) {\r\n allAudio[i].pause();\r\n allAudio[i].currentTime = 0; // Optionally reset the playback position to the start\r\n }\r\n }\r\n\r\n };\r\n const loadBase64Str = async () => {\r\n\r\n if (props?.presetGuid) {\r\n var startTime = performance.now()\r\n\r\n\r\n const response = await getSasUrl(props?.presetGuid);\r\n if (!response || response.statusCode !== 200) {\r\n //setError(response.data as unknown as ModelServerErrors);\r\n return;\r\n }\r\n const ab64Wrap = response.data as IAudioBase64Wrapper;\r\n console.log('sasUrl: ', ab64Wrap);\r\n player.src = `data:audio/mp3;base64,${ab64Wrap.base64Str}`;\r\n setIsFirstTimeSelected(true);\r\n var endTime = performance.now();\r\n setPerfTime(endTime - startTime);\r\n setServerTime(ab64Wrap.pResult.resultEX);\r\n }\r\n };\r\n const playToggle = () => {\r\n if (!isFirstTimeSelected)\r\n loadBase64Str();\r\n if (player?.paused)\r\n play();\r\n else\r\n stop();\r\n };\r\n const play = () => {\r\n stopAllMusicOnPage();\r\n if (player?.play) {\r\n setIsPlayed(true);\r\n player?.play();\r\n }\r\n };\r\n const pause = () => {\r\n player?.pause();\r\n setIsPlayed(false);\r\n };\r\n const stop = () => {\r\n player?.pause();\r\n if (player) {\r\n player.currentTime = 0;\r\n }\r\n setIsPlayed(false);\r\n }\r\n // player.onloadedmetadata = function() {\r\n // console.log('onloadedmetadata');\r\n // };\r\n\r\n\r\n return (\r\n
\r\n\r\n {props?.showDebugInfo &&
AudioBase64 {props?.presetGuid} /\r\n {perfTime !== 0 && load time: {(perfTime / 1000).toFixed(2)} sec | {serverTime}}\r\n
}\r\n\r\n
\r\n {/*DefaultStyle*/}\r\n {\r\n buttonStyle === AudioBase64StyleEnum.DefaultStyle &&\r\n {\r\n playToggle();\r\n }} >\r\n \r\n {\r\n (!isPlayed) &&\r\n \r\n }\r\n {\r\n (isPlayed) &&\r\n \r\n }\r\n {!isPlayed ? 'Play' : 'Stop'}\r\n \r\n \r\n }\r\n {/*ChainStyle*/}\r\n {\r\n buttonStyle === AudioBase64StyleEnum.ChainStyle &&\r\n {\r\n playToggle();\r\n }} >\r\n \r\n {!isPlayed ? 'Play' : 'Stop'}\r\n {\r\n (!isPlayed) &&\r\n \r\n }\r\n {\r\n (isPlayed) &&\r\n \r\n }\r\n \r\n \r\n }\r\n {/*IconStyle*/}\r\n {\r\n buttonStyle === AudioBase64StyleEnum.IconStyle &&\r\n\r\n {\r\n playToggle();\r\n }}>\r\n {\r\n (!isPlayed) &&\r\n \r\n }\r\n {\r\n (isPlayed) &&\r\n \r\n }\r\n \r\n }\r\n
\r\n
\r\n )\r\n};\r\n\r\nexport default AudioBase64;\r\n","import React, {useRef, useState} from 'react';\r\nimport {PresetDM} from \"../interfaces\";\r\nimport LinkIcon from \"../../../../ui/svg/common/link\";\r\nimport DragAndDropIcon from \"../../../../ui/svg/common/drag-and-drop\";\r\nimport {isMobile, isTablet} from \"../../../../domain/common\";\r\nimport VisitChainArrowIcon from \"../svg/visit-chain-arrow\";\r\nimport {sendGAEvent} from \"../../../../domain/marketing/gtm-provider\";\r\nimport AudioBase64 from \"../../../galleries/audio-base64/audio-base64\";\r\nimport {AudioBase64StyleEnum} from \"../../../galleries/audio-base64/interfaces\";\r\n\r\n\r\nexport interface IPresetVisitChainProps {\r\n preset:PresetDM;\r\n presetListRef?:any;\r\n setShowLinkCopiedPopup:Function;\r\n}\r\n\r\nconst PresetVisitChain = (props:IPresetVisitChainProps) => {\r\n const [hoverAudioBase64, setHoverAudioBase64] = useState(false);\r\n const [showLinkBubble, setShowLinkBubble] = useState(false);\r\n const [showDragAndDropBubble, setShowDragAndDropBubble] = useState(false);\r\n const [popUpInsideScreen, setPopUpInsideScreen] = useState(true);\r\n const containerRef = useRef(null);\r\n const isMobileScreen = isMobile() || isTablet();\r\n\r\n const chainFullLink = \"https://\" + window.location.hostname + \"/studioverse/chain/\" + props.preset.presetGUID;\r\n const SpeechBubbleWidth = 230;//230px\r\n\r\n /*\r\n Bug fix --> when speech bubble overflows the preset list from the right\r\n */\r\n const OnMouseOverSetPopUpInsideScreen = () =>{\r\n if (props.presetListRef !== undefined && containerRef.current !== null) {\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const presetListRect = props.presetListRef.current.getBoundingClientRect();\r\n\r\n if (rect.right + SpeechBubbleWidth > presetListRect.right) {\r\n //If (right position of buttons) + (popup width) is bigger than the preset list container's right --> expand speech bubble to the left\r\n setPopUpInsideScreen(false);\r\n }else{\r\n setPopUpInsideScreen(true);\r\n }\r\n }\r\n }\r\n\r\n /*mouse AudioBase64*/\r\n const mouseOverAudioBase64 = (evnt:any) => {\r\n setHoverAudioBase64(true);\r\n setShowLinkBubble(false);\r\n setShowDragAndDropBubble(false);\r\n }\r\n const mouseOutAudioBase64 = (evnt:any) => {\r\n setHoverAudioBase64(false);\r\n }\r\n\r\n /*mouse Link*/\r\n const mouseOverLink = (evnt:any) => {\r\n OnMouseOverSetPopUpInsideScreen();\r\n setShowLinkBubble(true);\r\n setHoverAudioBase64(false);\r\n setShowDragAndDropBubble(false);\r\n\r\n }\r\n const mouseOutLink = (evnt:any) => {\r\n setShowLinkBubble(false);\r\n }\r\n\r\n const dragLink = (evnt:any) => {\r\n evnt.dataTransfer.setData(\"text/uri-list\", chainFullLink);\r\n }\r\n\r\n /*mouse DragAndDrop*/\r\n const mouseOverDragAndDrop = (evnt:any) => {\r\n OnMouseOverSetPopUpInsideScreen();\r\n\r\n setHoverAudioBase64(false);\r\n setShowLinkBubble(false);\r\n setShowDragAndDropBubble(true);\r\n\r\n }\r\n const mouseOutDragAndDrop = (evnt:any) => {\r\n\r\n setShowDragAndDropBubble(false);\r\n\r\n }\r\n const mouseOut = (evnt:any) => {\r\n //mouseOutDragAndDrop(evnt);\r\n //mouseOutLink(evnt);\r\n //mouseOutAudioBase64(evnt);\r\n }\r\n const copyLinkToClipboard = async () => {\r\n\r\n await navigator.clipboard.writeText(chainFullLink);\r\n props.setShowLinkCopiedPopup(true);\r\n\r\n }\r\n const onClickPreset = () => {\r\n sendGAEvent(\"SV Widget\",\"Widget Chain: \" + props.preset.presetName );\r\n window.location.href = \"/studioverse/chain/\" + props.preset.presetGUID;\r\n }\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n Visit Chain\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n !props?.preset.audioDemo &&\r\n
\r\n }\r\n {\r\n props?.preset.audioDemo &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {!isMobileScreen &&\r\n
\r\n \r\n {showDragAndDropBubble &&\r\n \r\n\r\n {\r\n props.preset.algType === 'WSCR' &&\r\n
Drag & drop this button directly into StudioVerse Audio Effects.
\r\n }\r\n\r\n {\r\n props.preset.algType === 'WSCI' &&\r\n
Drag & drop this button directly into StudioVerse Instruments.
\r\n }\r\n
\r\n }\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n }\r\n
\r\n \r\n {showLinkBubble &&\r\n \r\n
Copy & Paste this link in your StudioVerse plugin search bar.
\r\n
\r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n )\r\n};\r\n\r\nexport default PresetVisitChain;","import React, {CSSProperties} from 'react';\r\n\r\ninterface IHeartIconProps {\r\n width: string, /*default*/\r\n height?: string,\r\n color?: string,\r\n title?: string,\r\n classes?: string,\r\n rotationAngle?: number,\r\n style?: CSSProperties,\r\n isColorFill?:boolean\r\n}\r\nconst HeartIcon = (props: IHeartIconProps) => {\r\n return (\r\n <>\r\n {props.isColorFill ?\r\n\r\n \r\n \r\n \r\n :\r\n \r\n \r\n }\r\n \r\n\r\n )\r\n};\r\n\r\nexport default HeartIcon;","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst PresetWSCIIcon: React.FC = ({\r\n color = '#141414', // Default color for the play triangle\r\n bgColor = '#ffffff', // Default color for the background circle\r\n width = '15' // Default width and height of the icon\r\n }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n);\r\n\r\nexport default PresetWSCIIcon;\r\n","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst PresetWSCRIcon: React.FC = ({\r\n color = '#141414', // Default color for the play triangle\r\n bgColor = '#ffffff', // Default color for the background circle\r\n width = '15' // Default width and height of the icon\r\n }) => (\r\n \r\n \r\n \r\n\r\n\r\n);\r\n\r\nexport default PresetWSCRIcon;\r\n","import React from 'react';\r\nimport PresetWSCIIcon from \"../../../../ui/svg/preset/preset-wsci\";\r\nimport PresetWSCRIcon from \"../../../../ui/svg/preset/preset-wscr\";\r\n\r\ninterface IPresetIcons {\r\n algType:string,\r\n width: string\r\n}\r\nconst PresetIcons = (props: IPresetIcons) => {\r\n\r\n return (\r\n <>\r\n {props?.algType === \"WSCR\" && }\r\n {props?.algType === \"WSCI\" && }\r\n \r\n )\r\n};\r\n\r\nexport default PresetIcons;","import React, {KeyboardEvent, useRef, useState} from 'react';\r\nimport Imgix from \"react-imgix\";\r\nimport {AVATAR_PATH, DEFAULT_PRESET_IMAGE_PATH} from \"../constants\";\r\nimport {PresetDM, PresetTagDM, ProfileDM, UserLikeResponse} from \"../interfaces\";\r\nimport {getEpochFromDate, onClickProfile} from \"../services/logic-provider\";\r\nimport VerifiedIcon from \"../../../../ui/svg/common/verified\";\r\nimport PresetVisitChain from \"./preset-visit-chain\";\r\nimport {isMobile, isTablet} from \"../../../../domain/common\";\r\nimport HeartIcon from \"../../../../ui/svg/common/heart\";\r\nimport {sendGAEvent} from \"../../../../domain/marketing/gtm-provider\";\r\nimport {setUserLikeClick} from \"../DAL/data-service\";\r\nimport PresetIcons from \"../../preset/components/preset-icons\";\r\n\r\nexport interface IPresetProps {\r\n preset:PresetDM;\r\n profile:ProfileDM;\r\n presetTags:PresetTagDM[];\r\n isHandleLinked?:boolean;\r\n imgCdnDomain:string;\r\n creatorsPath:string;\r\n imgWidth?:number;\r\n imgHeight?:number;\r\n cancelImgLazyload?:boolean;\r\n presetListRef?:any;\r\n setShowLinkCopiedPopup:Function;\r\n isDarkBackground?:boolean;\r\n\r\n}\r\n\r\nconst Preset = (props:IPresetProps) => {\r\n const imageContainer = useRef(null);\r\n const [showOverButtons, setShowOverButtons] = useState(false);\r\n const [isUserLiked, setIsUserLiked] = useState(props.preset.isUserLike);\r\n const [isLikeLoading, setIsLikeLoading] = useState(false);\r\n\r\n const [presetLikeCount, setPresetLikeCount] = useState(props.preset.likesCount);\r\n\r\n const isDesktopScreen = !(isMobile() || isTablet());\r\n\r\n const mouseOver = (evnt:any) => {\r\n if(isDesktopScreen && imageContainer.current !== null && imageContainer.current !== undefined){\r\n imageContainer.current.style.filter = 'brightness(30%)';\r\n setShowOverButtons(true);\r\n }\r\n\r\n }\r\n const mouseOut = (evnt:any) => {\r\n if(isDesktopScreen && imageContainer.current !== null && imageContainer.current !== undefined){\r\n imageContainer.current.style.filter = 'unset';\r\n setShowOverButtons(false);\r\n }\r\n\r\n }\r\n const onClickPreset = () => {\r\n sendGAEvent(\"SV Widget\",\"Widget Chain: \" + props.preset.presetName );\r\n window.location.href = \"/studioverse/chain/\" + props.preset.presetGUID;\r\n }\r\n\r\n const onClickTag = (tag : PresetTagDM) => {\r\n sendGAEvent(\"SV Widget\",\"Widget Tag: \" + tag.tagAlias);\r\n window.location.href = \"/studioverse/chains/tag/\" + tag.tagAlias;\r\n }\r\n const userLikeClick = async () => {\r\n if(isLikeLoading) return;\r\n setIsLikeLoading(true);\r\n let response = null;\r\n try {\r\n response = await setUserLikeClick(props.preset.presetGUID);\r\n }\r\n catch(ex){}\r\n\r\n if(response?.data && response.data.isValid && response.data.relatedData){\r\n setPresetLikeCount((response.data.relatedData as UserLikeResponse).likeObj.result);\r\n setIsUserLiked(!isUserLiked);\r\n setIsLikeLoading(false);\r\n\r\n }else if(response && response.statusCode && response.statusCode === 401){\r\n window.location.href = \"/login?returnurl=\" + window.location.pathname;\r\n setIsLikeLoading(false);\r\n return;\r\n }\r\n }\r\n const getHeartColor = () => {\r\n if(isUserLiked){\r\n return \"red\";\r\n }else if(props.isDarkBackground){\r\n return \"white\";\r\n }\r\n return \"black\";\r\n }\r\n const handleKeyPress = (evt: KeyboardEvent) => {\r\n if (evt.key === 'Enter') {\r\n onClickPreset();\r\n }\r\n };\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n {props.profile.imgExt.length > 0 ?\r\n \r\n :\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n
{props.profile.publicName}
\r\n {props.profile.isVerified &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n {presetLikeCount}\r\n \r\n
\r\n
\r\n {props.isHandleLinked?\r\n
\r\n \r\n
\r\n :\r\n
@{props.profile.handle}
\r\n }\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {/*
*/}\r\n {/* {props.presetTags.map((tag,index) => {*/}\r\n {/* return onClickTag(tag)}>*/}\r\n {/* {tag.tagName} {props.presetTags.length - 1 > index ? | : \"\"}*/}\r\n {/* */}\r\n {/* })}*/}\r\n\r\n {/*
*/}\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n )\r\n};\r\n\r\nexport default Preset;","import {get,post} from \"../../../../DAL/data-provider\";\r\n\r\nexport const getPresetsPage = async (handle: string | null, pageIndex:number) => {\r\n return get('/api/olp/get-creator-presets?handle=' + handle + \"&pageIndex=\" + pageIndex);\r\n};\r\nexport const getTagPresetsPage = async (tag: string | null, pageIndex:number) => {\r\n return get('/api/olp/get-tag-presets?tag=' + tag + \"&pageIndex=\" + pageIndex);\r\n};\r\nexport const getPluginPresetsPage = async (tag: string | null, pageIndex:number) => {\r\n return get('/api/olp/get-plugin-presets?tag=' + tag + \"&pageIndex=\" + pageIndex);\r\n};\r\nexport const setUserLikeClick = async (presetGuid: string) => {\r\n const postData = {\r\n PresetGuid: presetGuid\r\n }\r\n return post('/api/olp/user-like',postData);\r\n};\r\n\r\n","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst CloseIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n Close\r\n \r\n \r\n )\r\n};\r\n\r\nexport default CloseIcon;\r\n","import CloseIcon from '../svg/common/close';\r\nimport { CSSProperties, ReactNode, useCallback, useEffect, useRef, MouseEvent } from 'react';\r\n\r\n/*\r\nUsage:\r\n-------\r\n {\r\n dispatch(\r\n rootActions.main({\r\n showLoginPage: false\r\n })\r\n );\r\n}}>\r\n
\r\n

Please log in to your Waves account to hide products you own.

\r\n LOG IN NOW\r\n
\r\n
\r\n */\r\n\r\ninterface IPopupProps {\r\n width?: string,\r\n height?: string,\r\n close?: Function,\r\n canBeClosed?: boolean,\r\n children?: ReactNode,\r\n classes?: string,\r\n bgClass?: string,\r\n styles?: CSSProperties,\r\n iconWidth?: string,\r\n iconColor?: string,\r\n btnTop?: string;\r\n btnRight?: string;\r\n removeBackdrop?: boolean;\r\n prevent?: boolean;\r\n}\r\n\r\n/**\r\n * Popup component.\r\n */\r\nexport const Popup = (props: IPopupProps) => {\r\n\r\n const popupRef = useRef(null);\r\n const closeButtonRef = useRef(null);\r\n\r\n useEffect(() => {\r\n\r\n setTimeout(() => {\r\n if(closeButtonRef.current) {\r\n closeButtonRef.current.focus();\r\n }\r\n else{\r\n popupRef.current?.focus();\r\n }\r\n }, 10);\r\n }, []);\r\n\r\n /**\r\n * close popup handler\r\n */\r\n const closePopup = useCallback(() => {\r\n if (typeof props.close !== 'function') return;\r\n props.close();\r\n }, [props])\r\n\r\n /**\r\n * handle escape key\r\n */\r\n const handleEscape = useCallback(async (evt: any) => {\r\n if (evt.key === 'Escape') {\r\n closePopup();\r\n }\r\n }, [closePopup]);\r\n\r\n useEffect(() => {\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('close-popup', closePopup);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n document.removeEventListener('close-popup', closePopup);\r\n }\r\n }, [closePopup, handleEscape]);\r\n\r\n const canBeClosed = props.canBeClosed !== undefined ? props.canBeClosed : true;\r\n const iconWidth = props.iconWidth !== undefined ? props.iconWidth : '16';\r\n\r\n const handlePopupClick = (evt: MouseEvent) => {\r\n\r\n if(props.prevent) {\r\n evt.preventDefault()\r\n evt.stopPropagation();\r\n }\r\n\r\n if (!canBeClosed) return;\r\n closePopup();\r\n };\r\n\r\n return (\r\n \r\n {\r\n evt.stopPropagation();\r\n if(props.prevent) {\r\n evt.preventDefault();\r\n }\r\n }}\r\n style={{\r\n ...(props.styles || {}),\r\n width: props.width,\r\n height: props.height,\r\n }}\r\n >\r\n {\r\n canBeClosed &&\r\n \r\n \r\n \r\n }\r\n\r\n {props.children}\r\n \r\n \r\n )\r\n};\r\n\r\n/*\r\n max-height: 100vh;\r\n */\r\n","import React, {useRef, useState} from 'react';\r\nimport {PresetListsDM, PresetSizes} from \"../interfaces\";\r\nimport Preset from \"../../common/components/preset\";\r\nimport Gallery from \"../../../galleries/gallery/gallery\";\r\nimport { PresetDM, PresetTagDM, ProfileDM } from '../../common/interfaces';\r\nimport {useWindowSize} from \"../../../../domain/common\";\r\nimport {OLP_DESKTOP_BREAKPOINT} from \"../constants\";\r\nimport {Popup} from \"../../../../ui/popup/popup\";\r\n\r\nexport interface PresetListProps {\r\n presetsIDs:number[];\r\n presetListData:PresetListsDM;\r\n imgCdnDomain:string;\r\n creatorsPath:string;\r\n loop?:boolean;\r\n isDarkBackground?:boolean;\r\n cancelImgLazyload?:boolean;\r\n presetSizes?:string | null;\r\n}\r\nconst PresetList = (props:PresetListProps) => {\r\n\r\n\r\n const ListPresets = props.presetsIDs.map(presetId => (props.presetListData.presets as PresetDM[]).filter(preset => presetId === preset.presetID)[0]);\r\n const size = useWindowSize();\r\n const isDesktop = size.width !== undefined && size.width > OLP_DESKTOP_BREAKPOINT;\r\n\r\n const presetSizes: PresetSizes = JSON.parse(props.presetSizes || '{\"d\":5.5,\"t\":2.5,\"m\":1.2}') as PresetSizes;\r\n const DesktopItemsPerSlide = isDesktop ? presetSizes.d : 3;\r\n\r\n //if the list's length is the same as the number of items that ara visible --> disable loop (hide arrows)\r\n const isLoop = (isDesktop && ListPresets.length <= DesktopItemsPerSlide) ? false : props.loop;\r\n const listContainerRef = useRef(null);\r\n const [showLinkCopiedPopup, setShowLinkCopiedPopup] = useState(false);\r\n\r\n /*\r\n For preset-visit-chaim copy link and dargNdrop popups\r\n Adding zIndex for prioritize position from other preset containers ( with absolute position ).\r\n */\r\n const mouseOver = (evnt:any) => {\r\n evnt.currentTarget.parentNode.style.zIndex = 1;\r\n }\r\n\r\n const mouseOut = (evnt:any) => {\r\n evnt.currentTarget.parentNode.style.zIndex = 0;\r\n }\r\n\r\n\r\n return (\r\n
\r\n positioning the arrows in the middle of the preset's and creator's image height\r\n //When this prop is defined, set the arrows height to slideItemWidth * arrowsHeightWidthRatio\r\n arrowsHeightWidthRatio={3/4}\r\n //for lg size set desktopItemsPerSlide to 3\r\n desktopItemsPerSlide={ DesktopItemsPerSlide }\r\n tableItemsPerSlide={ presetSizes.t }\r\n mobileItemsPerSlide={ presetSizes.m }\r\n codeName=\"cp\"\r\n items={ ListPresets }\r\n loop={ isLoop }\r\n classes=\"w-full\"\r\n gap={ 43}\r\n style={{ paddingRight:\"0px\", paddingLeft:\"0px\" }}\r\n duration={ 800 }\r\n arrowsColor={props.isDarkBackground ? \"white\" : undefined}\r\n renderItem={(preset: PresetDM, slideItemWidth: number,slideItemIndex: number) => {\r\n\r\n const presetTags = (props.presetListData.presetTags as PresetTagDM[]).filter(tag => tag.presetID === preset.presetID);\r\n const profileID = props.presetListData.presetProfilePairs.filter(pair => pair.presetID === preset.presetID)[0].profileID;\r\n const profile = (props.presetListData.profiles as ProfileDM[]).filter(profile => profile.profileID === profileID)[0];\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }}\r\n />\r\n {showLinkCopiedPopup && setShowLinkCopiedPopup(false)}>\r\n
The link was copied to clipboard
\r\n
}\r\n
\r\n )\r\n};\r\n\r\nexport default PresetList;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {getJSONFromHtml} from \"../../../domain/common\";\r\nimport { StudioVersePageDM} from \"./interfaces\";\r\nimport CreatorList from '../common/components/creator-list';\r\nimport PresetList from '../common/components/preset-list';\r\n\r\n\r\nconst initCustomLists = (StudioVersePageDM : StudioVersePageDM, ImgCdnDomain : string, CreatorsPath: string) => {\r\n\r\n const $presetList = document.querySelectorAll('[data-preset-list]');\r\n $presetList.forEach($popup => {\r\n const listID = $popup.getAttribute('data-preset-list');\r\n const presetSizes = $popup.getAttribute('data-preset-sizes');\r\n\r\n const isNoLazyLoad = $popup.getAttribute('no-lazy-load');\r\n\r\n const presetIDs = StudioVersePageDM.presetsData.sortItems.filter(sortItem => sortItem.listID === Number(listID))\r\n .sort((a,b) => a.sortID -b.sortID)\r\n .map(sortItem => sortItem.presetID);\r\n\r\n //If list has items & the list is not lazy load type (LazyLoad lists are loaded on scroll event)\r\n if(presetIDs.length > 0 && isNoLazyLoad){\r\n const $placeholder = document.getElementById('list-' + listID);\r\n ReactDOM.render(\r\n ,\r\n $placeholder\r\n );\r\n\r\n }\r\n\r\n });\r\n}\r\nconst initCreatorsList = (StudioVersePageDM : StudioVersePageDM, ImgCdnDomain : string, CreatorsPath: string) => {\r\n/*\r\n
\r\n*/\r\n const $creatorList = document.querySelectorAll('[data-creator-list]');\r\n $creatorList.forEach($popup => {\r\n const listID = $popup.getAttribute('data-creator-list');\r\n let creatorIDs = StudioVersePageDM.creatorsData.sortItems.filter(sortItem => sortItem.listID === Number(listID))\r\n .sort((a,b) => a.sortID -b.sortID)\r\n .map(sortItem => sortItem.profileID);\r\n\r\n const isNoLazyLoad = $popup.getAttribute('no-lazy-load');\r\n\r\n //If list has items & the list is not lazy load type (LazyLoad lists are loaded on scroll event)\r\n if(creatorIDs.length > 0 && isNoLazyLoad){\r\n const $placeholder = document.getElementById('creator-list-' + listID);\r\n ReactDOM.render(\r\n ,\r\n $placeholder\r\n );\r\n }\r\n\r\n });\r\n}\r\n\r\nconst init = () => {\r\n const studioVersePageDM = (getJSONFromHtml(document.getElementById('olp-custom-preset-list-data')) as StudioVersePageDM);\r\n console.log('studioVersePageDM:',studioVersePageDM);\r\n const imgCdnDomain = (document.getElementById('img-cdn-domain')?.textContent || '')?.trim().toLowerCase();\r\n const creatorsPath = (document.getElementById('creators-relative-path')?.textContent || '')?.trim().toLowerCase();\r\n\r\n initCustomLists(studioVersePageDM, imgCdnDomain, creatorsPath);\r\n initCreatorsList(studioVersePageDM, imgCdnDomain, creatorsPath);\r\n\r\n};\r\n\r\nconst isScrolledIntoView = (elem : any) => {\r\n //If the element is about to scrolled into (distance of at least 600 px from the page bottom) return true.\r\n const rect = elem.getBoundingClientRect();\r\n if(rect.top - 600 <= window.innerHeight){\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nwindow.addEventListener(\"scroll\", (event) => {\r\n\r\n const StudioVersePageDM = (getJSONFromHtml(document.getElementById('olp-custom-preset-list-data')) as StudioVersePageDM);\r\n const ImgCdnDomain = (document.getElementById('img-cdn-domain')?.textContent || '')?.trim().toLowerCase();\r\n const CreatorsPath = (document.getElementById('creators-relative-path')?.textContent || '')?.trim().toLowerCase();\r\n\r\n const $presetList = document.querySelectorAll('[data-preset-list]');\r\n\r\n $presetList.forEach($popup => {\r\n\r\n const listID = $popup.getAttribute('data-preset-list');\r\n\r\n //If list element has attribute no-lazy-load=\"true\" --> the list was loaded on page load --> do not load it again\r\n const isNoLazyLoad = $popup.getAttribute('no-lazy-load');\r\n if(isNoLazyLoad) return;\r\n\r\n //If the element is NOT about to scrolled into --> do not load it again\r\n const isScrolledInto = isScrolledIntoView($popup);\r\n if(!isScrolledInto) return;\r\n\r\n //If the element was already loaded --> do not load it again\r\n const isLoaded = $popup.getAttribute('loaded');\r\n if(isLoaded) return;\r\n\r\n //Before loading the list --> mark this list as loaded list\r\n $popup.setAttribute('loaded',\"true\");\r\n\r\n const presetIDs = StudioVersePageDM.presetsData.sortItems.filter(sortItem => sortItem.listID === Number(listID))\r\n .sort((a,b) => a.sortID -b.sortID)\r\n .map(sortItem => sortItem.presetID);\r\n\r\n if(presetIDs.length > 0){\r\n\r\n const $placeholder = document.getElementById('list-' + listID);\r\n ReactDOM.render(\r\n ,\r\n $placeholder\r\n );\r\n\r\n }\r\n\r\n });\r\n\r\n\r\n const $creatorList = document.querySelectorAll('[data-creator-list]');\r\n $creatorList.forEach($popup => {\r\n\r\n const listID = $popup.getAttribute('data-creator-list');\r\n\r\n //If list element has attribute no-lazy-load=\"true\" --> the list was loaded on page load --> do not load it again\r\n const isNoLazyLoad = $popup.getAttribute('no-lazy-load');\r\n if(isNoLazyLoad) return;\r\n\r\n //If the element is NOT about to scrolled into --> do not load it again\r\n const isScrolledInto = isScrolledIntoView($popup);\r\n if(!isScrolledInto) return;\r\n\r\n //If the element was already loaded --> do not load it again\r\n const isLoaded = $popup.getAttribute('loaded');\r\n if(isLoaded) return;\r\n\r\n //Before loading the list --> mark this list as loaded list\r\n $popup.setAttribute('loaded',\"true\");\r\n\r\n let creatorIDs = StudioVersePageDM.creatorsData.sortItems.filter(sortItem => sortItem.listID === Number(listID))\r\n .sort((a,b) => a.sortID -b.sortID)\r\n .map(sortItem => sortItem.profileID);\r\n\r\n if(creatorIDs.length > 0){\r\n const $placeholder = document.getElementById('creator-list-' + listID);\r\n ReactDOM.render(\r\n ,\r\n $placeholder\r\n );\r\n }\r\n\r\n });\r\n\r\n\r\n});\r\n/**\r\n * entry point\r\n */\r\nwindow.addEventListener('DOMContentLoaded', (event) => {\r\n init();\r\n});\r\n"],"names":["charenc","utf8","stringToBytes","str","bin","unescape","encodeURIComponent","bytesToString","bytes","decodeURIComponent","escape","i","length","push","charCodeAt","String","fromCharCode","join","module","exports","base64map","crypt","rotl","n","b","rotr","endian","constructor","Number","randomBytes","Math","floor","random","bytesToWords","words","wordsToBytes","bytesToHex","hex","toString","hexToBytes","c","parseInt","substr","bytesToBase64","base64","triplet","j","charAt","base64ToBytes","replace","imod4","indexOf","pow","isBuffer","obj","readFloatLE","slice","isSlowBuffer","_isBuffer","md5","message","options","encoding","Array","prototype","call","isArray","Uint8Array","m","l","a","d","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","x","s","t","_blocksize","_digestsize","Error","digestbytes","asBytes","asString","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","name","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","objA","objB","compare","compareContext","ret","keysA","Object","keys","keysB","bHasOwnProperty","hasOwnProperty","bind","idx","key","valueA","valueB","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","window","prop","React","ReactDOM","getJSONFromHtml","$el","textContent","json","JSON","parse","ex","isMobile","check","navigator","userAgent","vendor","opera","test","isTablet","maxTouchPoints","useWindowSize","windowSize","setWindowSize","useState","width","height","useEffect","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","CartSteps","ProductDepartmentEnum","LastPaymentOption","PaymentTabsEnum","CreditCardServiceEnum","CreditCardTabTabsEnum","sendGAEvent","eventTitle","eventValue","dataLayer","pathname","value","configurable","writable","setHeight","style","setStyle","rotationAngle","endsWith","viewPortWidth","viewPortHeight","widthNum","getSVGHeight","isNaN","angle","WebkitTransform","msTransform","transform","className","classes","viewBox","xmlns","xmlnsXlink","title","id","fill","color","xlinkHref","fillRule","DESKTOP_BREAKPOINT","getViewportWidth","max","document","documentElement","clientWidth","getLoopItems","items","slideItemIndex","itemsNumberPerSlide","type","totalItems","stateItems","index","getNextPrevSlideItemIndex","total","loop","direction","updated","ceil","checkIfVertical","isVerticalDesktop","isVerticalTablet","isVerticalMobile","vw","ifShowButtons","hideButtons","showOnMobile","getDurationPerViewport","desktopDuration","isVertical","slideItemWidth","slideItemHeight","marginRight","gap","marginBottom","position","top","left","perspective","backfaceVisibility","item","renderItem","slideData","prevLoopItems","map","dataItem","currentLoopItems","currentLeftPos","nextLoopItems","galleryContentRef","useRef","galleryAnimationRef","leftButtonRef","rightButtonRef","animationRef","setWidth","body","observer","ResizeObserver","entries","contentRect","current","observe","unobserve","useWindowResizeObserver","rootStyle","setRootStyle","animatedContentStyle","setAnimatedContentStyle","slideContent","slideIndex","totalSlides","galleryContentWidth","galleryContentHeight","enableAnimation","createElement","animationTiming","duration","easing","animating","currentTopPos","xDown","yDown","showButtons","showButtonsOnMobile","setPrevLoopItems","setCurrentLoopItems","setNextLoopItems","setIsVertical","updateButtonsVisibility","useCallback","classList","toggle","jumpToSlide","state","$next","querySelector","offsetLeft","offsetTop","changeSlide","shouldAnimate","Promise","resolve","reject","newSlideItemIndex","prevIndex","nextIndex","newItemIndex","animate","play","setTimeout","nextExists","newItems","$node","setAttribute","firstElementChild","append","prepend","codeName","resetState","async","galleryContentRefLocal","cancel","offsetWidth","getPropertyValue","removeProperty","setProperty","getWidth","offsetHeight","desktopItemsPerSlide","tableItemsPerSlide","mobileItemsPerSlide","desktopNum","tableNum","mobileNum","getItemsNumberPerSlide","temp","from","querySelectorAll","forEach","$dItem","remove","isInteger","jumpToItemIndex","handleTouchStart","evt","touches","clientX","clientY","handleTouchMove","xUp","yUp","xDiff","yDiff","isHorizontalSwipe","abs","allowVerticalScrolling","preventDefault","isArrowsOverflow","arrowsHeightWidthRatio","ref","galleryStaticContentArrowClasses","onClick","prevButtonArrow","arrowsColor","galleryStaticContentClasses","right","galleryRightFadeClasses","nextButtonArrow","findIndex","predicate","TypeError","list","thisArg","arguments","warnings","fallbackImage","sizesAttribute","invalidARFormat","oversizeImage","lazyLCP","PACKAGE_VERSION","_hasBuffer","Buffer","_TE","TextDecoder","TextEncoder","b64chs","_fromCC","tab","_mkUriSafe","src","m0","_btoa","btoa","u32","c0","c1","c2","asc","pad","substring","_fromUint8Array","u8a","strs","apply","subarray","cb_utob","re_utob","_encode","encode","gBase64","urlsafe","PLUS_RE","text","PROTOCOL_STRICT_REGEX","PROTOCOL_REGEX","PROTOCOL_RELATIVE_REGEX","hasProtocol","inputString","opts","acceptRelative","strict","getQuery","input","parametersString","parameter","split","match","parseQuery","parseURL","search","protocolRelative","Symbol","for","defaultProto","_specialProtoMatch","_proto","_pathname","protocol","toLowerCase","href","auth","host","hash","parsePath","hostAndPath","path","splice","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread2","target","source","getOwnPropertyDescriptors","defineProperties","iterator","descriptor","_slicedToArray","arr","_arrayWithHoles","_i","_s","_e","_x","_r","_arr","_n","_d","next","done","return","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","len","arr2","arg","hint","prim","toPrimitive","res","DOMAIN_REGEX","DPR_QUALITIES","DEFAULT_DPR","DEFAULT_OPTIONS","domain","useHTTPS","includeLibraryParam","urlPrefix","secureURLToken","extractUrl","_ref","_ref$url","url","_ref$useHttps","useHttps","validateRange","min","concat","validateWidthTolerance","widthTolerance","ImgixClient","instance","Constructor","settings","targetWidthsCache","exec","libraryParam","version","protoProps","staticProps","rawPath","params","_sanitizePath","finalParams","_buildParams","_signParams","useCustomEncoder","encoder","customEncoder","queryParams","reduce","prev","_ref2","encodedKey","encodedValue","signatureBase","signature","_path","disablePathEncoding","encodeURI","w","h","_buildDPRSrcSet","_buildSrcSetPairs","targetWidthValues","_this","_validateAndDestructu","minWidth","maxWidth","validateAndDestructureOptions","_validateAndDestructu2","widths","customWidths","every","validateWidths","targetWidths","buildURL","_this2","devicePixelRatios","dpr","validateDevicePixelRatios","targetRatios","disableVariableQuality","validateVariableQuality","variableQualities","validateVariableQualities","qualities","srcset","q","withQuality","_extractUrl","combinedParams","srcsetModifiers","clientOptions","_extractUrl2","buildSrcSet","cache","minW","maxW","cacheKey","resolutions","currentWidth","round","r","PARAM_EXPANSION","freeze","brightness","contrast","exposure","gamma","highlights","hue","invert","saturation","shaddows","shadows","sharpness","vibrance","blend","border","padding","faces","download","DPI","format","quality","orientation","blurring","halftone","monotone","pixelate","compactParamKeys","longImgixParams","keysLength","extractClientAndPathComponents","_src$split2","u","f","scheme","_rest$split2","_toArray","pathComponents","client","auto","srcOptions","_extractClientAndPath","splitSrc","query","paramsPairs","splitParam","val","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","ShouldComponentUpdateHOC","WrappedComponent","_Component","_len","args","_key","nextProps","onMounted","oldProp","newProp","create","_inherits","Component","displayName","ImgixContext","createContext","_mergeProps","destination","newProps","newPropKeys","_Object$entries","k","_objectEntries","_Object$entries$_i","v","mergeComponentPropsHOF","contextProps","useContext","childProps","PARAMS_EXP_MAP","assign","processPropsHOF","formattedProps","formatSrc","formatProps","formattedImgixParams","compactedParams","collapseImgixParams","imgixParams","_excluded2","includes","propertyIsEnumerable","buildKey","defaultImgixParams","defaultAttributeMap","srcSet","sizes","noop","COMMON_PROP_TYPES","htmlAttributes","alt","SHARED_IMGIX_AND_SOURCE_PROP_TYPES","disableQualityByDPR","disableSrcSet","disableLibraryParam","srcSetOptions","REACT_IMGIX_PROP_TYPES","setParentRef","parentRef","el","rawSrc","buildSrc","inputSrc","fixedSize","_extractQueryParams2","srcImgixParams","ixlib","sharedSrcSetOptions","_width","_height","urlParams","finalWidth","finalHeight","_urlParams","aspectRatio","ar","aspectRatioIsValid","ReactImgix","imgRef","_this$props$htmlAttri","_this$props$htmlAttri2","_this$props$htmlAttri3","_this$props$htmlAttri4","_this$props$htmlAttri5","_this$props","_buildSrc","attributeConfig","adjustedSizes","loading","PictureImpl","_Component2","_this3","pictureRef","_this4","children","_children","child","_child$type","childIsReactImgix","_inPicture","imgIdx","ReactImgixWrapped","console","warn","SourceImpl","_Component3","_this5","sourceRef","_this$props$htmlAttri6","_this$props$htmlAttri7","_this6","_this$props2","_buildSrc2","p","MapShim","Map","getIndex","result","some","entry","class_1","__entries__","set","delete","has","clear","callback","ctx","_a","isBrowser","global$1","self","requestAnimationFrame$1","requestAnimationFrame","Date","now","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","size","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","bottom","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","getHTMLElementContentRect","y","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","clearActive","observation","WeakMap","method","types","getTypes","allowedTypes","calculations","clientTop","clientLeft","offset","scroll","scrollTop","scrollLeft","scrollWidth","scrollHeight","getBoundingClientRect","bounds","margin","marginTop","marginLeft","withContentRect","_class","_temp","subClass","superClass","WithContentRect","_animationFrameID","_resizeObserver","_node","_window","measure","setState","onResize","_handleRef","innerRef","componentDidMount","componentWillUnmount","cancelAnimationFrame","render","excluded","sourceKeys","measureRef","propTypes","Measure","BackgroundImpl","_React$Component","prevWidth","prevHeight","nextBounds","nextWidth","nextHeight","__shouldComponentUpdate","_this$props$imgixPara","onLoad","_this$props$className","forcedWidth","forcedHeight","hasDOMDimensions","devicePixelRatio","toFixed","onRef","searchValue","mid","lo","hi","findClosest","_height2","isReady","commonProps","renderedSrc","fit","backgroundImage","backgroundSize","StudioVersePageTypeEnum","ModeratorEntityTypeEnum","getEpochFromDate","date","getTime","onClickProfile","profile","handle","AVATAR_PATH","cx","cy","rx","ry","stroke","strokeWidth","clipRule","isDarkBackground","imgWidth","creator","imgExt","imgCdnDomain","creatorsPath","prfUserGUID","itemModifiedWhen","imgHeight","publicName","cancelImgLazyload","mask","facepad","isVerified","ListCreators","creatorsIDs","creatorId","creatorListData","profiles","profileID","isDesktop","presetSizes","DesktopItemsPerSlide","isLoop","iconColor","bgColor","maskType","maskUnits","filterUnits","colorInterpolationFilters","floodOpacity","in","values","dy","stdDeviation","mode","in2","operator","ifShouldDenyOnReadOnly","response","status","getSasUrl","data","qs","encodeData","headers","Headers","fetch","credentials","statusCode","presetGuid","AudioBase64StyleEnum","buttonColor","buttonBgColor","buttonStyle","DefaultStyle","isPlayed","setIsPlayed","isFirstTimeSelected","setIsFirstTimeSelected","perfTime","setPerfTime","serverTime","setServerTime","player","setPlayer","playerHTML","getElementById","elId","log","playToggle","startTime","performance","ab64Wrap","base64Str","endTime","pResult","resultEX","loadBase64Str","paused","stop","allAudio","getElementsByTagName","pause","currentTime","stopAllMusicOnPage","showDebugInfo","ChainStyle","IconStyle","hoverAudioBase64","setHoverAudioBase64","showLinkBubble","setShowLinkBubble","showDragAndDropBubble","setShowDragAndDropBubble","popUpInsideScreen","setPopUpInsideScreen","containerRef","isMobileScreen","chainFullLink","hostname","preset","presetGUID","OnMouseOverSetPopUpInsideScreen","presetListRef","presetListRect","presetName","onMouseLeave","evnt","audioDemo","onMouseEnter","algType","draggable","onDragStart","dataTransfer","setData","clipboard","writeText","setShowLinkCopiedPopup","isColorFill","imageContainer","showOverButtons","setShowOverButtons","isUserLiked","setIsUserLiked","isUserLike","isLikeLoading","setIsLikeLoading","presetLikeCount","setPresetLikeCount","likesCount","isDesktopScreen","onClickPreset","onKeyUp","imgGUID","imgLastModified","stringify","post","PresetGuid","setUserLikeClick","isValid","relatedData","likeObj","paddingTop","isHandleLinked","Popup","popupRef","closeButtonRef","focus","closePopup","close","handleEscape","canBeClosed","iconWidth","tabIndex","background","removeBackdrop","zIndex","prevent","stopPropagation","bgClass","btnRight","btnTop","ListPresets","presetsIDs","presetId","presetListData","presets","presetID","listContainerRef","showLinkCopiedPopup","mouseOver","currentTarget","parentNode","mouseOut","paddingRight","paddingLeft","presetTags","tag","presetProfilePairs","pair","role","isScrolledIntoView","elem","event","StudioVersePageDM","ImgCdnDomain","trim","CreatorsPath","$popup","listID","getAttribute","presetIDs","presetsData","sortItems","sortItem","sort","sortID","$placeholder","creatorIDs","creatorsData","studioVersePageDM","isNoLazyLoad","initCreatorsList","init"],"sourceRoot":""}