{"version":3,"file":"blog-by-tag-gallery-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 \"ReactDOM\"","webpack://waves/external var \"React\"","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/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://waves/./node_modules/date-fns/esm/toDate/index.js","webpack://waves/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://waves/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://waves/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://waves/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://waves/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://waves/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://waves/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://waves/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://waves/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://waves/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://waves/./node_modules/date-fns/esm/format/index.js","webpack://waves/./node_modules/date-fns/esm/isValid/index.js","webpack://waves/./node_modules/date-fns/esm/isDate/index.js","webpack://waves/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://waves/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://waves/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://waves/./src/projects/galleries/blog-by-tag-gallery/gallery.tsx","webpack://waves/./src/projects/galleries/blog-by-tag-gallery/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__ = ReactDOM;","const __WEBPACK_NAMESPACE_OBJECT__ = React;","/**\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 default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import Gallery from '../gallery/gallery';\r\nimport { IJsonNewsAndStories } from '../../live-pages/news-and-stories/interfaces';\r\nimport { sendGAEvent } from '../../../domain/marketing/gtm-provider';\r\nimport Imgix from 'react-imgix';\r\nimport { format } from 'date-fns';\r\nimport React from 'react';\r\nimport { IBlogVideo } from './interfaces';\r\nimport { getImgCDNDomain } from '../../../domain/common';\r\n\r\ninterface IBlogByTagGallery {\r\n data: IBlogVideo[];\r\n isShowHalf: boolean;\r\n isShowVideoDetails: boolean;\r\n}\r\n\r\nconst decodeHTML = (html: string) => {\r\n const txt = document.createElement('textarea');\r\n txt.innerHTML = html;\r\n return txt.value;\r\n};\r\n\r\nconst BlogByTagGallery = ({ data, isShowHalf, isShowVideoDetails }: IBlogByTagGallery) => {\r\n\r\n const imgDomain = getImgCDNDomain();\r\n\r\n return (\r\n
\r\n {\r\n const name = decodeHTML(item.documentName);\r\n return (\r\n <>\r\n
{\r\n sendGAEvent('NewsAndStories', name);\r\n }}>\r\n \r\n \r\n {\r\n isShowVideoDetails &&
\r\n {\r\n item.isVideo && Video\r\n }\r\n {\r\n !item.isVideo && Blog\r\n }\r\n {format(new Date(item.postDate), 'MMM dd,yyyy')}\r\n {\r\n item.isVideo && \r\n }\r\n {\r\n item.isVideo && {item.viewCount} Views\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 BlogByTagGallery;","import ReactDOM from 'react-dom';\r\nimport React from 'react';\r\nimport { getJSONFromHtml } from '../../../domain/common';\r\nimport BlogByTagGallery from './gallery';\r\nimport { IBlogVideo } from './interfaces';\r\n\r\nconst init = () => {\r\n const $placeholders = document.querySelectorAll('[data-type=\"blog-by-tag-gallery\"]');\r\n\r\n for(const $placeholder of $placeholders) {\r\n const $data = $placeholder.querySelector('[data-type=\"blog-by-tag-gallery-data\"]') as HTMLElement;\r\n if(!$data) continue;\r\n\r\n const data = getJSONFromHtml($data) as IBlogVideo[];\r\n if(!data) continue;\r\n\r\n ReactDOM.render(\r\n ,\r\n $placeholder\r\n );\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\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","ReactDOM","React","getJSONFromHtml","$el","textContent","json","JSON","parse","ex","CartSteps","ProductDepartmentEnum","LastPaymentOption","PaymentTabsEnum","CreditCardServiceEnum","CreditCardTabTabsEnum","sendGAEvent","eventTitle","eventValue","dataLayer","pathname","value","configurable","writable","height","setHeight","useState","style","setStyle","width","rotationAngle","useEffect","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","innerWidth","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","addEventListener","removeEventListener","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","test","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","requiredArgs","required","toDate","argument","argStr","getTime","stack","NaN","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","values","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","rest","code","formatDistance","token","count","tokenValue","addSuffix","comparison","formatLong","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","weekStartsOn","firstWeekContainsDate","toInteger","startOfUTCISOWeek","dirtyDate","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeek","locale","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","output","signedYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","formatTimezoneShort","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","M","L","week","firstWeek","startOfUTCWeekYear","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","B","H","K","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","O","z","originalDate","T","dateLongFormatter","pattern","timeLongFormatter","P","dateTimeFormat","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","isDate","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffsetInMilliseconds","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","firstCharacter","longFormatter","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","data","isShowHalf","isShowVideoDetails","imgDomain","$box","getElementById","trim","getImgCDNDomain","minHeight","html","txt","innerHTML","decodeHTML","documentName","documentUrlPath","previewImage","isVideo","postDate","viewCount","clipRule","$placeholders","$placeholder","$data","init"],"sourceRoot":""}