{"version":3,"file":"subscriptions-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/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://waves/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack://waves/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack://waves/./node_modules/is-buffer/index.js","webpack://waves/./node_modules/lodash/_DataView.js","webpack://waves/./node_modules/lodash/_Hash.js","webpack://waves/./node_modules/lodash/_ListCache.js","webpack://waves/./node_modules/lodash/_Map.js","webpack://waves/./node_modules/lodash/_MapCache.js","webpack://waves/./node_modules/lodash/_Promise.js","webpack://waves/./node_modules/lodash/_Set.js","webpack://waves/./node_modules/lodash/_Stack.js","webpack://waves/./node_modules/lodash/_Symbol.js","webpack://waves/./node_modules/lodash/_Uint8Array.js","webpack://waves/./node_modules/lodash/_WeakMap.js","webpack://waves/./node_modules/lodash/_arrayEach.js","webpack://waves/./node_modules/lodash/_arrayFilter.js","webpack://waves/./node_modules/lodash/_arrayLikeKeys.js","webpack://waves/./node_modules/lodash/_arrayPush.js","webpack://waves/./node_modules/lodash/_assignValue.js","webpack://waves/./node_modules/lodash/_assocIndexOf.js","webpack://waves/./node_modules/lodash/_baseAssign.js","webpack://waves/./node_modules/lodash/_baseAssignIn.js","webpack://waves/./node_modules/lodash/_baseAssignValue.js","webpack://waves/./node_modules/lodash/_baseClone.js","webpack://waves/./node_modules/lodash/_baseCreate.js","webpack://waves/./node_modules/lodash/_baseGetAllKeys.js","webpack://waves/./node_modules/lodash/_baseGetTag.js","webpack://waves/./node_modules/lodash/_baseIsArguments.js","webpack://waves/./node_modules/lodash/_baseIsMap.js","webpack://waves/./node_modules/lodash/_baseIsNative.js","webpack://waves/./node_modules/lodash/_baseIsSet.js","webpack://waves/./node_modules/lodash/_baseIsTypedArray.js","webpack://waves/./node_modules/lodash/_baseKeys.js","webpack://waves/./node_modules/lodash/_baseKeysIn.js","webpack://waves/./node_modules/lodash/_baseTimes.js","webpack://waves/./node_modules/lodash/_baseUnary.js","webpack://waves/./node_modules/lodash/_cloneArrayBuffer.js","webpack://waves/./node_modules/lodash/_cloneBuffer.js","webpack://waves/./node_modules/lodash/_cloneDataView.js","webpack://waves/./node_modules/lodash/_cloneRegExp.js","webpack://waves/./node_modules/lodash/_cloneSymbol.js","webpack://waves/./node_modules/lodash/_cloneTypedArray.js","webpack://waves/./node_modules/lodash/_copyArray.js","webpack://waves/./node_modules/lodash/_copyObject.js","webpack://waves/./node_modules/lodash/_copySymbols.js","webpack://waves/./node_modules/lodash/_copySymbolsIn.js","webpack://waves/./node_modules/lodash/_coreJsData.js","webpack://waves/./node_modules/lodash/_defineProperty.js","webpack://waves/./node_modules/lodash/_freeGlobal.js","webpack://waves/./node_modules/lodash/_getAllKeys.js","webpack://waves/./node_modules/lodash/_getAllKeysIn.js","webpack://waves/./node_modules/lodash/_getMapData.js","webpack://waves/./node_modules/lodash/_getNative.js","webpack://waves/./node_modules/lodash/_getPrototype.js","webpack://waves/./node_modules/lodash/_getRawTag.js","webpack://waves/./node_modules/lodash/_getSymbols.js","webpack://waves/./node_modules/lodash/_getSymbolsIn.js","webpack://waves/./node_modules/lodash/_getTag.js","webpack://waves/./node_modules/lodash/_getValue.js","webpack://waves/./node_modules/lodash/_hashClear.js","webpack://waves/./node_modules/lodash/_hashDelete.js","webpack://waves/./node_modules/lodash/_hashGet.js","webpack://waves/./node_modules/lodash/_hashHas.js","webpack://waves/./node_modules/lodash/_hashSet.js","webpack://waves/./node_modules/lodash/_initCloneArray.js","webpack://waves/./node_modules/lodash/_initCloneByTag.js","webpack://waves/./node_modules/lodash/_initCloneObject.js","webpack://waves/./node_modules/lodash/_isIndex.js","webpack://waves/./node_modules/lodash/_isKeyable.js","webpack://waves/./node_modules/lodash/_isMasked.js","webpack://waves/./node_modules/lodash/_isPrototype.js","webpack://waves/./node_modules/lodash/_listCacheClear.js","webpack://waves/./node_modules/lodash/_listCacheDelete.js","webpack://waves/./node_modules/lodash/_listCacheGet.js","webpack://waves/./node_modules/lodash/_listCacheHas.js","webpack://waves/./node_modules/lodash/_listCacheSet.js","webpack://waves/./node_modules/lodash/_mapCacheClear.js","webpack://waves/./node_modules/lodash/_mapCacheDelete.js","webpack://waves/./node_modules/lodash/_mapCacheGet.js","webpack://waves/./node_modules/lodash/_mapCacheHas.js","webpack://waves/./node_modules/lodash/_mapCacheSet.js","webpack://waves/./node_modules/lodash/_nativeCreate.js","webpack://waves/./node_modules/lodash/_nativeKeys.js","webpack://waves/./node_modules/lodash/_nativeKeysIn.js","webpack://waves/./node_modules/lodash/_nodeUtil.js","webpack://waves/./node_modules/lodash/_objectToString.js","webpack://waves/./node_modules/lodash/_overArg.js","webpack://waves/./node_modules/lodash/_root.js","webpack://waves/./node_modules/lodash/_stackClear.js","webpack://waves/./node_modules/lodash/_stackDelete.js","webpack://waves/./node_modules/lodash/_stackGet.js","webpack://waves/./node_modules/lodash/_stackHas.js","webpack://waves/./node_modules/lodash/_stackSet.js","webpack://waves/./node_modules/lodash/_toSource.js","webpack://waves/./node_modules/lodash/cloneDeep.js","webpack://waves/./node_modules/lodash/eq.js","webpack://waves/./node_modules/lodash/isArguments.js","webpack://waves/./node_modules/lodash/isArray.js","webpack://waves/./node_modules/lodash/isArrayLike.js","webpack://waves/./node_modules/lodash/isBuffer.js","webpack://waves/./node_modules/lodash/isFunction.js","webpack://waves/./node_modules/lodash/isLength.js","webpack://waves/./node_modules/lodash/isMap.js","webpack://waves/./node_modules/lodash/isObject.js","webpack://waves/./node_modules/lodash/isObjectLike.js","webpack://waves/./node_modules/lodash/isSet.js","webpack://waves/./node_modules/lodash/isTypedArray.js","webpack://waves/./node_modules/lodash/keys.js","webpack://waves/./node_modules/lodash/keysIn.js","webpack://waves/./node_modules/lodash/stubArray.js","webpack://waves/./node_modules/lodash/stubFalse.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/react-is/cjs/react-is.production.min.js","webpack://waves/./node_modules/react-is/index.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/webpack/runtime/node module decorator","webpack://waves/external var \"React\"","webpack://waves/external var \"ReactDOM\"","webpack://waves/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://waves/./node_modules/immer/dist/immer.esm.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://waves/./node_modules/redux/es/redux.js","webpack://waves/./node_modules/redux-thunk/es/index.js","webpack://waves/./node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js","webpack://waves/./node_modules/react-redux/es/components/Context.js","webpack://waves/./node_modules/react-redux/es/utils/batch.js","webpack://waves/./node_modules/react-redux/es/utils/Subscription.js","webpack://waves/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://waves/./node_modules/react-redux/es/components/Provider.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://waves/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://waves/./node_modules/react-redux/es/hooks/useStore.js","webpack://waves/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://waves/./node_modules/react-redux/es/hooks/useSelector.js","webpack://waves/./node_modules/react-redux/es/index.js","webpack://waves/./src/domain/common.ts","webpack://waves/./src/projects/subscriptions/interfaces.ts","webpack://waves/./src/projects/subscriptions/enums.ts","webpack://waves/./src/domain/url-provider.ts","webpack://waves/./src/DAL/storage-provider.ts","webpack://waves/./src/domain/abtest/abtest-provider.ts","webpack://waves/./src/projects/subscriptions/DAL/store.ts","webpack://waves/./src/projects/subscriptions/DAL/data-service.ts","webpack://waves/./src/projects/subscriptions/icons/sbs-check.tsx","webpack://waves/./src/ui/svg/common/close.tsx","webpack://waves/./src/ui/svg/common/arrow.tsx","webpack://waves/./src/ui/svg/svg-provider.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/./src/domain/hidden-data-provider.ts","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/gdpr/domain/gdpr-provider.ts","webpack://waves/./src/projects/subscriptions/services/logic-helper.tsx","webpack://waves/./src/domain/marketing/outbrain-provider.ts","webpack://waves/./src/projects/subscriptions/icons/sbs-plans-arrow.tsx","webpack://waves/./src/projects/products/product-price/product-price-format.tsx","webpack://waves/./src/projects/subscriptions/components/price.tsx","webpack://waves/./src/ui/svg/common/info.tsx","webpack://waves/./src/projects/shopping-cart/cart-bridger-pay/enums/tax-id-status-enum.ts","webpack://waves/./src/projects/account/change-sbs-billing-info/data/root-slice.ts","webpack://waves/./src/domain/addresses/addresses-provider.ts","webpack://waves/./src/projects/account/change-sbs-billing-info/domain/validation-helpers.ts","webpack://waves/./src/projects/account/change-sbs-billing-info/data/store.ts","webpack://waves/./src/projects/subscriptions/components/two-month-free/two-month-free.tsx","webpack://waves/./src/ui/rating/star-rating.tsx","webpack://waves/./src/ui/clock/count-down-timer.tsx","webpack://waves/./src/ui/clock/clock-provider.ts","webpack://waves/./src/projects/subscriptions/components/price-different.tsx","webpack://waves/./src/projects/subscriptions/components/two-month-free/two-month-free-price-different.tsx","webpack://waves/./src/ui/toggle/toggle-styled.tsx","webpack://waves/./src/projects/subscriptions/components/plans.tsx","webpack://waves/./src/ui/svg/common/search.tsx","webpack://waves/./src/domain/animations/animations-provider.ts","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugins-sort-options.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plans-popup.tsx","webpack://waves/./src/projects/subscriptions/icons/sbs-eye.tsx","webpack://waves/./src/ui/svg/common/check-v.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugin-lg.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/setPrototypeOf.js","webpack://waves/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://waves/./node_modules/react-measure/dist/index.esm.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://waves/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://waves/./node_modules/react-imgix/es/targetWidths.js","webpack://waves/./node_modules/react-imgix/es/react-imgix-bg.js","webpack://waves/./node_modules/react-imgix/es/findClosest.js","webpack://waves/./node_modules/react-imgix/es/index.js","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugin-view-lg.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugins-popup-lg.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugin-mobile.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugin-view-mobile.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugins-popup-mobile.tsx","webpack://waves/./src/ui/popup/popup.tsx","webpack://waves/./src/projects/subscriptions/components/plugins-popup/plugins-popup.tsx","webpack://waves/./src/projects/subscriptions/components/two-month-free/two-month-free-popup.tsx","webpack://waves/./src/projects/subscriptions/components/two-month-free/two-month-free-new-version.tsx","webpack://waves/./src/projects/subscriptions/components/plans-side-by-side.tsx","webpack://waves/./src/projects/subscriptions/components/plans-only-ultimate.tsx","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/./src/projects/subscriptions/components/subscription-slider.tsx","webpack://waves/./src/projects/subscriptions/icons/sbs-smooth-check.tsx","webpack://waves/./src/projects/subscriptions/icons/sbs-animation-down-arrow.tsx","webpack://waves/./src/projects/subscriptions/components/main-banner.tsx","webpack://waves/./src/projects/subscriptions/components/title-decription.tsx","webpack://waves/./src/projects/subscriptions/components/main-banner-old.tsx","webpack://waves/./src/projects/subscriptions/components/main-banner-price-different.tsx","webpack://waves/./src/projects/subscriptions/App/App.tsx","webpack://waves/./src/projects/yotpo-preview/yotpoPreview.js","webpack://waves/./src/projects/yotpo-preview/yotpoPreviewList.js","webpack://waves/./src/projects/subscriptions/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","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\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","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\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","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\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))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","const __WEBPACK_NAMESPACE_OBJECT__ = React;","const __WEBPACK_NAMESPACE_OBJECT__ = ReactDOM;","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}","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\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\n return keys;\n}\n\nexport default function _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\n return target;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n for (var prop in b || (b = {}))\r\n if (__hasOwnProp.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n if (__getOwnPropSymbols)\r\n for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n var prop = _c[_i];\r\n if (__propIsEnum.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n }\r\n return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __async = function (__this, __arguments, generator) {\r\n return new Promise(function (resolve, reject) {\r\n var fulfilled = function (value) {\r\n try {\r\n step(generator.next(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var rejected = function (value) {\r\n try {\r\n step(generator.throw(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n step((generator = generator.apply(__this, __arguments)).next());\r\n });\r\n};\r\n// src/index.ts\r\nimport { enableES5 } from \"immer\";\r\nexport * from \"redux\";\r\nimport { default as default2, current as current2, freeze, original, isDraft as isDraft4 } from \"immer\";\r\nimport { createSelector as createSelector2 } from \"reselect\";\r\n// src/createDraftSafeSelector.ts\r\nimport { current, isDraft } from \"immer\";\r\nimport { createSelector } from \"reselect\";\r\nvar createDraftSafeSelector = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var selector = createSelector.apply(void 0, args);\r\n var wrappedSelector = function (value) {\r\n var rest = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n rest[_i - 1] = arguments[_i];\r\n }\r\n return selector.apply(void 0, __spreadArray([isDraft(value) ? current(value) : value], rest));\r\n };\r\n return wrappedSelector;\r\n};\r\n// src/configureStore.ts\r\nimport { createStore, compose as compose2, applyMiddleware, combineReducers } from \"redux\";\r\n// src/devtoolsExtension.ts\r\nimport { compose } from \"redux\";\r\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\r\n if (arguments.length === 0)\r\n return void 0;\r\n if (typeof arguments[0] === \"object\")\r\n return compose;\r\n return compose.apply(null, arguments);\r\n};\r\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\r\n return function (noop) {\r\n return noop;\r\n };\r\n};\r\n// src/isPlainObject.ts\r\nfunction isPlainObject(value) {\r\n if (typeof value !== \"object\" || value === null)\r\n return false;\r\n var proto = Object.getPrototypeOf(value);\r\n if (proto === null)\r\n return true;\r\n var baseProto = proto;\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto);\r\n }\r\n return proto === baseProto;\r\n}\r\n// src/getDefaultMiddleware.ts\r\nimport thunkMiddleware from \"redux-thunk\";\r\n// src/utils.ts\r\nfunction getTimeMeasureUtils(maxDelay, fnName) {\r\n var elapsed = 0;\r\n return {\r\n measureTime: function (fn) {\r\n var started = Date.now();\r\n try {\r\n return fn();\r\n }\r\n finally {\r\n var finished = Date.now();\r\n elapsed += finished - started;\r\n }\r\n },\r\n warnIfExceeded: function () {\r\n if (elapsed > maxDelay) {\r\n console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\r\n }\r\n }\r\n };\r\n}\r\nvar MiddlewareArray = /** @class */ (function (_super) {\r\n __extends(MiddlewareArray, _super);\r\n function MiddlewareArray() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n Object.setPrototypeOf(_this, MiddlewareArray.prototype);\r\n return _this;\r\n }\r\n Object.defineProperty(MiddlewareArray, Symbol.species, {\r\n get: function () {\r\n return MiddlewareArray;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MiddlewareArray.prototype.concat = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n return _super.prototype.concat.apply(this, arr);\r\n };\r\n MiddlewareArray.prototype.prepend = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n }\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\r\n };\r\n return MiddlewareArray;\r\n}(Array));\r\n// src/immutableStateInvariantMiddleware.ts\r\nvar isProduction = process.env.NODE_ENV === \"production\";\r\nvar prefix = \"Invariant failed\";\r\nfunction invariant(condition, message) {\r\n if (condition) {\r\n return;\r\n }\r\n if (isProduction) {\r\n throw new Error(prefix);\r\n }\r\n throw new Error(prefix + \": \" + (message || \"\"));\r\n}\r\nfunction stringify(obj, serializer, indent, decycler) {\r\n return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\r\n}\r\nfunction getSerialize(serializer, decycler) {\r\n var stack = [], keys = [];\r\n if (!decycler)\r\n decycler = function (_, value) {\r\n if (stack[0] === value)\r\n return \"[Circular ~]\";\r\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\r\n };\r\n return function (key, value) {\r\n if (stack.length > 0) {\r\n var thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value))\r\n value = decycler.call(this, key, value);\r\n }\r\n else\r\n stack.push(value);\r\n return serializer == null ? value : serializer.call(this, key, value);\r\n };\r\n}\r\nfunction isImmutableDefault(value) {\r\n return typeof value !== \"object\" || value === null || typeof value === \"undefined\" || Object.isFrozen(value);\r\n}\r\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\r\n var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\r\n return {\r\n detectMutations: function () {\r\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\r\n }\r\n };\r\n}\r\nfunction trackProperties(isImmutable, ignorePaths, obj, path) {\r\n if (ignorePaths === void 0) { ignorePaths = []; }\r\n if (path === void 0) { path = \"\"; }\r\n var tracked = { value: obj };\r\n if (!isImmutable(obj)) {\r\n tracked.children = {};\r\n for (var key in obj) {\r\n var childPath = path ? path + \".\" + key : key;\r\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n continue;\r\n }\r\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\r\n }\r\n }\r\n return tracked;\r\n}\r\nfunction detectMutations(isImmutable, ignorePaths, trackedProperty, obj, sameParentRef, path) {\r\n if (ignorePaths === void 0) { ignorePaths = []; }\r\n if (sameParentRef === void 0) { sameParentRef = false; }\r\n if (path === void 0) { path = \"\"; }\r\n var prevObj = trackedProperty ? trackedProperty.value : void 0;\r\n var sameRef = prevObj === obj;\r\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n return { wasMutated: true, path: path };\r\n }\r\n if (isImmutable(prevObj) || isImmutable(obj)) {\r\n return { wasMutated: false };\r\n }\r\n var keysToDetect = {};\r\n for (var key in trackedProperty.children) {\r\n keysToDetect[key] = true;\r\n }\r\n for (var key in obj) {\r\n keysToDetect[key] = true;\r\n }\r\n for (var key in keysToDetect) {\r\n var childPath = path ? path + \".\" + key : key;\r\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n continue;\r\n }\r\n var result = detectMutations(isImmutable, ignorePaths, trackedProperty.children[key], obj[key], sameRef, childPath);\r\n if (result.wasMutated) {\r\n return result;\r\n }\r\n }\r\n return { wasMutated: false };\r\n}\r\nfunction createImmutableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;\r\n ignoredPaths = ignoredPaths || ignore;\r\n var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\r\n return function (_c) {\r\n var getState = _c.getState;\r\n var state = getState();\r\n var tracker = track(state);\r\n var result;\r\n return function (next) { return function (action) {\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n var dispatchedAction = next(action);\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n measureUtils.warnIfExceeded();\r\n return dispatchedAction;\r\n }; };\r\n };\r\n}\r\n// src/serializableStateInvariantMiddleware.ts\r\nfunction isPlain(val) {\r\n var type = typeof val;\r\n return type === \"undefined\" || val === null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\r\n}\r\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths) {\r\n if (path === void 0) { path = \"\"; }\r\n if (isSerializable === void 0) { isSerializable = isPlain; }\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n var foundNestedSerializable;\r\n if (!isSerializable(value)) {\r\n return {\r\n keyPath: path || \"\",\r\n value: value\r\n };\r\n }\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n var entries = getEntries != null ? getEntries(value) : Object.entries(value);\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths && ignoredPaths.indexOf(nestedPath) >= 0) {\r\n continue;\r\n }\r\n if (!isSerializable(nestedValue)) {\r\n return {\r\n keyPath: nestedPath,\r\n value: nestedValue\r\n };\r\n }\r\n if (typeof nestedValue === \"object\") {\r\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths);\r\n if (foundNestedSerializable) {\r\n return foundNestedSerializable;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction createSerializableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h;\r\n return function (storeAPI) { return function (next) { return function (action) {\r\n if (ignoredActions.length && ignoredActions.indexOf(action.type) !== -1) {\r\n return next(action);\r\n }\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\r\n measureUtils.measureTime(function () {\r\n var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths);\r\n if (foundActionNonSerializableValue) {\r\n var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\r\n }\r\n });\r\n var result = next(action);\r\n if (!ignoreState) {\r\n measureUtils.measureTime(function () {\r\n var state = storeAPI.getState();\r\n var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths);\r\n if (foundStateNonSerializableValue) {\r\n var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\r\n }\r\n });\r\n measureUtils.warnIfExceeded();\r\n }\r\n return result;\r\n }; }; };\r\n}\r\n// src/getDefaultMiddleware.ts\r\nfunction isBoolean(x) {\r\n return typeof x === \"boolean\";\r\n}\r\nfunction curryGetDefaultMiddleware() {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options);\r\n };\r\n}\r\nfunction getDefaultMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e;\r\n var middlewareArray = new MiddlewareArray();\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware);\r\n }\r\n else {\r\n middlewareArray.push(thunkMiddleware.withExtraArgument(thunk.extraArgument));\r\n }\r\n }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (immutableCheck) {\r\n var immutableOptions = {};\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck;\r\n }\r\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\r\n }\r\n if (serializableCheck) {\r\n var serializableOptions = {};\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck;\r\n }\r\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\r\n }\r\n }\r\n return middlewareArray;\r\n}\r\n// src/configureStore.ts\r\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\r\nfunction configureStore(options) {\r\n var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\r\n var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;\r\n var rootReducer;\r\n if (typeof reducer === \"function\") {\r\n rootReducer = reducer;\r\n }\r\n else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer);\r\n }\r\n else {\r\n throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\r\n }\r\n var finalMiddleware = middleware;\r\n if (typeof finalMiddleware === \"function\") {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\r\n }\r\n }\r\n if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== \"function\"; })) {\r\n throw new Error(\"each middleware provided to configureStore must be a function\");\r\n }\r\n var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);\r\n var finalCompose = compose2;\r\n if (devTools) {\r\n finalCompose = composeWithDevTools(__spreadValues({\r\n trace: !IS_PRODUCTION\r\n }, typeof devTools === \"object\" && devTools));\r\n }\r\n var storeEnhancers = [middlewareEnhancer];\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\r\n }\r\n else if (typeof enhancers === \"function\") {\r\n storeEnhancers = enhancers(storeEnhancers);\r\n }\r\n var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\r\n return createStore(rootReducer, preloadedState, composedEnhancer);\r\n}\r\n// src/createAction.ts\r\nfunction createAction(type, prepareAction) {\r\n function actionCreator() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (prepareAction) {\r\n var prepared = prepareAction.apply(void 0, args);\r\n if (!prepared) {\r\n throw new Error(\"prepareAction did not return an object\");\r\n }\r\n return __spreadValues(__spreadValues({\r\n type: type,\r\n payload: prepared.payload\r\n }, \"meta\" in prepared && { meta: prepared.meta }), \"error\" in prepared && { error: prepared.error });\r\n }\r\n return { type: type, payload: args[0] };\r\n }\r\n actionCreator.toString = function () { return \"\" + type; };\r\n actionCreator.type = type;\r\n actionCreator.match = function (action) { return action.type === type; };\r\n return actionCreator;\r\n}\r\nfunction isFSA(action) {\r\n return isPlainObject(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\r\n}\r\nfunction isValidKey(key) {\r\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\r\n}\r\nfunction getType(actionCreator) {\r\n return \"\" + actionCreator;\r\n}\r\n// src/createReducer.ts\r\nimport createNextState, { isDraft as isDraft2, isDraftable } from \"immer\";\r\n// src/mapBuilders.ts\r\nfunction executeReducerBuilderCallback(builderCallback) {\r\n var actionsMap = {};\r\n var actionMatchers = [];\r\n var defaultCaseReducer;\r\n var builder = {\r\n addCase: function (typeOrActionCreator, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\r\n if (type in actionsMap) {\r\n throw new Error(\"addCase cannot be called with two reducers for the same action type\");\r\n }\r\n actionsMap[type] = reducer;\r\n return builder;\r\n },\r\n addMatcher: function (matcher, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n actionMatchers.push({ matcher: matcher, reducer: reducer });\r\n return builder;\r\n },\r\n addDefaultCase: function (reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addDefaultCase` can only be called once\");\r\n }\r\n }\r\n defaultCaseReducer = reducer;\r\n return builder;\r\n }\r\n };\r\n builderCallback(builder);\r\n return [actionsMap, actionMatchers, defaultCaseReducer];\r\n}\r\n// src/createReducer.ts\r\nfunction isStateFunction(x) {\r\n return typeof x === \"function\";\r\n}\r\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\r\n if (actionMatchers === void 0) { actionMatchers = []; }\r\n var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];\r\n var getInitialState;\r\n if (isStateFunction(initialState)) {\r\n getInitialState = function () { return createNextState(initialState(), function () {\r\n }); };\r\n }\r\n else {\r\n var frozenInitialState_1 = createNextState(initialState, function () {\r\n });\r\n getInitialState = function () { return frozenInitialState_1; };\r\n }\r\n function reducer(state, action) {\r\n if (state === void 0) { state = getInitialState(); }\r\n var caseReducers = __spreadArray([\r\n actionsMap[action.type]\r\n ], finalActionMatchers.filter(function (_c) {\r\n var matcher = _c.matcher;\r\n return matcher(action);\r\n }).map(function (_c) {\r\n var reducer2 = _c.reducer;\r\n return reducer2;\r\n }));\r\n if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer];\r\n }\r\n return caseReducers.reduce(function (previousState, caseReducer) {\r\n if (caseReducer) {\r\n if (isDraft2(previousState)) {\r\n var draft = previousState;\r\n var result = caseReducer(draft, action);\r\n if (typeof result === \"undefined\") {\r\n return previousState;\r\n }\r\n return result;\r\n }\r\n else if (!isDraftable(previousState)) {\r\n var result = caseReducer(previousState, action);\r\n if (typeof result === \"undefined\") {\r\n if (previousState === null) {\r\n return previousState;\r\n }\r\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\r\n }\r\n return result;\r\n }\r\n else {\r\n return createNextState(previousState, function (draft) {\r\n return caseReducer(draft, action);\r\n });\r\n }\r\n }\r\n return previousState;\r\n }, state);\r\n }\r\n reducer.getInitialState = getInitialState;\r\n return reducer;\r\n}\r\n// src/createSlice.ts\r\nfunction getType2(slice, actionKey) {\r\n return slice + \"/\" + actionKey;\r\n}\r\nfunction createSlice(options) {\r\n var name = options.name;\r\n if (!name) {\r\n throw new Error(\"`name` is a required option for createSlice\");\r\n }\r\n var initialState = typeof options.initialState == \"function\" ? options.initialState : default2(options.initialState, function () {\r\n });\r\n var reducers = options.reducers || {};\r\n var reducerNames = Object.keys(reducers);\r\n var sliceCaseReducersByName = {};\r\n var sliceCaseReducersByType = {};\r\n var actionCreators = {};\r\n reducerNames.forEach(function (reducerName) {\r\n var maybeReducerWithPrepare = reducers[reducerName];\r\n var type = getType2(name, reducerName);\r\n var caseReducer;\r\n var prepareCallback;\r\n if (\"reducer\" in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer;\r\n prepareCallback = maybeReducerWithPrepare.prepare;\r\n }\r\n else {\r\n caseReducer = maybeReducerWithPrepare;\r\n }\r\n sliceCaseReducersByName[reducerName] = caseReducer;\r\n sliceCaseReducersByType[type] = caseReducer;\r\n actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\r\n });\r\n function buildReducer() {\r\n var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;\r\n var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\r\n return createReducer(initialState, finalCaseReducers, actionMatchers, defaultCaseReducer);\r\n }\r\n var _reducer;\r\n return {\r\n name: name,\r\n reducer: function (state, action) {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer(state, action);\r\n },\r\n actions: actionCreators,\r\n caseReducers: sliceCaseReducersByName,\r\n getInitialState: function () {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer.getInitialState();\r\n }\r\n };\r\n}\r\n// src/entities/entity_state.ts\r\nfunction getInitialEntityState() {\r\n return {\r\n ids: [],\r\n entities: {}\r\n };\r\n}\r\nfunction createInitialStateFactory() {\r\n function getInitialState(additionalState) {\r\n if (additionalState === void 0) { additionalState = {}; }\r\n return Object.assign(getInitialEntityState(), additionalState);\r\n }\r\n return { getInitialState: getInitialState };\r\n}\r\n// src/entities/state_selectors.ts\r\nfunction createSelectorsFactory() {\r\n function getSelectors(selectState) {\r\n var selectIds = function (state) { return state.ids; };\r\n var selectEntities = function (state) { return state.entities; };\r\n var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });\r\n var selectId = function (_, id) { return id; };\r\n var selectById = function (entities, id) { return entities[id]; };\r\n var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });\r\n if (!selectState) {\r\n return {\r\n selectIds: selectIds,\r\n selectEntities: selectEntities,\r\n selectAll: selectAll,\r\n selectTotal: selectTotal,\r\n selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\r\n };\r\n }\r\n var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\r\n return {\r\n selectIds: createDraftSafeSelector(selectState, selectIds),\r\n selectEntities: selectGlobalizedEntities,\r\n selectAll: createDraftSafeSelector(selectState, selectAll),\r\n selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\r\n };\r\n }\r\n return { getSelectors: getSelectors };\r\n}\r\n// src/entities/state_adapter.ts\r\nimport createNextState2, { isDraft as isDraft3 } from \"immer\";\r\nfunction createSingleArgumentStateOperator(mutator) {\r\n var operator = createStateOperator(function (_, state) { return mutator(state); });\r\n return function operation(state) {\r\n return operator(state, void 0);\r\n };\r\n}\r\nfunction createStateOperator(mutator) {\r\n return function operation(state, arg) {\r\n function isPayloadActionArgument(arg2) {\r\n return isFSA(arg2);\r\n }\r\n var runMutator = function (draft) {\r\n if (isPayloadActionArgument(arg)) {\r\n mutator(arg.payload, draft);\r\n }\r\n else {\r\n mutator(arg, draft);\r\n }\r\n };\r\n if (isDraft3(state)) {\r\n runMutator(state);\r\n return state;\r\n }\r\n else {\r\n return createNextState2(state, runMutator);\r\n }\r\n };\r\n}\r\n// src/entities/utils.ts\r\nfunction selectIdValue(entity, selectId) {\r\n var key = selectId(entity);\r\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\r\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\r\n }\r\n return key;\r\n}\r\nfunction ensureEntitiesArray(entities) {\r\n if (!Array.isArray(entities)) {\r\n entities = Object.values(entities);\r\n }\r\n return entities;\r\n}\r\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var added = [];\r\n var updated = [];\r\n for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\r\n var entity = newEntities_1[_i];\r\n var id = selectIdValue(entity, selectId);\r\n if (id in state.entities) {\r\n updated.push({ id: id, changes: entity });\r\n }\r\n else {\r\n added.push(entity);\r\n }\r\n }\r\n return [added, updated];\r\n}\r\n// src/entities/unsorted_state_adapter.ts\r\nfunction createUnsortedStateAdapter(selectId) {\r\n function addOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (key in state.entities) {\r\n return;\r\n }\r\n state.ids.push(key);\r\n state.entities[key] = entity;\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\r\n var entity = newEntities_2[_i];\r\n addOneMutably(entity, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (!(key in state.entities)) {\r\n state.ids.push(key);\r\n }\r\n state.entities[key] = entity;\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\r\n var entity = newEntities_3[_i];\r\n setOneMutably(entity, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.ids = [];\r\n state.entities = {};\r\n addManyMutably(newEntities, state);\r\n }\r\n function removeOneMutably(key, state) {\r\n return removeManyMutably([key], state);\r\n }\r\n function removeManyMutably(keys, state) {\r\n var didMutate = false;\r\n keys.forEach(function (key) {\r\n if (key in state.entities) {\r\n delete state.entities[key];\r\n didMutate = true;\r\n }\r\n });\r\n if (didMutate) {\r\n state.ids = state.ids.filter(function (id) { return id in state.entities; });\r\n }\r\n }\r\n function removeAllMutably(state) {\r\n Object.assign(state, {\r\n ids: [],\r\n entities: {}\r\n });\r\n }\r\n function takeNewKey(keys, update, state) {\r\n var original2 = state.entities[update.id];\r\n var updated = Object.assign({}, original2, update.changes);\r\n var newKey = selectIdValue(updated, selectId);\r\n var hasNewKey = newKey !== update.id;\r\n if (hasNewKey) {\r\n keys[update.id] = newKey;\r\n delete state.entities[update.id];\r\n }\r\n state.entities[newKey] = updated;\r\n return hasNewKey;\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var newKeys = {};\r\n var updatesPerEntity = {};\r\n updates.forEach(function (update) {\r\n if (update.id in state.entities) {\r\n updatesPerEntity[update.id] = {\r\n id: update.id,\r\n changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\r\n };\r\n }\r\n });\r\n updates = Object.values(updatesPerEntity);\r\n var didMutateEntities = updates.length > 0;\r\n if (didMutateEntities) {\r\n var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\r\n if (didMutateIds) {\r\n state.ids = state.ids.map(function (id) { return newKeys[id] || id; });\r\n }\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n return {\r\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n addOne: createStateOperator(addOneMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n upsertMany: createStateOperator(upsertManyMutably),\r\n removeOne: createStateOperator(removeOneMutably),\r\n removeMany: createStateOperator(removeManyMutably)\r\n };\r\n}\r\n// src/entities/sorted_state_adapter.ts\r\nfunction createSortedStateAdapter(selectId, sort) {\r\n var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;\r\n function addOneMutably(entity, state) {\r\n return addManyMutably([entity], state);\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\r\n if (models.length !== 0) {\r\n merge(models, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n return setManyMutably([entity], state);\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n if (newEntities.length !== 0) {\r\n merge(newEntities, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.entities = {};\r\n state.ids = [];\r\n addManyMutably(newEntities, state);\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function takeUpdatedModel(models, update, state) {\r\n if (!(update.id in state.entities)) {\r\n return false;\r\n }\r\n var original2 = state.entities[update.id];\r\n var updated = Object.assign({}, original2, update.changes);\r\n var newKey = selectIdValue(updated, selectId);\r\n delete state.entities[update.id];\r\n models.push(updated);\r\n return newKey !== update.id;\r\n }\r\n function updateManyMutably(updates, state) {\r\n var models = [];\r\n updates.forEach(function (update) { return takeUpdatedModel(models, update, state); });\r\n if (models.length !== 0) {\r\n merge(models, state);\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n function areArraysEqual(a, b) {\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length && i < b.length; i++) {\r\n if (a[i] === b[i]) {\r\n continue;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n function merge(models, state) {\r\n models.forEach(function (model) {\r\n state.entities[selectId(model)] = model;\r\n });\r\n var allEntities = Object.values(state.entities);\r\n allEntities.sort(sort);\r\n var newSortedIds = allEntities.map(selectId);\r\n var ids = state.ids;\r\n if (!areArraysEqual(ids, newSortedIds)) {\r\n state.ids = newSortedIds;\r\n }\r\n }\r\n return {\r\n removeOne: removeOne,\r\n removeMany: removeMany,\r\n removeAll: removeAll,\r\n addOne: createStateOperator(addOneMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertMany: createStateOperator(upsertManyMutably)\r\n };\r\n}\r\n// src/entities/create_adapter.ts\r\nfunction createEntityAdapter(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = __spreadValues({\r\n sortComparer: false,\r\n selectId: function (instance) { return instance.id; }\r\n }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;\r\n var stateFactory = createInitialStateFactory();\r\n var selectorsFactory = createSelectorsFactory();\r\n var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\r\n return __spreadValues(__spreadValues(__spreadValues({\r\n selectId: selectId,\r\n sortComparer: sortComparer\r\n }, stateFactory), selectorsFactory), stateAdapter);\r\n}\r\n// src/nanoid.ts\r\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\r\nvar nanoid = function (size) {\r\n if (size === void 0) { size = 21; }\r\n var id = \"\";\r\n var i = size;\r\n while (i--) {\r\n id += urlAlphabet[Math.random() * 64 | 0];\r\n }\r\n return id;\r\n};\r\n// src/createAsyncThunk.ts\r\nvar commonProperties = [\r\n \"name\",\r\n \"message\",\r\n \"stack\",\r\n \"code\"\r\n];\r\nvar RejectWithValue = /** @class */ (function () {\r\n function RejectWithValue(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return RejectWithValue;\r\n}());\r\nvar FulfillWithMeta = /** @class */ (function () {\r\n function FulfillWithMeta(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return FulfillWithMeta;\r\n}());\r\nvar miniSerializeError = function (value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n var simpleError = {};\r\n for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\r\n var property = commonProperties_1[_i];\r\n if (typeof value[property] === \"string\") {\r\n simpleError[property] = value[property];\r\n }\r\n }\r\n return simpleError;\r\n }\r\n return { message: String(value) };\r\n};\r\nfunction createAsyncThunk(typePrefix, payloadCreator, options) {\r\n var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) { return ({\r\n payload: payload,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"fulfilled\"\r\n })\r\n }); });\r\n var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) { return ({\r\n payload: void 0,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"pending\"\r\n })\r\n }); });\r\n var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) { return ({\r\n payload: payload,\r\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: \"rejected\",\r\n aborted: (error == null ? void 0 : error.name) === \"AbortError\",\r\n condition: (error == null ? void 0 : error.name) === \"ConditionError\"\r\n })\r\n }); });\r\n var displayedWarning = false;\r\n var AC = typeof AbortController !== \"undefined\" ? AbortController : /** @class */ (function () {\r\n function class_1() {\r\n this.signal = {\r\n aborted: false,\r\n addEventListener: function () {\r\n },\r\n dispatchEvent: function () {\r\n return false;\r\n },\r\n onabort: function () {\r\n },\r\n removeEventListener: function () {\r\n }\r\n };\r\n }\r\n class_1.prototype.abort = function () {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (!displayedWarning) {\r\n displayedWarning = true;\r\n console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\r\n }\r\n }\r\n };\r\n return class_1;\r\n }());\r\n function actionCreator(arg) {\r\n return function (dispatch, getState, extra) {\r\n var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\r\n var abortController = new AC();\r\n var abortReason;\r\n var abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener(\"abort\", function () { return reject({ name: \"AbortError\", message: abortReason || \"Aborted\" }); }); });\r\n var started = false;\r\n function abort(reason) {\r\n if (started) {\r\n abortReason = reason;\r\n abortController.abort();\r\n }\r\n }\r\n var promise = function () {\r\n return __async(this, null, function () {\r\n var _a, _b, finalAction, conditionResult, err_1, skipDispatch;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 4, , 5]);\r\n conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });\r\n if (!isThenable(conditionResult)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, conditionResult];\r\n case 1:\r\n conditionResult = _c.sent();\r\n _c.label = 2;\r\n case 2:\r\n if (conditionResult === false) {\r\n throw {\r\n name: \"ConditionError\",\r\n message: \"Aborted due to condition callback returning false.\"\r\n };\r\n }\r\n started = true;\r\n dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));\r\n return [4 /*yield*/, Promise.race([\r\n abortedPromise,\r\n Promise.resolve(payloadCreator(arg, {\r\n dispatch: dispatch,\r\n getState: getState,\r\n extra: extra,\r\n requestId: requestId,\r\n signal: abortController.signal,\r\n rejectWithValue: function (value, meta) {\r\n return new RejectWithValue(value, meta);\r\n },\r\n fulfillWithValue: function (value, meta) {\r\n return new FulfillWithMeta(value, meta);\r\n }\r\n })).then(function (result) {\r\n if (result instanceof RejectWithValue) {\r\n throw result;\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta);\r\n }\r\n return fulfilled(result, requestId, arg);\r\n })\r\n ])];\r\n case 3:\r\n finalAction = _c.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n err_1 = _c.sent();\r\n finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\r\n return [3 /*break*/, 5];\r\n case 5:\r\n skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\r\n if (!skipDispatch) {\r\n dispatch(finalAction);\r\n }\r\n return [2 /*return*/, finalAction];\r\n }\r\n });\r\n });\r\n }();\r\n return Object.assign(promise, {\r\n abort: abort,\r\n requestId: requestId,\r\n arg: arg,\r\n unwrap: function () {\r\n return promise.then(unwrapResult);\r\n }\r\n });\r\n };\r\n }\r\n return Object.assign(actionCreator, {\r\n pending: pending,\r\n rejected: rejected,\r\n fulfilled: fulfilled,\r\n typePrefix: typePrefix\r\n });\r\n}\r\nfunction unwrapResult(action) {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload;\r\n }\r\n if (action.error) {\r\n throw action.error;\r\n }\r\n return action.payload;\r\n}\r\nfunction isThenable(value) {\r\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\r\n}\r\n// src/tsHelpers.ts\r\nvar hasMatchFunction = function (v) {\r\n return v && typeof v.match === \"function\";\r\n};\r\n// src/matchers.ts\r\nvar matches = function (matcher, action) {\r\n if (hasMatchFunction(matcher)) {\r\n return matcher.match(action);\r\n }\r\n else {\r\n return matcher(action);\r\n }\r\n};\r\nfunction isAnyOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.some(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction isAllOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.every(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction hasExpectedRequestMetadata(action, validStatus) {\r\n if (!action || !action.meta)\r\n return false;\r\n var hasValidRequestId = typeof action.meta.requestId === \"string\";\r\n var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\r\n return hasValidRequestId && hasValidRequestStatus;\r\n}\r\nfunction isAsyncThunkArray(a) {\r\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\r\n}\r\nfunction isPending() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isPending()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejected() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejected()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejectedWithValue() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n var hasFlag = function (action) {\r\n return action && action.meta && action.meta.rejectedWithValue;\r\n };\r\n if (asyncThunks.length === 0) {\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejectedWithValue()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isFulfilled() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"fulfilled\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isFulfilled()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isAsyncThunkAction() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isAsyncThunkAction()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = [];\r\n for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\r\n var asyncThunk = asyncThunks_1[_i];\r\n matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\r\n }\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\n// src/index.ts\r\nenableES5();\r\nexport { MiddlewareArray, configureStore, createAction, createAsyncThunk, createDraftSafeSelector, createEntityAdapter, createImmutableStateInvariantMiddleware, default2 as createNextState, createReducer, createSelector2 as createSelector, createSerializableStateInvariantMiddleware, createSlice, current2 as current, findNonSerializableValue, freeze, getDefaultMiddleware, getType, isAllOf, isAnyOf, isAsyncThunkAction, isDraft4 as isDraft, isFulfilled, isImmutableDefault, isPending, isPlain, isPlainObject, isRejected, isRejectedWithValue, miniSerializeError, nanoid, original, unwrapResult };\r\n//# sourceMappingURL=redux-toolkit.esm.js.map","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","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}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return
{store.getState()}
\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return
{store.getState()}
\n * }\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","/**\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};","\r\n\r\nexport enum abtest_SBSPage25Variants {\r\n //Today's default\r\n oldY = 0,\r\n sideBySide = 1,\r\n ultimateOnly\r\n\r\n\r\n}\r\n\r\n\r\nexport interface SubscriptionsVM {\r\n subscriptionPlans: SubscriptionPlanModel[];\r\n products: ProductModel[];\r\n sbsIncludedIn:number;\r\n}\r\n\r\nexport interface SubscriptionPlanModel {\r\n tierName: string;\r\n tierLowHigh: string;\r\n skU_MSRP: number;\r\n skuPrice: number;\r\n isPriceDifferent:boolean;\r\n skuName: string;\r\n skuNumber: string;\r\n documentUrlPath: string;\r\n tagline: string;\r\n sbsTypeID: number;\r\n skuid: number;\r\n numberOfFreeDays:number;\r\n rating: number;\r\n reviewsTotal:number;\r\n}\r\n\r\nexport interface ProductModel {\r\n documentName: string;\r\n isLow: number;\r\n isHigh: number;\r\n thumb: string;\r\n documentPageDescription: string;\r\n documentUrlPath: string;\r\n reviewsTotal: number | null;\r\n rating: number | null;\r\n sortPopular: number;\r\n sortIncludes: number;\r\n skuInStoreFrom: string;\r\n}\r\nexport interface SoftwareCodeAlert {\r\n key:number;\r\n title:string;\r\n}\r\nexport interface SbsActiveTier {\r\n itemOrder:number;\r\n tierName:string;\r\n}\r\nexport interface SoftwareCodesReponse {\r\n sbsIncludedIn: number;\r\n productCount: number;\r\n productName: string;\r\n thumb: string;\r\n}\r\n","\r\n/**\r\n * enum for Plugin Sort Statuses\r\n */\r\n\r\nexport enum PluginSortStatusEnum {\r\n Popular = 0,\r\n IncludedInPlan = 1,\r\n ProductNameAZ = 2,\r\n ProductNameZA = 3\r\n}","import { IIndexable } from './interfaces';\r\n\r\n/**\r\n * Read a page's GET URL variables and return them as an associative array\r\n * search (optional) - '?me=myValue&name2=SomeOtherValue'\r\n *\r\n * Usage:\r\n * ------\r\n * getQueryString(); //window.location.search\r\n * getQueryString('?me=myValue&name2=SomeOtherValue');\r\n * getQueryString()['key'] -> value\r\n *\r\n * Result:\r\n * -------\r\n * {\r\n * \"me\" : \"myValue\",\r\n * \"name2\" : \"SomeOtherValue\"\r\n * }\r\n *\r\n */\r\nexport const getQueryString = (search?: string, caseSensitive: boolean = true) : IIndexable => {\r\n\r\n const result = {} as IIndexable;\r\n\r\n if(!search){\r\n search = window.location.search;\r\n }\r\n\r\n // decode if needed\r\n search = window.decodeURIComponent(search.toString());\r\n\r\n if(!caseSensitive){\r\n search = search?.toLowerCase();\r\n }\r\n\r\n if(search.length <= 1) return result;\r\n\r\n // get hashes\r\n const hashes = search.substring(1).split('&');\r\n\r\n for(let i = 0; i < hashes.length; i++){\r\n\r\n //get hash\r\n const hash = hashes[i];\r\n\r\n //get hash sections\r\n const sections = hash.split('=');\r\n\r\n if(sections.length >= 2){\r\n\r\n let val = '';\r\n\r\n for(let s=1; s 1){\r\n val += '=';\r\n }\r\n\r\n val += sections[s];\r\n }\r\n\r\n //add to the object\r\n result[sections[0]] = val;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * generate return URL that includes query string and hashes\r\n * https://www.waves.com/login?ReturnUrl=/vocal-mixing-masterclass-leslie-brathwaite?playlist=756640c2-13c0-408b-ad77-0294173d7721\r\n */\r\nexport const getReturnURL = (prefix = '/login') => {\r\n /*\r\n const qs = Object.entries(getQueryString()).map(([key, value], index) => `${key}=${value}`); //\r\n qs.push(`returnurl=${encodeURIComponent(window.location.pathname)}`);\r\n return `/login?${qs.join('&')}`*/\r\n\r\n const returnURL = `ReturnUrl=${window.location.pathname}${window.location.search}${window.location.hash}`;\r\n return `${prefix}?${returnURL}`\r\n};\r\n\r\nexport const removeQueryParamFromUrl = (queryParam: string) => {\r\n if(!queryParam || typeof URLSearchParams === 'undefined') return;\r\n\r\n const url = new URL(window.location.href);\r\n const params = new URLSearchParams(url.search);\r\n if(params.has(queryParam)){\r\n params.delete(queryParam);\r\n url.search = params.toString();\r\n }\r\n\r\n window.history.replaceState({}, '', url.toString());\r\n};","export const COOKIES = 'cookies';\r\nexport const SESSION_STORAGE = 'session-storage';\r\nexport const LOCAL_STORAGE = 'local-storage';\r\n\r\n/**\r\n * check if storage type is enabled\r\n * storageType - 'local-storage', 'session-storage', or 'cookies'\r\n */\r\nexport const isStorageEnabled = (storageType: string) => {\r\n\r\n if(storageType === COOKIES) return true;\r\n\r\n if(storageType === LOCAL_STORAGE){\r\n\r\n const temp = 'test';\r\n\r\n try {\r\n window.localStorage.setItem(temp, temp);\r\n window.localStorage.removeItem(temp);\r\n return true;\r\n }\r\n catch(e) {\r\n return false;\r\n }\r\n }\r\n\r\n if(storageType === SESSION_STORAGE){\r\n\r\n const temp = 'test';\r\n\r\n try {\r\n window.sessionStorage.setItem(temp, temp);\r\n window.sessionStorage.removeItem(temp);\r\n return true;\r\n }\r\n catch(e) {\r\n return false;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n * set cookie\r\n * expiration - cookie expiration in minutes (-1 = cookie expires when browser is closed)\r\n * samesite - strict or lax\r\n */\r\nexport const setCookie = (\r\n name: string,\r\n value: any,\r\n expiration: number = -1,\r\n secure: boolean = false,\r\n samesite: string|undefined = undefined,\r\n preventStringify: boolean = false,\r\n domain?: string, // .waves.com\r\n) => {\r\n\r\n const escapedValue = encodeURIComponent(preventStringify ? value : JSON.stringify(value));\r\n const exp = Number(expiration) || -1;\r\n let cookieString = '';\r\n\r\n const domainValue = domain ? `domain=${ domain };` : '';\r\n\r\n if(exp === -1) {\r\n\r\n // cookie expires when browser is closed\r\n // If neither expires nor max-age specified the cookie will expire at the end of session.\r\n cookieString = `${ name }=${ escapedValue };path=/;${ domainValue }`;\r\n }\r\n else{\r\n const date = new Date();\r\n date.setMinutes(date.getMinutes() + expiration);\r\n\r\n // option to set expiration in days:\r\n //864e5 = 86400000 = 1000*60*60*24 represents the number of milliseconds in a 24 hour day.\r\n //date.setTime(date.getTime() + (days * 864e5));\r\n\r\n const expires = date.toUTCString();\r\n cookieString = `${ name }=${ escapedValue };path=/;${ domainValue }expires=${ expires }`;\r\n }\r\n\r\n if(samesite){\r\n // The strict value will prevent the cookie from being sent by the browser to the target site in all cross-site browsing context, even when following a regular link.\r\n // The lax value will only send cookies for TOP LEVEL navigation GET requests. This is sufficient for user tracking, but it will prevent many CSRF attacks.\r\n cookieString += `;samesite=${samesite}`;\r\n }\r\n\r\n if(secure){\r\n // Cookie to only be transmitted over secure protocol as https. Before Chrome 52, this flag could appear with cookies from http domains.\r\n cookieString += ';secure';\r\n }\r\n\r\n document.cookie = cookieString;\r\n};\r\n\r\n/**\r\n * Get cookie by name\r\n */\r\nexport const getCookie = (name: string) => {\r\n\r\n const cookies = document.cookie.split(';');\r\n\r\n for (let i=0; i {\r\n const escapedValue = encodeURIComponent(JSON.stringify(value));\r\n window.localStorage.setItem(storageName, escapedValue);\r\n};\r\n\r\n/**\r\n * get a value to the local storage\r\n */\r\nexport const getLocalStorageItem = (storageName: string) => {\r\n const value = window.localStorage.getItem(storageName) as string;\r\n return decodeURIComponent(value);\r\n};\r\n\r\n/**\r\n * save a value to the session storage\r\n */\r\nexport const setSessionStorageItem = (storageName: string, value: any) => {\r\n const escapedValue = encodeURIComponent(JSON.stringify(value));\r\n window.sessionStorage.setItem(storageName, escapedValue);\r\n};\r\n\r\n/**\r\n * get a value to the session storage\r\n */\r\nexport const getSessionStorageItem = (storageName: string) => {\r\n const value = window.sessionStorage.getItem(storageName) as string;\r\n return decodeURIComponent(value);\r\n};\r\n\r\n/**\r\n * save to web storage or cookies\r\n * storageType - 'local-storage', 'session-storage', or 'cookies'\r\n * cookiesExpiration - cookies expiration in minutes (-1 = cookies expire when browser is closed)\r\n */\r\nexport const saveToStorage = (storageType: string, storageName: any, value: any, cookiesExpiration: number = -1) => {\r\n\r\n // if this storage type is not supported -> do nothing\r\n if(!isStorageEnabled(storageType)) return;\r\n\r\n if(storageType === COOKIES) {\r\n setCookie(storageName, value, cookiesExpiration);\r\n }\r\n\r\n if(storageType === LOCAL_STORAGE) {\r\n setLocalStorageItem(storageName, value);\r\n }\r\n\r\n if(storageType === SESSION_STORAGE) {\r\n setSessionStorageItem(storageName, value);\r\n }\r\n};\r\n\r\n/**\r\n * get value from storage\r\n * storageType - 'local-storage', 'session-storage', or 'cookies'\r\n */\r\nexport const getFromStorage = (storageType: string, storageName: string) : string|null => {\r\n\r\n // if this storage type is not supported -> do nothing\r\n if(!isStorageEnabled(storageType)) return null;\r\n\r\n if(storageType === COOKIES) {\r\n return getCookie(storageName);\r\n }\r\n\r\n if(storageType === LOCAL_STORAGE) {\r\n return getLocalStorageItem(storageName);\r\n }\r\n\r\n if(storageType === SESSION_STORAGE) {\r\n return getSessionStorageItem(storageName);\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * if storage already exists, append to it, otherwise create a new one\r\n * storageType - 'local-storage', 'session-storage', or 'cookies'\r\n * storageName - it is used like key name in web storage, or like cookie name\r\n * this is a property name that is used to store the value inside the general widgets object\r\n * value - the value that should be stored\r\n * cookiesExpiration - cookies expiration in minutes (-1 = cookies expire when browser is closed)\r\n */\r\nexport const appendToStorage = (storageType: string, storageName: string, key: string, value: any, cookiesExpiration: number = -1) => {\r\n\r\n let data = getFromStorage(storageType, storageName) as any;\r\n\r\n try{\r\n data = JSON.parse(data);\r\n }\r\n catch(err){}\r\n\r\n if(!data) {\r\n\r\n // create new entry\r\n data = {\r\n [key]: value\r\n };\r\n }\r\n else{\r\n // append the entry\r\n data[key] = value;\r\n }\r\n\r\n // overwrite the storage\r\n saveToStorage(storageType, storageName, data, cookiesExpiration = -1);\r\n};","import { IABMasterSlotData, IABTest, IABTestSystem, IABTestVariation } from './abtest-interfaces';\r\nimport { getQueryString } from '../url-provider';\r\nimport { getCookie, getLocalStorageItem, setLocalStorageItem } from '../../DAL/storage-provider';\r\n\r\n/*\r\nUsage:\r\n-------\r\nconst abtest = getABTest('NeoWizeListRecs9019');\r\n\r\nif(abtest.isActive){\r\n sendABTestAnalytics(abtest);\r\n // sendABTestAnalytics(abtest, 'unavailable object');\r\n\r\n console.log(abtest.selected);\r\n}\r\n */\r\n\r\n/**\r\n * Allows to TypeScript recognize abtests namespace\r\n */\r\ndeclare global {\r\n interface Window {\r\n abtests: any;\r\n }\r\n}\r\n\r\nexport enum ABTestTypeEnum{\r\n Client = 0,\r\n Server = 1\r\n}\r\n\r\n// const EXPIRATION = 2000000000;\r\nconst CLIENT_SIDE_LOCAL_STORAGE_NAME = 'waves_abtest';\r\nconst SERVER_SIDE_COOKIE_NAME = 'waves_abtest_server';\r\n\r\n/**\r\n * handle the case when test has a master with selected \"off\" variant but their variant percents are different\r\n */\r\nconst handlePartialMasterVariants = (test: IABTest) => {\r\n if(!test.variations) return;\r\n\r\n let sum = 0;\r\n const offItems = [];\r\n\r\n for(let i=0; i 0) ? (100 / sum) : 0;\r\n\r\n for(let i=0; i the same, otherwise different\r\n */\r\nconst compareTestsVariants = (test1: IABTest, test2: IABTest) => {\r\n\r\n const test1Variations = test1.variations || [];\r\n const test2Variations = test2.variations || [];\r\n\r\n const values1 = test1Variations.map(item => item.percent);\r\n\r\n values1.sort((a, b) => {\r\n return a - b;\r\n });\r\n\r\n const values2 = test2Variations.map(item => item.percent);\r\n\r\n values2.sort((a, b) => {\r\n return a - b;\r\n });\r\n\r\n return values1.join(' ') === values2.join(' ');\r\n};\r\n\r\n/**\r\n * choose variation for 1 test\r\n */\r\nconst chooseVariation = (test: IABTest) => {\r\n\r\n const notRandomNumbers = [];\r\n\r\n if(!test || !test.variations) return;\r\n\r\n for(let i=0; i {\r\n\r\n if(!variations) return [];\r\n\r\n const testVariations: IABTestVariation[] = [];\r\n\r\n const list = variations.split(',');\r\n\r\n for(let i=0; i {\r\n\r\n const $data = document.getElementById('abtest-data') as HTMLElement;\r\n if(!$data) return [];\r\n\r\n const result: IABTest[] = [];\r\n let data = [];\r\n\r\n try{\r\n data = JSON.parse($data.textContent || '');\r\n }\r\n catch(ex){}\r\n\r\n if(!data) return [];\r\n\r\n for(let i=0; i {\r\n\r\n if (!window.location.search || window.location.search.indexOf('abtest') === -1) return [];\r\n\r\n const abtestString = getQueryString()['abtest'];\r\n\r\n if(!abtestString) return [];\r\n\r\n const tests = [];\r\n const testsArr = abtestString.split('_');\r\n\r\n for(let i=0; i {\r\n\r\n for(let i=0; i {\r\n\r\n for(let i=0; i {\r\n\r\n const masterSlotIDs: IABMasterSlotData = {};\r\n const regular = [];\r\n\r\n // get updated tests and split them to 2 groups: master and non-master\r\n for(let i=0; i {\r\n\r\n if(!savedTests || !Array.isArray(savedTests)){\r\n savedTests = [];\r\n }\r\n\r\n if(!newTests || !Array.isArray(newTests)){\r\n newTests = [];\r\n }\r\n\r\n let updatedTests: IABTest[] = [];\r\n\r\n //find old tests that appear in new tests already and add them (they have selected value already)\r\n findOldTestsThatAppearInNewTests(updatedTests, savedTests, newTests);\r\n\r\n //find new tests that don't appear in old tests\r\n findNewTestsThankDontAppearInOldTests(updatedTests, savedTests, newTests);\r\n\r\n //choose variations\r\n updatedTests = chooseVariations(updatedTests);\r\n\r\n return updatedTests;\r\n};\r\n\r\n/**\r\n * client side tests init\r\n */\r\nconst initClientSideTests = () => {\r\n\r\n // get test data printed as JSON in HTML\r\n const newClientSideTests = getTestsFromHTML(false);\r\n\r\n // try to get value from storage\r\n let savedClientSideTests: IABTest[] = [];\r\n let savedClientSideTestsStr = getLocalStorageItem(CLIENT_SIDE_LOCAL_STORAGE_NAME) as string;\r\n\r\n try{\r\n savedClientSideTests = JSON.parse(savedClientSideTestsStr);\r\n\r\n /*\r\n if(typeof savedClientSideTests === 'string'){\r\n savedClientSideTests = JSON.parse(savedClientSideTests);\r\n }*/\r\n }\r\n catch(ex){\r\n savedClientSideTests = [];\r\n }\r\n\r\n // merge client side tests and get updated tests\r\n const clientSideTests = mergeTests(savedClientSideTests, newClientSideTests);\r\n\r\n setLocalStorageItem(CLIENT_SIDE_LOCAL_STORAGE_NAME, clientSideTests);\r\n\r\n return clientSideTests;\r\n};\r\n\r\n/**\r\n * server side tests init\r\n */\r\nconst initServerSideTests = () => {\r\n\r\n // try to get value from cookies\r\n let serverSideTestsStr = getCookie(SERVER_SIDE_COOKIE_NAME);\r\n let serverSideTests: IABTest[] = [];\r\n\r\n if(!serverSideTestsStr) return [];\r\n\r\n try{\r\n serverSideTests = JSON.parse(serverSideTestsStr) as IABTest[];\r\n }\r\n catch(ex){\r\n serverSideTests = [];\r\n }\r\n\r\n return serverSideTests;\r\n};\r\n\r\n/**\r\n * init A/B test system\r\n */\r\nexport const initABTestSystem = () : IABTestSystem => {\r\n\r\n // change tests since the last time\r\n let clientSideTests: IABTest[] = [];\r\n let serverSideTests: IABTest[] = [];\r\n\r\n // try to get client side tests from url;\r\n // used for debug;\r\n const urlTests = getClientSideTestsFromURL();\r\n\r\n if(!urlTests || urlTests.length <= 0){\r\n\r\n clientSideTests = initClientSideTests();\r\n serverSideTests = initServerSideTests();\r\n }\r\n\r\n return {\r\n clientSideTests,\r\n serverSideTests,\r\n urlTests,\r\n }\r\n};\r\n\r\n/**\r\n * get test by test name\r\n */\r\nexport const getABTest = (testName: string) => {\r\n\r\n if(!window.abtests){\r\n window.abtests = initABTestSystem() as IABTestSystem;\r\n }\r\n\r\n if(!window.abtests) return null;\r\n\r\n const urlTest = window.abtests.urlTests.find((test: IABTest) => test.codeName.toLowerCase().trim() === testName.toLowerCase().trim());\r\n\r\n if(urlTest && urlTest.isActive) return urlTest;\r\n\r\n const clientSideTest = window.abtests.clientSideTests.find((test: IABTest) => test.codeName.toLowerCase().trim() === testName.toLowerCase().trim());\r\n\r\n if(clientSideTest && clientSideTest.isActive) return clientSideTest;\r\n\r\n const serverSideTest = window.abtests.serverSideTests.find((test: IABTest) => test.codeName.toLowerCase().trim() === testName.toLowerCase().trim());\r\n\r\n if(serverSideTest && serverSideTest.isActive && serverSideTest.started) return serverSideTest;\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * send data to google analytics\r\n */\r\nexport const sendABTestAnalytics = (_test: IABTest, selected = '') => {\r\n\r\n if (!_test || !window.dataLayer) return;\r\n\r\n const test = {..._test};\r\n\r\n if(selected !== ''){\r\n test.selected = selected;\r\n }\r\n\r\n // send data to google analytics\r\n window.dataLayer.push({\r\n 'testName': test.codeName\r\n , 'testVariation': test.selected\r\n , 'testSlot': test.slot\r\n , 'event': 'user entered test'\r\n });\r\n\r\n // some tests have master slot ID not equal to 0\r\n const masterSlotID = Number(test.masterSlotID) || 0;\r\n\r\n if (masterSlotID === 0 || !window.abtests || !window.abtests.clientSideTests) return;\r\n\r\n // find all tests with masterSlotID property equal to the given master\r\n const found = window.abtests.clientSideTests.filter((item: IABTest) => {\r\n const slot = Number(item.slot) || 0;\r\n return masterSlotID === slot;\r\n });\r\n\r\n if (!found || found.length <= 0) return;\r\n\r\n // we suppose that there is only one master with the given slot number\r\n const master = found[0];\r\n\r\n // check if master and test have the same variants\r\n const theSameVariantValues = compareTestsVariants(test, master);\r\n\r\n if(!theSameVariantValues) return;\r\n\r\n //send master data to GA\r\n window.dataLayer.push({\r\n 'testName': master.codeName\r\n ,'testVariation': master.selected\r\n ,'testSlot': master.slot\r\n ,'event': 'user entered test'\r\n });\r\n};","import { createSlice, configureStore } from '@reduxjs/toolkit';\r\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\nimport {IIndexable} from \"../../../domain/interfaces\";\r\nimport {getJSONFromHtml} from \"../../../domain/common\";\r\nimport {\r\n abtest_SBSPage25Variants,\r\n SbsActiveTier,\r\n SoftwareCodeAlert,\r\n SoftwareCodesReponse,\r\n SubscriptionPlanModel,\r\n SubscriptionsVM\r\n} from \"../interfaces\";\r\nimport { PluginSortStatusEnum} from \"../enums\";\r\nimport {getABTest_SBSPage25} from \"./data-service\";\r\n\r\nconst _subscriptionsPageData = (getJSONFromHtml(document.getElementById('subscriptions-data')) as SubscriptionsVM);\r\nconst _imgCdnDomain = (document.getElementById('img-cdn-domain')?.textContent || '')?.trim().toLowerCase();\r\nconst _softwareCodesAlerts = (getJSONFromHtml(document.getElementById('software-codes-alerts-data')) as SoftwareCodeAlert[]);\r\n\r\n/**\r\n * Json data on shared layout\r\n * In use for querystrings (plugins=STAS_ , plugins=COMM_ , plugins=STAS_COMM_ ) logic.\r\n * SP parse these querystrings to a key, the key is the itemOrder of each SbsActiveTier.\r\n *\r\n * More info in Jira\r\n * */\r\nconst _sbsActiveTiers = (getJSONFromHtml(document.getElementById('sbs-active-tiers')) as SbsActiveTier[]);\r\n/**\r\n * Json data from template's code mirror\r\n * This is the start of the sbs alert sentence\r\n * The PageData.sbsIncludedIn is the value for SbsActiveTier.itemOrder (the rest of the alert sentence)\r\n *\r\n * More info in Jira\r\n * */\r\n//not in use!\r\n//const _softwareCodesAlertSentence = (document.getElementById('software-codes-alert-sentence')?.textContent || '')?.trim();\r\n\r\n/**\r\n* In use for querystrings (plugins=STAS_ , plugins=COMM_ , plugins=STAS_COMM_ ) logic\r\n * Or for querystrings (skus=75, skus=75_819_ ) logic\r\n* SP parse these querystrings to this value ()\r\n * This value is itemOrder from sbs-active-tiers json data from shared layout.\r\n * More info in Jira\r\n* */\r\nconst _softwareCodesReponse = (getJSONFromHtml(document.getElementById('software-codes-reponse-data')) as SoftwareCodesReponse);\r\n//_softwareCodesReponse.thumb = 'https://media.wavescdn.com/images/products/plugins/600/waves-stream.png';\r\n//console.log('_softwareCodesReponse: ',_softwareCodesReponse);\r\n\r\n\r\n/**\r\n *\r\n * ShowPluginImageSortIncludesID : plugin identifier (by SortIncludesID) in order to show plugin view ( after clicking the eye icon)\r\n * When ShowPluginImageSortIncludesID > 0 --> show the plugin view popup for the specific plugin\r\n * When ShowPluginImageSortIncludesID <= 0 --> hide plugin view\r\n *\r\n * PluginViewPosition : the position (CSS) for positioning the plugin view after eye icon click (speech bubble popup)\r\n *\r\n * PlanOnMobilePluginsPopup : on mobile, the plugins popup shows data on the clicked plan, PlanOnMobilePluginsPopup is the clicked plan\r\n *\r\n * */\r\nexport interface StateInterface extends IIndexable{\r\n abtest_SBSPage25: abtest_SBSPage25Variants;\r\n PageData: SubscriptionsVM;\r\n SearchFilterKey: string;\r\n ImgCdnDomain: string;\r\n PluginSortStatus: number;\r\n ShowSortChoices:boolean;\r\n ShowPluginImageSortIncludesID: -1;\r\n PluginViewPosition:any;\r\n IsAnnual:boolean;\r\n IsPriceDifferent:boolean;\r\n abtest_IsOldVariant:boolean;\r\n PlanOnMobilePluginsPopup:SubscriptionPlanModel | null;\r\n SoftwareCodesAlerts:SoftwareCodeAlert[];\r\n SbsActiveTiers:SbsActiveTier[];\r\n QueryStringsReponse:SoftwareCodesReponse;\r\n IsTwoMonthFreePopupShown: boolean;\r\n PlanSavePopupShown: number | null;\r\n PlanCostPopupShown: number | null;\r\n MainBannerStyle: string\r\n}\r\nconst _abtest_SBSPage25 = getABTest_SBSPage25();\r\n// initial state\r\nconst initialState: StateInterface = {\r\n abtest_SBSPage25: _abtest_SBSPage25,\r\n PageData:_subscriptionsPageData,\r\n SearchFilterKey:\"\",\r\n ImgCdnDomain:_imgCdnDomain,\r\n PluginSortStatus:PluginSortStatusEnum.Popular as number,\r\n ShowSortChoices:false,\r\n ShowPluginImageSortIncludesID: -1,\r\n PluginViewPosition:null,\r\n IsAnnual:true,\r\n IsPriceDifferent:_subscriptionsPageData?.subscriptionPlans?.some(s=>s.isPriceDifferent === true),\r\n abtest_IsOldVariant:_abtest_SBSPage25 === abtest_SBSPage25Variants.oldY,\r\n PlanOnMobilePluginsPopup:null,\r\n SoftwareCodesAlerts:_softwareCodesAlerts,\r\n SbsActiveTiers:_sbsActiveTiers,\r\n QueryStringsReponse:_softwareCodesReponse,\r\n AnnualPriceDisplayType:\"\",\r\n IsTwoMonthFreePopupShown: false,\r\n PlanSavePopupShown: null,\r\n PlanCostPopupShown: null,\r\n MainBannerStyle: 'new' /*new | old*/\r\n}\r\n// the main slice\r\nconst rootSlice = createSlice({\r\n name: 'root',\r\n initialState,\r\n reducers: {\r\n main(state, action) {\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n },\r\n },\r\n});\r\n\r\nconst store = configureStore({\r\n reducer: rootSlice.reducer,\r\n});\r\n\r\nexport const rootActions = rootSlice.actions;\r\nexport default store;\r\n\r\n/**\r\n * Infer the `RootState` and `AppDispatch` types from the store itself\r\n * https://redux.js.org/recipes/usage-with-typescript\r\n */\r\nexport type RootState = ReturnType;\r\nexport type AppDispatch = typeof store.dispatch;\r\n\r\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\r\n// https://redux.js.org/recipes/usage-with-typescript\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\r\n\r\n","import {getABTest} from \"../../../domain/abtest/abtest-provider\";\r\nimport {abtest_SBSPage25Variants} from \"../interfaces\";\r\n\r\n\r\n/*\r\nexport const searchServer = async (query: string | null, smartSearchFilter:number, currentPage:number) => {\r\n return get('/api/sitesearch/search?query=' + query + \"&smartSearchFilter=\" + smartSearchFilter + \"¤tPage=\" + currentPage + \"&itemsPerPage=\" + ItemsPerPage);\r\n};\r\n\r\n*/\r\n\r\n\r\nexport const getABTest_SBSPage25 = () : abtest_SBSPage25Variants => {\r\n \r\n\r\n const abtest_SBSPage25 = getABTest('SBSSideBySide');\r\n const abtest_SBSPage25_Enabled = !!abtest_SBSPage25 && abtest_SBSPage25.isActive;\r\n let abtestVariant: abtest_SBSPage25Variants =abtest_SBSPage25Variants.oldY;\r\n if(abtest_SBSPage25_Enabled) {\r\n switch (abtest_SBSPage25.selected) {\r\n case 'four_side_by_side' : {\r\n abtestVariant = abtest_SBSPage25Variants.sideBySide;\r\n break;\r\n }\r\n case 'old_y' : {\r\n abtestVariant = abtest_SBSPage25Variants.oldY;\r\n break;\r\n }\r\n case 'ultimate_only' : {\r\n abtestVariant = abtest_SBSPage25Variants.ultimateOnly;\r\n break;\r\n }\r\n default : {\r\n abtestVariant = abtest_SBSPage25Variants.oldY;\r\n }\r\n }\r\n // sendABTestAnalytics(abtest_SBSPage25);\r\n }\r\n\r\n return abtestVariant;\r\n\r\n};\r\n","import React from 'react';\r\nimport {IIconProps} from \"../../../ui/svg/interfaces\";\r\n\r\nconst SbsCheckIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default SbsCheckIcon;","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst CloseIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n Close\r\n \r\n \r\n )\r\n};\r\n\r\nexport default CloseIcon;\r\n","import 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};","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","/**\r\n * get boolean value from the hidden div\r\n */\r\nexport const getHiddenDataBoolean = (id: string) => {\r\n const $el = document.getElementById(id);\r\n if(!$el) return false;\r\n\r\n return $el.innerText.trim().toLowerCase() === 'true';\r\n};\r\n\r\n/**\r\n * get string value from the hidden div\r\n */\r\nexport const getHiddenDataString = (id: string) => {\r\n const $el = document.getElementById(id);\r\n if(!$el || !$el.innerText) return '';\r\n\r\n return $el.innerText.trim();\r\n};\r\n\r\n/**\r\n * get numeric value from the hidden div\r\n */\r\nexport const getHiddenDataNumber = (id: string) => {\r\n const $el = document.getElementById(id);\r\n if(!$el || !$el.innerText) return 0;\r\n\r\n return Number($el.innerText.trim()) || 0;\r\n};\r\n\r\n\r\n/**\r\n * is user authenticated\r\n */\r\nexport const getIsAuthenticated = () => {\r\n return getHiddenDataBoolean('is-user-authenticated');\r\n};\r\n\r\n/**\r\n * get waves user email printed in the hidden DIV\r\n */\r\nexport const getWavesUserEmail = () => {\r\n const $el = document.getElementById('waves-user-email');\r\n if(!$el || !$el.textContent) return '';\r\n return $el.textContent.trim();\r\n};\r\n\r\n/**\r\n * is china\r\n */\r\nexport const getIsChina = () => {\r\n return getHiddenDataBoolean('is-china');\r\n};\r\n\r\n/**\r\n * is Kentico environment\r\n */\r\nexport const getEnvironment = () => {\r\n return getHiddenDataString('kentico-environment');\r\n};","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 { getCookie, setCookie } from '../../../DAL/storage-provider';\r\nimport { getJSONFromHtml } from '../../../domain/common';\r\nimport { getHiddenDataBoolean, getHiddenDataString } from '../../../domain/hidden-data-provider';\r\nimport { format } from 'date-fns';\r\n\r\nexport const GDRP_COOKIE_NAME = 'gdpr';\r\n\r\nexport interface IGdpr {\r\n IsCountryGDPR: string, // \"y\", \"n\", \"u\"\r\n IsMarketing: boolean,\r\n IsPerformance: boolean,\r\n ItemModifiedWhen: string, // \"2022-07-31T12:57:15.7440792\"\r\n}\r\n\r\n/**\r\n * In case GDPR cookie doesn't exist, we rely on \"IsGDPRDefaultOptOut\" returned from SP.\r\n * If user is opt out ---> both IsMarketing and IsPerformance are false.\r\n * If user is not opt out ---> both IsMarketing and IsPerformance are true.\r\n * https://g6a420.axshare.com/#g=1&p=scripts_per_cookie_flow\r\n */\r\nexport const getGdprDefaultValues = () : IGdpr => {\r\n const isOptOut = isGdprOptOut();\r\n\r\n return {\r\n IsMarketing: !isOptOut,\r\n IsPerformance: !isOptOut,\r\n ItemModifiedWhen: format(new Date(), 'MM/dd/yyyy HH:mm:ss'),\r\n IsCountryGDPR: getHiddenDataString('gdpr-country') || 'u',\r\n } as IGdpr;\r\n};\r\n\r\n/**\r\n * https://wavesaudio.atlassian.net/browse/DSWEB-4442\r\n * https://g6a420.axshare.com/#g=1&p=scripts_per_cookie_flow\r\n */\r\nexport const getGdprCookie = () : IGdpr => {\r\n const cookie = getCookie(GDRP_COOKIE_NAME);\r\n if(!cookie) return getGdprDefaultValues();\r\n\r\n let parsed: IGdpr | null = null;\r\n\r\n try{\r\n parsed = JSON.parse(cookie) as IGdpr;\r\n }\r\n catch(ex){}\r\n\r\n return parsed || getGdprDefaultValues();\r\n};\r\n\r\n\r\nexport const setGDPRCookie = (data: IGdpr) => {\r\n\r\n const expiration = -1;\r\n const secure = false;\r\n const sameSite = undefined;\r\n const preventStringify = false;\r\n const domain = '.waves.com';\r\n\r\n setCookie('gdpr', data, expiration, secure, sameSite, preventStringify, domain);\r\n};\r\n\r\nexport const getGdprCookieFromServer = () : IGdpr => {\r\n return getJSONFromHtml(document.getElementById('cookies-policy-data-json')) as IGdpr;\r\n};\r\n\r\nexport const isGdprOptOut = () : boolean => {\r\n return getHiddenDataBoolean('gdpr-opt-out');\r\n};\r\n\r\n/**\r\n *
You may find this content helpful: To be able to view it, allow Performance Cookies here.
\r\n */\r\nexport const getGdprError = () => {\r\n const $error = document.getElementById('gdpr-error');\r\n return ($error?.textContent || '').trim();\r\n};","import {rootActions} from \"../DAL/store\";\r\nimport {PluginSortStatusEnum} from \"../enums\";\r\nimport {sendGAEvent, sendGAEventAddToCart} from \"../../../domain/marketing/gtm-provider\";\r\nimport {SubscriptionPlanModel} from \"../interfaces\";\r\nimport { outbrainAddToCartEvent } from '../../../domain/marketing/outbrain-provider';\r\n\r\nexport const ToggleShowSortOptions = (ShowSortChoices : boolean,dispatch :any) => {\r\n dispatch(\r\n rootActions.main({\r\n ShowSortChoices:!ShowSortChoices\r\n })\r\n )\r\n}\r\nexport const SortItems = (items : any[],PluginSortStatus : PluginSortStatusEnum) => {\r\n return items.sort((a, b) => {\r\n let value;\r\n if(PluginSortStatus === PluginSortStatusEnum.Popular){\r\n value = (a.sortPopular > b.sortPopular ? 1 : -1);\r\n }else if(PluginSortStatus === PluginSortStatusEnum.IncludedInPlan){\r\n value = (a.sortIncludes > b.sortIncludes ? 1 : -1);\r\n\r\n }else if(PluginSortStatus === PluginSortStatusEnum.ProductNameAZ){\r\n value = (a.documentName.toLowerCase() > b.documentName.toLowerCase() ? 1 : -1);\r\n\r\n }else if(PluginSortStatus === PluginSortStatusEnum.ProductNameZA){\r\n value = (a.documentName.toLowerCase() < b.documentName.toLowerCase() ? 1 : -1);\r\n\r\n }else{\r\n value = -1;\r\n }\r\n return value;\r\n });\r\n}\r\nexport const SetIsAnnual = (isAnnual : boolean, dispatch :any) => {\r\n sendGAEvent('Toggle',isAnnual ? \"Annual\" : \"Monthly\");\r\n dispatch(\r\n rootActions.main({\r\n IsAnnual: isAnnual\r\n })\r\n )\r\n\r\n}\r\nexport const HidePluginView = (dispatch :any) => {\r\n dispatch(\r\n rootActions.main({\r\n ShowPluginImageSortIncludesID : -1\r\n })\r\n )\r\n};\r\nexport const StopPropagation = (event: any) => {\r\n //blocks parent's onclick event ( that with close the plugin's view )\r\n event.stopPropagation();\r\n return false;\r\n}\r\nexport const AddToCart = (plan : SubscriptionPlanModel) => {\r\n\r\n outbrainAddToCartEvent();\r\n\r\n sendGAEventAddToCart(\r\n plan.skuName,\r\n plan.skuNumber,\r\n plan.skU_MSRP,\r\n plan.documentUrlPath,\r\n 'Subscription Add To Cart'\r\n );\r\n\r\n window.location.href = \"/cart?productid=\" + plan.skuid;\r\n\r\n}\r\n/*Get parameter name\r\nReturns the current URL's querystring with out this parameter*/\r\nexport const GetQueryWithNoParams = (paramNames : string[]) => {\r\n let url = new URL(window.location.href);\r\n let params = new URLSearchParams(url.search);\r\n paramNames.forEach(param => {\r\n // Delete the parameter of name paramName.\r\n params.delete(param);\r\n })\r\n return params.toString();\r\n}\r\n\r\n\r\n\r\n","// Outbrain Pixel\r\n// https://wavesaudio.atlassian.net/browse/DSWEB-4134\r\n\r\nimport { getGdprCookie } from '../../projects/gdpr/domain/gdpr-provider';\r\n\r\ndeclare global {\r\n interface Window {\r\n obApi: any;\r\n }\r\n}\r\n\r\nexport const outbrainPurchaseEvent = () => {\r\n if(!window.obApi) return;\r\n\r\n const gdpr = getGdprCookie();\r\n if(!gdpr.IsMarketing) return;\r\n\r\n window.obApi('track', 'Purchase');\r\n console.log('outbrain purchase event');\r\n};\r\n\r\nexport const outbrainAddToCartEvent = () => {\r\n if(!window.obApi) return;\r\n\r\n const gdpr = getGdprCookie();\r\n if(!gdpr.IsMarketing) return;\r\n\r\n window.obApi('track', 'Add to cart');\r\n console.log('outbrain add to cart event');\r\n};\r\n\r\nexport const outbrainRegistrationEvent = () => {\r\n if(!window.obApi) return;\r\n\r\n const gdpr = getGdprCookie();\r\n if(!gdpr.IsMarketing) return;\r\n\r\n window.obApi('track', 'Registration');\r\n console.log('outbrain registration event');\r\n};\r\n\r\nexport const outbrainLead = () => {\r\n if(!window.obApi) return;\r\n window.obApi('track', 'Email sign up');\r\n};","import React from 'react';\r\nimport {IIconProps} from \"../../../ui/svg/interfaces\";\r\n\r\nconst SbsPlansArrowIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n )\r\n};\r\n\r\nexport default SbsPlansArrowIcon;","import { useEffect, useState } from 'react';\r\n\r\ninterface IProductPriceProps {\r\n price: number,\r\n accessible?: boolean,\r\n}\r\n\r\n/**\r\n * Format price.\r\n */\r\nconst ProductPriceFormat = (props: IProductPriceProps) => {\r\n\r\n const [ accessible ] = useState(props.accessible === undefined ? true : props.accessible);\r\n const [ parts, setParts ] = useState([]);\r\n const [ containsDot, setContainsDot ] = useState(false);\r\n const [ cents, seCents ] = useState('');\r\n const isNegative = (props.price || 0) < 0;\r\n\r\n useEffect(() => {\r\n if(props.price === undefined) return;\r\n\r\n const price = Math.abs(props.price);\r\n const parts = Math.abs(props.price).toString().trim().split('.');\r\n const containsDot = parts.length > 1;\r\n const cents = containsDot ? (parts[1].length === 1 ? (parts[1] + '0') : parts[1].substring(0, 2)) : '';\r\n\r\n // add thousands separator -------------------\r\n if(price >= 1000) {\r\n parts[0] = Math.floor(price).toLocaleString();\r\n }\r\n\r\n setParts(parts);\r\n setContainsDot(containsDot);\r\n seCents(cents);\r\n }, [ props.price ]);\r\n\r\n return (\r\n \r\n {/* all */}\r\n { isNegative ? '-' : '' }${ containsDot ? {parts[0]}{cents} : Math.abs(props.price).toLocaleString() }\r\n\r\n {/* accessible */}\r\n { accessible && Price { isNegative ? '-' : '' }${ Math.abs(props.price) } }\r\n \r\n );\r\n};\r\n\r\nexport default ProductPriceFormat;","import React from \"react\";\r\nimport {useAppSelector} from \"../DAL/store\";\r\nimport ProductPriceFormat from \"../../products/product-price/product-price-format\";\r\n\r\ninterface IPriceProps {\r\n plan:any,\r\n isStarter:boolean,\r\n isAnnual?:boolean,\r\n isPopup?:boolean\r\n}\r\n\r\nexport const Price = (props: IPriceProps) => {\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const abtest_IsOldVariant = useAppSelector((store) => store.abtest_IsOldVariant);\r\n let IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n if(props.isAnnual !== undefined){\r\n IsAnnual = props.isAnnual;\r\n }\r\n const tierEndsWith = props.isStarter ? \"low\":\"high\";\r\n\r\n const annualPlan = PageData.subscriptionPlans.filter(plan => {\r\n //if isStarter --> get annual starter plan ELSE get PremiumPlan annual plan\r\n return plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(tierEndsWith);\r\n })[0];\r\n\r\n return (\r\n <>\r\n {\r\n !IsAnnual &&\r\n / {IsAnnual ? \"year\":\"month\"}\r\n }\r\n\r\n {\r\n IsAnnual &&\r\n
\r\n
\r\n {/*annualPlan.skU_MSRP + 0.01 --> round the price up */}\r\n {/* / month*/}\r\n\r\n
/ month
\r\n\r\n {abtest_IsOldVariant &&
\r\n\r\n Annual Subscription billed upfront\r\n\r\n
}\r\n {!abtest_IsOldVariant &&
\r\n\r\n billed upfront\r\n\r\n
}\r\n
\r\n\r\n
\r\n }\r\n \r\n )\r\n};","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst InfoIcon = (props: IIconProps) => {\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport default InfoIcon;","export enum TaxIdStatusEnum {\r\n NONE = 0,\r\n YES = 1,\r\n NO = 2,\r\n}","import { createSlice } from '@reduxjs/toolkit';\r\nimport { getQueryString } from '../../../../domain/url-provider';\r\nimport { getJSONFromHtml } from '../../../../domain/common';\r\nimport { SerializedClientProduct } from '../../my-products/interfaces';\r\nimport { ICountry } from '../../../../domain/addresses/interfaces';\r\nimport { getCountriesAndStates, getCountryById, getStateById } from '../../../../domain/addresses/addresses-provider';\r\nimport { IFormControl } from '../../../../ui/forms/interfaces';\r\nimport { createControl } from '../../../../domain/validation/validation';\r\nimport { default as cloneDeep } from 'lodash/cloneDeep';\r\nimport {\r\n isBillingStateRequired,\r\n getTaxIdMaxLength,\r\n getTaxIdMinLength,\r\n isTaxIdRequired, isTaxIdSelectedStatusRequired\r\n} from '../domain/validation-helpers';\r\nimport { TaxIdStatusEnum } from '../../../shopping-cart/cart-bridger-pay/enums/tax-id-status-enum';\r\n\r\ninterface IState{\r\n orderID: number;\r\n subscription: SerializedClientProduct|null;\r\n countries: ICountry[];\r\n addressLine1Control: IFormControl;\r\n addressLine2Control: IFormControl;\r\n countryIdControl: IFormControl;\r\n stateIdControl: IFormControl;\r\n cityControl: IFormControl;\r\n zipCodeControl: IFormControl;\r\n serverError: string;\r\n isOk: boolean;\r\n\r\n // tax id ------------------\r\n taxIdPopupShown: boolean,\r\n taxIdControl: IFormControl,\r\n taxIdSelectedStatusControl: IFormControl,\r\n}\r\n\r\n// https://dev13.waves.com/account/update-subscription-billing-address?orderid=8383\r\nconst data = getJSONFromHtml(document.getElementById('subscription-data'));\r\nconst subscription = (data?.subscription as SerializedClientProduct) ?? null;\r\n\r\nconst countries = getCountriesAndStates();\r\nconst country = getCountryById(countries, subscription?.cmsCountryID ?? 0);\r\nconst state = getStateById(country, subscription?.cmsStateID ?? 0);\r\n\r\n/**\r\n * initial state\r\n */\r\nconst initialState: IState = {\r\n orderID: Number(getQueryString()['orderid']) || 0,\r\n subscription,\r\n countries,\r\n serverError: '',\r\n isOk: false,\r\n\r\n addressLine1Control: createControl('addressLine1Control', subscription?.billingAddress || '', {\r\n required: true,\r\n maxlength: 100,\r\n }),\r\n addressLine2Control: createControl('addressLine2Control', subscription?.billingAddress2 || '', {\r\n maxlength: 100,\r\n }),\r\n\r\n countryIdControl: createControl(\r\n 'countryIdControl',\r\n Number(country?.countryID) || 0,\r\n {\r\n required: true,\r\n }\r\n ),\r\n\r\n stateIdControl: createControl(\r\n 'stateIdControl',\r\n Number(state?.stateID) || 0,\r\n {\r\n /**\r\n * the state is required when selected country has states\r\n * @return {boolean} - is valid\r\n */\r\n required: (control) => {\r\n return isBillingStateRequired(control);\r\n }\r\n }\r\n ),\r\n\r\n cityControl: createControl('cityControl', subscription?.billingCity || '', {\r\n required: true,\r\n maxlength: 100,\r\n }),\r\n zipCodeControl: createControl('zipCodeControl', subscription?.billingZipCode || '', {\r\n maxlength: 10,\r\n }),\r\n\r\n taxIdPopupShown: false,\r\n\r\n taxIdControl: createControl(\r\n 'taxIdControl',\r\n subscription?.taxID || '',\r\n {\r\n /**\r\n * the 'taxIdSelectedStatusControl' is required when selected country has property isTaxID === true\r\n * @return {boolean} - is valid\r\n */\r\n required: (control) => {\r\n return isTaxIdRequired(control);\r\n },\r\n\r\n minlength: () => {\r\n return getTaxIdMinLength();\r\n },\r\n\r\n maxlength: () => {\r\n return getTaxIdMaxLength();\r\n },\r\n }\r\n ),\r\n\r\n /**\r\n * Tax id is passed to the server in any case, but it's optional for all countries except a country with\r\n * CMS_Country.IsTaxID = 1 (like Australia, New Zealand, etc.)\r\n * taxIdSelectedStatusControl represents tax id radio buttons (yes / no . undefined).\r\n */\r\n taxIdSelectedStatusControl: createControl(\r\n 'taxIdSelectedStatus',\r\n subscription?.taxIDSelectedStatus ?? TaxIdStatusEnum.NO,\r\n {\r\n /**\r\n * the 'taxIdSelectedStatusControl' is required when selected country has property isTaxID === true\r\n * @return {boolean} - is valid\r\n */\r\n required: (control) => {\r\n return isTaxIdSelectedStatusRequired(control);\r\n }\r\n }\r\n ),\r\n};\r\n\r\nconst rootSlice = createSlice({\r\n name: 'root',\r\n initialState,\r\n reducers: {\r\n\r\n main(state, action) {\r\n return {\r\n ...state,\r\n ...action.payload,\r\n }\r\n },\r\n\r\n setControl(state, action) {\r\n\r\n const copy = cloneDeep(action.payload.control);\r\n\r\n return {\r\n ...state,\r\n [action.payload.controlName]: copy,\r\n };\r\n },\r\n }\r\n});\r\n\r\nexport default rootSlice;","import { getJSONFromHtml } from '../common';\r\nimport { ICountry, ICountryState } from './interfaces';\r\n\r\nexport const USA_ID = 271;\r\nexport const CANADA_ID = 309;\r\n\r\n/**\r\n * get countries / states data\r\n */\r\nexport const getCountriesAndStates = () => {\r\n const data = getJSONFromHtml(document.getElementById('countries-and-states-data'));\r\n if(!data || !data.countries) return [];\r\n\r\n const countriesMap = new Map();\r\n data.countries.forEach((country: ICountry) => {\r\n country.states = country.states || [];\r\n countriesMap.set(country.countryID, country)\r\n });\r\n\r\n // add states to countries\r\n if(data.states){\r\n for(let i=0; i {\r\n return countries.find((country: ICountry) => country.countryThreeLetterCode.toString() === countryCode.toString());\r\n};\r\n\r\nexport const getCountryByCode2 = (countries: ICountry[], countryCode: string) : ICountry|undefined => {\r\n return countries.find((country: ICountry) => country.country2Digit.toString() === countryCode.toString());\r\n};\r\n\r\nexport const getCountryById = (countries: ICountry[], countryId: number) : ICountry|undefined => {\r\n return countries.find((country: ICountry) => country.countryID.toString() === countryId.toString());\r\n};\r\n\r\nexport const getStateByCode = (country: ICountry|undefined, stateCode: string) => {\r\n return country?.states.find((state: ICountryState) => state.state2Digit.toString() === stateCode.toString());\r\n};\r\n\r\nexport const getStateById = (country: ICountry|undefined, stateId: number) => {\r\n return country?.states.find((state: ICountryState) => state.stateID.toString() === stateId.toString());\r\n};","import { IFormControl } from '../../../../ui/forms/interfaces';\r\nimport store, { rootActions } from '../data/store';\r\nimport { scrollToFirstErrorControl, validateControl, validateForm } from '../../../../domain/validation/validation';\r\nimport { Dispatch } from 'react';\r\n\r\n/**\r\n * the state is required when selected country has states\r\n */\r\nexport const isBillingStateRequired = (control?: IFormControl) => {\r\n const reduxStore = store.getState();\r\n if(!reduxStore || !reduxStore.root || !reduxStore.root.subscription) return true;\r\n\r\n const countries = reduxStore.root.countries;\r\n if(!countries) return true;\r\n\r\n const selectedCountryId = Number(reduxStore.root.countryIdControl.value) || 0;\r\n if(!selectedCountryId) return true;\r\n\r\n const selectedCountry = countries.find(country => country.countryID.toString() === selectedCountryId.toString());\r\n const countryHasStates = selectedCountry && selectedCountry.states && selectedCountry.states.length > 0;\r\n if(!countryHasStates) return true;\r\n\r\n const controlStateId = Number(control?.value) || 0;\r\n\r\n return countryHasStates && !!controlStateId;\r\n};\r\n\r\n\r\nexport const validateBillingAddress = (billingFormFields: [IFormControl, string][], dispatch: Function) => {\r\n\r\n const billingAddressDispatch = (updatedControl: IFormControl, controlName: string) => {\r\n dispatch(\r\n rootActions.setControl({\r\n controlName,\r\n control: validateControl(updatedControl),\r\n })\r\n );\r\n };\r\n\r\n const formParams = billingFormFields.map(param => [\r\n param[0],\r\n (updatedControl: IFormControl) => billingAddressDispatch(updatedControl, param[1])\r\n ]) as ([IFormControl, Dispatch])[];\r\n\r\n const billingAddressErrorControls: IFormControl[] = [];\r\n const isBillingFormValidValid = validateForm(formParams, billingAddressErrorControls);\r\n\r\n if(!isBillingFormValidValid){\r\n scrollToFirstErrorControl(billingAddressErrorControls);\r\n }\r\n\r\n return isBillingFormValidValid;\r\n};\r\n\r\n\r\nexport const getTaxIdMaxLength = () : number => {\r\n const reduxStore = store.getState();\r\n if(!reduxStore || !reduxStore.root) return Infinity;\r\n\r\n const countries = reduxStore.root.countries;\r\n if(!countries) return Infinity;\r\n\r\n const selectedCountryId = Number(reduxStore.root.countryIdControl.value) || 0;\r\n if(!selectedCountryId) return Infinity;\r\n\r\n const selectedCountry = countries.find(country => country.countryID.toString() === selectedCountryId.toString());\r\n const taxIdRequired = selectedCountry && selectedCountry.isTaxID;\r\n if(!taxIdRequired) return Infinity;\r\n\r\n const max = Number(selectedCountry.taxIDMaxLength) || 0;\r\n if(max <= 0) return Infinity;\r\n\r\n return max;\r\n};\r\n\r\n\r\nexport const getTaxIdMinLength = () : number => {\r\n const reduxStore = store.getState();\r\n if(!reduxStore || !reduxStore.root) return 0;\r\n\r\n const countries = reduxStore.root.countries;\r\n if(!countries) return 0;\r\n\r\n const selectedCountryId = Number(reduxStore.root.countryIdControl.value) || 0;\r\n if(!selectedCountryId) return 0;\r\n\r\n const selectedCountry = countries.find(country => country.countryID.toString() === selectedCountryId.toString());\r\n const taxIdRequired = selectedCountry && selectedCountry.isTaxID;\r\n if(!taxIdRequired) return 0;\r\n\r\n const min = Number(selectedCountry.taxIDMinLength) || 0;\r\n if(min <= 0) return 0;\r\n\r\n return min;\r\n};\r\n\r\n\r\nexport const isTaxIdRequired = (control?: IFormControl) => {\r\n const reduxStore = store.getState();\r\n if(!reduxStore || !reduxStore.root) return true;\r\n\r\n const value = control?.value || '';\r\n return !!value;\r\n //return reduxStore.root.taxIdSelectedStatusControl.value !== TaxIdStatusEnum.YES;\r\n /*\r\n const countries = reduxStore.root.countries;\r\n if(!countries) return true;\r\n\r\n const selectedCountryId = Number(reduxStore.root.countryIdControl.value) || 0;\r\n if(!selectedCountryId) return true;\r\n\r\n const selectedCountry = countries.find(country => country.countryID.toString() === selectedCountryId.toString());\r\n const taxIdRequired = selectedCountry && selectedCountry.isTaxID;\r\n if(!taxIdRequired) return true;\r\n\r\n const value = control?.value || '';\r\n return !!value;\r\n */\r\n};\r\n\r\n\r\nexport const isTaxIdSelectedStatusRequired = (control?: IFormControl) => {\r\n const reduxStore = store.getState();\r\n if(!reduxStore || !reduxStore.root) return true;\r\n\r\n const countries = reduxStore.root.countries;\r\n if(!countries) return true;\r\n\r\n const selectedCountryId = Number(reduxStore.root.countryIdControl.value) || 0;\r\n if(!selectedCountryId) return true;\r\n\r\n const selectedCountry = countries.find(country => country.countryID.toString() === selectedCountryId.toString());\r\n const taxIdRequired = selectedCountry && selectedCountry.isTaxID;\r\n if(!taxIdRequired) return true;\r\n\r\n const taxIdSelectedStatus = Number(control?.value) || 0;\r\n return taxIdRequired && !!taxIdSelectedStatus;\r\n};\r\n\r\n\r\n\r\n","import { combineReducers, configureStore } from '@reduxjs/toolkit';\r\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\nimport rootSlice from './root-slice';\r\n\r\nconst reducer = combineReducers({\r\n root: rootSlice.reducer,\r\n});\r\n\r\nconst store = configureStore({\r\n reducer,\r\n\r\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({\r\n serializableCheck: false\r\n }),\r\n})\r\n\r\nexport const rootActions = rootSlice.actions;\r\nexport default store;\r\n\r\n/**\r\n * Infer the `RootState` and `AppDispatch` types from the store itself\r\n * https://redux.js.org/recipes/usage-with-typescript\r\n */\r\nexport type RootState = ReturnType;\r\nexport type AppDispatch = typeof store.dispatch;\r\n\r\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\r\n// https://redux.js.org/recipes/usage-with-typescript\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\r\n","import InfoIcon from '../../../../ui/svg/common/info';\r\nimport React from 'react';\r\nimport {useAppSelector} from '../../DAL/store';\r\nimport {rootActions, useAppDispatch} from '../../../account/change-sbs-billing-info/data/store';\r\nimport {sendGAEvent} from '../../../../domain/marketing/gtm-provider';\r\nimport { SubscriptionPlanModel} from \"../../interfaces\";\r\nimport ProductPriceFormat from \"../../../products/product-price/product-price-format\";\r\n\r\ninterface ITwoMonthFreeProps {\r\n PlanAnnual: SubscriptionPlanModel,\r\n PlanMonthly: SubscriptionPlanModel\r\n}\r\nconst TwoMonthFree = (props: ITwoMonthFreeProps) => {\r\n const dispatch = useAppDispatch();\r\n const IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n //const abtest_SBSPage25 = useAppSelector((store) => store.abtest_SBSPage25);\r\n const abtest_IsOldVariant = useAppSelector((store) => store.abtest_IsOldVariant);\r\n\r\n const PlanSave = Number(((props.PlanMonthly.skU_MSRP * 12) - props.PlanAnnual.skU_MSRP).toFixed(2));\r\n //console.log('TwoMonthFree PlanSave: ',PlanSave);\r\n\r\n const openPopup = () => {\r\n dispatch(\r\n rootActions.main({\r\n IsTwoMonthFreePopupShown: true,\r\n PlanSavePopupShown: PlanSave,\r\n PlanCostPopupShown: props.PlanAnnual.skU_MSRP\r\n })\r\n );\r\n\r\n sendGAEvent('Click','You’re save 2 months free');\r\n };\r\n\r\n const goToAnnual = () => {\r\n dispatch(\r\n rootActions.main({\r\n IsAnnual: true,\r\n })\r\n );\r\n\r\n sendGAEvent('Click','Pay annually & save 2 months');\r\n };\r\n\r\n return (\r\n
\r\n {/*
*/}\r\n {abtest_IsOldVariant &&\r\n
}\r\n\r\n {\r\n IsAnnual && abtest_IsOldVariant &&\r\n
\r\n You save \r\n a year\r\n\r\n
\r\n }\r\n\r\n {\r\n !IsAnnual && abtest_IsOldVariant &&\r\n
\r\n \r\n Pay annually\r\n \r\n & \r\n {/*save
*/}\r\n save
\r\n }\r\n \r\n )\r\n};\r\n\r\nexport default TwoMonthFree;","import { sendGAEvent } from '../../domain/marketing/gtm-provider';\r\n\r\n/* ----- To Compile ------\r\nlist-page-min.js\r\nproduct-page-min.js\r\nsubscriptions-min.js\r\ndaily-deals-min.js\r\nwish-list-min.js\r\nwaves-min.js\r\ncompare-bundles-min.js\r\ncart-min.js\r\nolp-preset-min.js\r\nrecently-viewed-products-min.js\r\n */\r\nexport interface IStarRatingProps {\r\n rating: number,\r\n reviews: number,\r\n url?: string,\r\n urlHashHide?: boolean,\r\n urlHash?: string,\r\n gaEventName?: string,\r\n gaEventValue?: string,\r\n className?: string,\r\n colorClass?: string,\r\n clickByAttribute?: string,\r\n}\r\n\r\n/**\r\n * Star rating.\r\n */\r\nconst StarRating = (props: IStarRatingProps) => {\r\n\r\n const int_part = Math.trunc(props.rating);\r\n const float_part = Number((props.rating-int_part).toFixed(2));\r\n //console.log('StarRating: ',props);\r\n //fix float star:\r\n // 0... -0.11 - width+ 6 <<<<\r\n // 0.11-0.25 - width+ 7\r\n // 0.26-0.35 - width+ 8\r\n // 0.36-0.45 - width+ 9\r\n // 0.46-0.55 - width+ 10\r\n // 0.56-0.65 - width+ 11\r\n // 0.66-0.75 - width+ 12\r\n // 0.76-0.85 - width+ 13\r\n // 0.86-0.95 - width+ 14\r\n // 0.86-1 - width+ 20 <<<<\r\n var fixed_float_part = 0;\r\n if(float_part > 0){\r\n switch (true) {\r\n case (float_part < 0.11):\r\n fixed_float_part = 6;\r\n break;\r\n case (float_part < 0.25):\r\n fixed_float_part = 7;\r\n break;\r\n case (float_part < 0.35):\r\n fixed_float_part = 8;\r\n break;\r\n case (float_part < 0.45):\r\n fixed_float_part = 9;\r\n break;\r\n case (float_part < 0.55):\r\n fixed_float_part = 10;\r\n break;\r\n case (float_part < 0.65):\r\n fixed_float_part = 11;\r\n break;\r\n case (float_part < 0.75):\r\n fixed_float_part =12;\r\n break;\r\n case (float_part < 0.85):\r\n fixed_float_part = 13;\r\n break;\r\n case (float_part < 0.95):\r\n fixed_float_part = 14;\r\n break;\r\n case (float_part < 1):\r\n fixed_float_part = 20;\r\n break;\r\n default:\r\n fixed_float_part = 0;\r\n }\r\n }\r\n\r\n const width = int_part * 20 + fixed_float_part;\r\n\r\n /**\r\n * on click -> send GA events\r\n */\r\n const handleClick = () => {\r\n if(props.clickByAttribute) {\r\n const carouselCLick:any = document.querySelectorAll(props.clickByAttribute)\r\n //console.log('handleClick: ',carouselCLick);\r\n if(carouselCLick && carouselCLick[0])\r\n carouselCLick[0].click();\r\n }\r\n sendGAEvent(\r\n props.gaEventName ? props.gaEventName : 'Click',\r\n props.gaEventValue ? props.gaEventValue : 'Reviews');\r\n };\r\n\r\n return (\r\n props.reviews > 0 && props.rating > 0 ? (\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
({ props.reviews })
\r\n \r\n ) :
\r\n )\r\n};\r\n\r\nexport default StarRating;","import React, {useEffect, useRef, useState} from \"react\";\r\nimport {getTimerCounterDataFromHtml} from \"./clock-provider\";\r\n\r\n/**\r\n * Count Down Timer\r\n * https://wavesaudio.atlassian.net/browse/DSWEB-3116\r\n *\r\n * + The countdown timer is calculating the remaining hours, minutes, and seconds from a number of milliseconds (ITimerCountDownProps.expiredWhenNumber).\r\n * + When counter reaches 0, the app clears the div that holds the counter (the text near the timer should disappear --text example \"Sale Ends -\").\r\n */\r\nexport interface ITimerCountDownProps {\r\n expiredWhenNumber: number,\r\n timerType: string,\r\n dataClass?: string,\r\n dataClassEx?: string,\r\n loadDataFromHtml? :string\r\n}\r\n\r\nconst TimerCountDown = (props: ITimerCountDownProps) => {\r\n let timerType: string = props?.timerType;\r\n let dataClass: string = props?.dataClass ?? \"bg-black px-5 py-2 text-white mr-3\";\r\n let dataClassEx: string = props?.dataClassEx ?? \"text-xs\";\r\n let expiredWhenNumber = props.expiredWhenNumber;\r\n\r\n if(props?.loadDataFromHtml && props?.loadDataFromHtml !== '') {\r\n const timerFromHtml = getTimerCounterDataFromHtml(props?.loadDataFromHtml);\r\n if(timerFromHtml){\r\n timerType= timerFromHtml.timerType ?? 'general';\r\n dataClass= timerFromHtml.dataClass ?? \"bg-black px-5 py-2 text-white mr-3\";\r\n dataClassEx= timerFromHtml.dataClassEx ?? \"text-xs\";\r\n expiredWhenNumber= timerFromHtml.expiredWhenNumber;\r\n }\r\n }\r\n\r\n const containerRef = useRef(null);\r\n\r\n const toDate = new Date(expiredWhenNumber);\r\n const localTime = new Date().getTime();\r\n\r\n // get total seconds between the times\r\n const totalSecondsBetween = Math.abs(toDate.getTime() - localTime) / 1000;\r\n\r\n const isExpired = toDate.getTime() < localTime;\r\n\r\n // calculate (and subtract) whole days\r\n const _days = Math.floor(totalSecondsBetween / 86400);\r\n\r\n // calculate (and subtract) whole hours\r\n const _hours = Math.floor((totalSecondsBetween % 86400) / 3600);\r\n\r\n // calculate (and subtract) whole minutes\r\n const _minutes = Math.floor((totalSecondsBetween % 3600) / 60);\r\n\r\n // what's left is seconds\r\n const _seconds = Math.floor(totalSecondsBetween % 60);\r\n\r\n const [days, setDays] = useState(Math.round(_days));\r\n const [hours, setHours] = useState(Math.round(_hours));\r\n const [minutes, setMinutes] = useState(Math.round(_minutes));\r\n const [seconds, setSeconds] = useState(Math.round(_seconds));\r\n\r\n useEffect(() => {\r\n const updateTimer = () => {\r\n const toDate = new Date(expiredWhenNumber);\r\n const localTime = new Date().getTime();\r\n\r\n const totalSecondsBetween = Math.floor((toDate.getTime() - localTime) / 1000);\r\n\r\n if (totalSecondsBetween <= 0) {\r\n // Таймер истек\r\n setDays(0);\r\n setHours(0);\r\n setMinutes(0);\r\n setSeconds(0);\r\n clearInterval(calcCounterInterval);\r\n\r\n if (containerRef.current?.parentElement?.parentElement) {\r\n containerRef.current.parentElement.parentElement.classList.add('hidden');\r\n }\r\n\r\n return;\r\n }\r\n\r\n const _days = Math.floor(totalSecondsBetween / 86400);\r\n const _hours = Math.floor((totalSecondsBetween % 86400) / 3600);\r\n const _minutes = Math.floor((totalSecondsBetween % 3600) / 60);\r\n const _seconds = totalSecondsBetween % 60;\r\n\r\n setDays(_days);\r\n setHours(_hours);\r\n setMinutes(_minutes);\r\n setSeconds(_seconds);\r\n };\r\n\r\n const calcCounterInterval = setInterval(updateTimer, 1000);\r\n\r\n return () => {\r\n clearInterval(calcCounterInterval);\r\n };\r\n }, [expiredWhenNumber]);\r\n\r\n\r\n return (\r\n \r\n {timerType === \"general\" &&\r\n <>\r\n {isExpired || (minutes === 0 && seconds === 0 && hours === 0) ?\r\n <>\r\n :\r\n <>\r\n {(days*24 + hours).toString().length === 1 ? \"0\" + (days*24 + hours).toString() : (days*24 + hours).toString()}\r\n :{minutes.toString().length === 1 ? \"0\" + minutes.toString() : minutes.toString()}\r\n :{seconds.toString().length === 1 ? \"0\" + seconds.toString() : seconds.toString()}\r\n \r\n }\r\n \r\n }\r\n {timerType === \"general-days\" &&\r\n <>\r\n {isExpired || (minutes === 0 && seconds === 0 && hours === 0 && days === 0) ?\r\n <>\r\n :\r\n <>\r\n {days > 0 &&\r\n <>\r\n {days.toString().length === 1 ? days.toString() : days.toString()} {days === 1 ? 'Day' : 'Days'}, \r\n \r\n }\r\n {hours.toString().length === 1 ? \"0\" + hours.toString() : hours.toString()}\r\n :{minutes.toString().length === 1 ? \"0\" + minutes.toString() : minutes.toString()}\r\n :{seconds.toString().length === 1 ? \"0\" + seconds.toString() : seconds.toString()}\r\n \r\n }\r\n \r\n }\r\n {timerType === \"short-days\" &&\r\n <>\r\n {isExpired || (minutes === 0 && seconds === 0 && hours === 0 && days === 0) ?\r\n <>\r\n :\r\n <>\r\n { days > 0 &&\r\n <>\r\n {(days).toString()} {days === 1 ? 'Day' : 'Days'}\r\n \r\n }\r\n { days === 0 &&\r\n <>\r\n Ends Today\r\n \r\n }\r\n\r\n \r\n }\r\n \r\n }\r\n {timerType === \"short-days-left\" &&\r\n <>\r\n {isExpired || (minutes === 0 && seconds === 0 && hours === 0 && days === 0) ?\r\n <>\r\n :\r\n <>\r\n { days > 0 &&\r\n <>\r\n {(days).toString()} {days === 1 ? 'Day' : 'Days'} Left\r\n \r\n }\r\n { days === 0 &&\r\n <>\r\n Ends Today\r\n \r\n }\r\n\r\n \r\n }\r\n \r\n }\r\n {timerType === \"style-days-square\" &&\r\n <>\r\n {isExpired || (minutes === 0 && seconds === 0 && hours === 0 && days === 0) ?\r\n <>\r\n :\r\n
    \r\n
  • \r\n
    \r\n
    {days.toString().length === 1 ? \"0\" + days.toString() : days.toString()}
    \r\n
    days
    \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n
    {hours.toString().length === 1 ? \"0\" + hours.toString() : hours.toString()}
    \r\n
    hours
    \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n
    {minutes.toString().length === 1 ? \"0\" + minutes.toString() : minutes.toString()}
    \r\n
    mins
    \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n
    {seconds.toString().length === 1 ? \"0\" + seconds.toString() : seconds.toString()}
    \r\n
    sec
    \r\n
    \r\n
  • \r\n
\r\n }\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default TimerCountDown;\r\n","// hours in milliseconds: 1000 * 60 * 60\r\nimport {ITimerCountDownProps} from \"./count-down-timer\";\r\n\r\nexport const HOURS_MS = 3600000;\r\n\r\n// minutes in milliseconds: 1000 * 60\r\nexport const MIN_MS = 60000;\r\n\r\n/**\r\n * get server date parameters from hidden fields (in master page)\r\n */\r\nexport const getServerDate = () => {\r\n const day = Number(document.getElementById('current-day')?.innerText) || 1;\r\n const month = Number(document.getElementById('current-month')?.innerText) || 1;\r\n const year = Number(document.getElementById('current-year')?.innerText) || 0;\r\n const hour = Number(document.getElementById('current-hour')?.innerText) || 0;\r\n const minute = Number(document.getElementById('current-minute')?.innerText) || 0;\r\n const sec = Number(document.getElementById('current-sec')?.innerText) || 0;\r\n\r\n return new Date(year, month - 1, day, hour, minute, sec).getTime();\r\n};\r\n\r\n/**\r\n * add 0 to the left of the number (if needed)\r\n */\r\nconst twoDigits = (number: number) => {\r\n let result = parseInt(number + '').toString();\r\n if (result.length < 2) {\r\n result = '0' + result;\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * difference's hour -> string\r\n */\r\nexport const getHours = (difference: number) => {\r\n const hours = difference / HOURS_MS;\r\n return twoDigits(hours);\r\n};\r\n\r\n/**\r\n * difference's minutes -> string\r\n */\r\nexport const getMinutes = (difference: number) => {\r\n const minutes = (difference % HOURS_MS) / MIN_MS;\r\n return twoDigits(minutes);\r\n};\r\n\r\n/**\r\n * difference's seconds -> string\r\n */\r\nexport const getSeconds = (difference: number) => {\r\n const seconds = (difference % HOURS_MS % MIN_MS) / 1000;\r\n return twoDigits(seconds);\r\n};\r\n\r\nexport const getTimerCounterDataFromHtml = (timerId: string) : ITimerCountDownProps| undefined => {\r\n\r\n var sTimer: ITimerCountDownProps |undefined;\r\n const subscriptionTimer_Obj = document.getElementById(timerId);\r\n if(subscriptionTimer_Obj){\r\n\r\n const dataSaleEndDate = subscriptionTimer_Obj.getAttribute(\"data-sale-end-date\");\r\n let countDownTime;\r\n try{\r\n countDownTime= new Date(dataSaleEndDate + ' EST');\r\n //Eastern Standard Time (EST). UTC -5. now 1 hour behind New York\r\n //countDownTime.setHours(countDownTime.getHours() - 1);\r\n }\r\n catch(ex){\r\n console.log('try parse countDownTime(' + dataSaleEndDate + '): ',ex);\r\n }\r\n if(countDownTime) {\r\n sTimer = {\r\n timerType: subscriptionTimer_Obj.getAttribute(\"data-type\") ?? 'general',\r\n dataClass: subscriptionTimer_Obj.getAttribute(\"data-class\") ?? undefined,\r\n dataClassEx: subscriptionTimer_Obj.getAttribute(\"data-class-ex\") ?? undefined,\r\n expiredWhenNumber: countDownTime.getTime()\r\n }\r\n }\r\n }\r\n\r\n return sTimer;\r\n}","import React from \"react\";\r\nimport ProductPriceFormat from \"../../products/product-price/product-price-format\";\r\nimport {useAppSelector} from \"../DAL/store\";\r\nimport TimerCountDown from \"../../../ui/clock/count-down-timer\";\r\n\r\ninterface IPriceProps {\r\n plan:any,\r\n isStarter:boolean,\r\n isAnnual?:boolean,\r\n isPopup?:boolean\r\n}\r\n\r\nexport const PriceDifferent = (props: IPriceProps) => {\r\n let IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n if(props.isAnnual !== undefined){\r\n IsAnnual = props.isAnnual;\r\n }\r\n console.log('PriceDifferent', props);\r\n return (\r\n <>\r\n {\r\n !IsAnnual &&\r\n / month\r\n }\r\n {\r\n IsAnnual &&\r\n
\r\n
\r\n
/ year
\r\n {!props?.isPopup &&\r\n
\r\n
\r\n Limited Time:\r\n \r\n
\r\n
\r\n }\r\n
\r\n
for the first year
\r\n
\r\n
\r\n }\r\n \r\n )\r\n};","import InfoIcon from '../../../../ui/svg/common/info';\r\nimport React from 'react';\r\nimport {useAppSelector} from '../../DAL/store';\r\nimport {rootActions, useAppDispatch} from '../../../account/change-sbs-billing-info/data/store';\r\nimport {sendGAEvent} from '../../../../domain/marketing/gtm-provider';\r\nimport { SubscriptionPlanModel} from \"../../interfaces\";\r\n\r\ninterface ITwoMonthFreeProps {\r\n PlanAnnual: SubscriptionPlanModel,\r\n PlanMonthly: SubscriptionPlanModel\r\n}\r\nconst TwoMonthFreePriceDifferent = (props: ITwoMonthFreeProps) => {\r\n const dispatch = useAppDispatch();\r\n const IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n\r\n const PlanSave = Number(((props.PlanMonthly.skU_MSRP * 12) - props.PlanAnnual.skU_MSRP).toFixed(2));\r\n //console.log('TwoMonthFree PlanSave: ',PlanSave);\r\n\r\n const openPopup = () => {\r\n dispatch(\r\n rootActions.main({\r\n IsTwoMonthFreePopupShown: true,\r\n PlanSavePopupShown: PlanSave,\r\n PlanCostPopupShown: props.PlanAnnual.skU_MSRP\r\n })\r\n );\r\n\r\n sendGAEvent('Click','You’re save 2 months free');\r\n };\r\n\r\n const goToAnnual = () => {\r\n dispatch(\r\n rootActions.main({\r\n IsAnnual: true,\r\n })\r\n );\r\n\r\n sendGAEvent('Click','Pay annually & save 2 months');\r\n };\r\n\r\n return (\r\n
\r\n {\r\n !IsAnnual &&\r\n
\r\n }\r\n\r\n {\r\n IsAnnual &&\r\n <>\r\n }\r\n\r\n {\r\n !IsAnnual &&\r\n
\r\n \r\n Pay annually\r\n \r\n & \r\n save\r\n
\r\n }\r\n
\r\n )\r\n};\r\n\r\nexport default TwoMonthFreePriceDifferent;","import {MouseEvent, useEffect, useRef, useState} from \"react\";\r\n\r\ninterface IToggleStyledProps {\r\n onClick: Function,\r\n width?: number,\r\n height?: number,\r\n handleColor?: string,\r\n text?: string,\r\n textClasses?: string,\r\n textStyles?: any,\r\n padding?: number,\r\n isPositionRight?: boolean,\r\n isToogle?: boolean,\r\n adaText?: string,\r\n}\r\n\r\n/**\r\n * Toggle widget.\r\n */\r\nexport const ToggleStyled = (props: IToggleStyledProps) => {\r\n const padding = props.padding || 2;\r\n const width = props.width || 70;\r\n const height = props.height || 26;\r\n const handleSize = height - padding - padding * 2;\r\n const handleColor = props.handleColor || '#686868';\r\n\r\n const textRef = useRef(null);\r\n const [btnToogle, setBtnToogle] = useState(props?.isToogle);\r\n\r\n useEffect(() => {\r\n const $root = document.querySelector(':root') as HTMLElement;\r\n if(!$root) return;\r\n\r\n const translateXHandle = width - padding * 3 - handleSize;\r\n $root.style.setProperty('--toggle-switch-translatex-handle', `${ translateXHandle }px`);\r\n\r\n if(!textRef || !textRef.current) return;\r\n\r\n const translateXText = -(width - padding * 3 - textRef.current.offsetWidth);\r\n $root.style.setProperty('--toggle-switch-translatex-text', `${ translateXText }px`);\r\n });\r\n\r\n const onClick = (evt: MouseEvent) => {\r\n let _btnToogle = !btnToogle;\r\n props.onClick(_btnToogle);\r\n setBtnToogle(_btnToogle);\r\n };\r\n\r\n // const onKeyUp = (evt: KeyboardEvent) => {\r\n // if(evt.key === 'Enter') {\r\n // evt.preventDefault();\r\n // props.onClick(!props.isChecked);\r\n // }\r\n // };\r\n\r\n let checkedPositionClass = props.isToogle ? 'toggle-switch__checked' : '';\r\n if(props.isPositionRight){\r\n checkedPositionClass = props.isToogle ? '' : 'toggle-switch__checked';\r\n }\r\n\r\n return (\r\n \r\n\r\n \r\n\r\n \r\n {\r\n props.text &&\r\n { props.text }\r\n }\r\n Toggle\r\n \r\n )\r\n};","import {Toggle} from \"../../../ui/toggle/toggle\";\r\nimport React from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../DAL/store\";\r\nimport ArrowIcon from \"../../../ui/svg/common/arrow\";\r\nimport {AddToCart, SetIsAnnual} from \"../services/logic-helper\";\r\nimport {SubscriptionPlanModel} from \"../interfaces\";\r\nimport {sendGAEvent} from \"../../../domain/marketing/gtm-provider\";\r\nimport SbsPlansArrowIcon from \"../icons/sbs-plans-arrow\";\r\nimport {Price} from \"./price\";\r\nimport TwoMonthFree from './two-month-free/two-month-free';\r\nimport StarRating from \"../../../ui/rating/star-rating\";\r\nimport ProductPriceFormat from \"../../products/product-price/product-price-format\";\r\nimport {PriceDifferent} from \"./price-different\";\r\nimport TwoMonthFreePriceDifferent from \"./two-month-free/two-month-free-price-different\";\r\nimport {ToggleStyled} from \"../../../ui/toggle/toggle-styled\";\r\n\r\ninterface IPlansProps {\r\n setShowPluginsPopup:Function\r\n}\r\n\r\nexport const Plans = (props:IPlansProps) => {\r\n\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const IsPriceDifferent = useAppSelector((store) => store.IsPriceDifferent);\r\n const IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n //const abtest_SBSPage25 = useAppSelector((store) => store.abtest_SBSPage25);\r\n\r\n //console.log('PageData:',PageData);\r\n const dispatch = useAppDispatch();\r\n\r\n const StarterPlanAnnual = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n const StarterPlanMonthly = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n const StarterPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n\r\n const PremiumPlanAnnual = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n const PremiumPlanMonthly = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n const PremiumPlanSave:number = Number(((PremiumPlanMonthly.skU_MSRP * 12) - PremiumPlanAnnual.skU_MSRP).toFixed(2));\r\n const PremiumPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n\r\n //if StarterPlan.numberOfFreeDays > 0 --> button's text : Start Free 7-Day Trial\r\n //else --> button's text : Get Access\r\n const StarterButtonText = StarterPlan.numberOfFreeDays > 0 ? \"Start Free \"+StarterPlan.numberOfFreeDays+\"-day Trial\" : \"Subscribe Now\";\r\n const PremiumButtonText = PremiumPlan.numberOfFreeDays > 0 ? \"Start Free \"+PremiumPlan.numberOfFreeDays+\"-day Trial\" : \"Subscribe Now\";\r\n\r\n //console.log('PremiumPlanSave: ',PremiumPlanSave);\r\n const ShowPluginsPopup = (plan? : SubscriptionPlanModel) => {\r\n\r\n sendGAEvent('Click', 'open plugins popup');\r\n\r\n props.setShowPluginsPopup(true);\r\n\r\n dispatch(\r\n rootActions.main({\r\n PlanOnMobilePluginsPopup:plan,\r\n ShowPluginImageSortIncludesID:-1,\r\n SearchFilterKey:\"\"\r\n })\r\n )\r\n\r\n }\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!IsPriceDifferent &&\r\n

Pay annually & save up to

\r\n }\r\n {IsPriceDifferent &&\r\n

Pay annually & save

\r\n }\r\n \r\n
Monthly
\r\n
\r\n SetIsAnnual(isToogle, dispatch)}\r\n\r\n textStyles={{\r\n margiLeft: '-5px'\r\n }}\r\n />\r\n
\r\n
Annual
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
{StarterPlan.tierName}
\r\n\r\n\r\n {/*here if default*/}\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 {!IsPriceDifferent && }\r\n {IsPriceDifferent && }\r\n
\r\n\r\n\r\n { !IsPriceDifferent &&\r\n \r\n }\r\n { IsPriceDifferent &&\r\n \r\n }\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Over 120 industry-leading plugins

\r\n

All plugin updates included

\r\n

Selected new plugins added

\r\n

2 licenses for activation on 2 machines

\r\n

Includes Waves Stream service for remote audio collaboration

\r\n
\r\n
Includes StudioVerse:
\r\n
Thousands of mix chains w/\r\n instant AI search\r\n
\r\n
\r\n {/*
\r\n
Limited time: 2 free months of Splice Sounds+:
\r\n
Allow 8 days for code delivery by email
\r\n
*/}\r\n
\r\n
Cancel anytime (your subscription will stop
\r\n
at the end of your current\r\n period)\r\n
\r\n
\r\n
\r\n\r\n
\r\n Explore Essential\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {/*
*/}\r\n {/*

All 240+ Waves Plugins

*/}\r\n {/*

3 DTS broadcast plugins excluded

*/}\r\n {/*
*/}\r\n\r\n
\r\n

All 240+ Waves Plugins

\r\n

3 DTS broadcast plugins excluded

\r\n
\r\n\r\n\r\n
{PremiumPlan.tierName}
\r\n\r\n {/*here if default*/}\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {!IsPriceDifferent && }\r\n {IsPriceDifferent && }\r\n
\r\n\r\n\r\n\r\n {\r\n !IsPriceDifferent &&\r\n }\r\n {\r\n IsPriceDifferent &&\r\n }\r\n\r\n
\r\n AddToCart(PremiumPlan)}\r\n className=\"text-black no-underline font-medium bg-yellow px-20 md:px-24 xl:px-28 py-3.5 md:py-5 rounded-full text-base md:text-xl xl:text-2xl w-fit cursor-pointer\">{PremiumButtonText}\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n

Over 240 industry-leading plugins

\r\n

All plugin updates included

\r\n

New plugins added regularly

\r\n

2 licenses for activation on 2 machines

\r\n

Includes Waves Stream service for remote audio collaboration

\r\n
\r\n
Includes StudioVerse:
\r\n
Thousands of mix chains w/\r\n instant AI search\r\n
\r\n
\r\n {/*
\r\n
Limited time: 2 free months of Splice Sounds+:
\r\n
Allow 8 days for code delivery by email
\r\n
*/}\r\n
\r\n
Cancel anytime (your subscription will stop
\r\n
at the end of your current\r\n period)\r\n
\r\n
\r\n
\r\n\r\n
\r\n Explore Ultimate\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};","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\n\r\nconst SearchIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n { props.title && { props.title } }\r\n \r\n )\r\n};\r\n\r\nexport default SearchIcon;\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 React from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport { PluginSortStatusEnum} from \"../../enums\";\r\nimport ArrowIcon from \"../../../../ui/svg/common/arrow\";\r\nimport {ToggleShowSortOptions} from \"../../services/logic-helper\";\r\nimport {useWindowSize} from \"../../../../domain/common\";\r\nimport { TABLET_BREAKPOINT_END} from \"../../../../domain/animations/animations-provider\";\r\n\r\ninterface IPluginsSortOptionsProps {\r\n //close: Function;\r\n}\r\n\r\nexport const PluginsSortOptions = (props : IPluginsSortOptionsProps) => {\r\n\r\n const ShowSortChoices = useAppSelector((store) => store.ShowSortChoices);\r\n const PluginSortStatus = useAppSelector((store) => store.PluginSortStatus);\r\n const size = useWindowSize();\r\n\r\n const dispatch = useAppDispatch();\r\n const OnClickOption = (value : number) => {\r\n\r\n dispatch(\r\n rootActions.main({\r\n PluginSortStatus:value,\r\n ShowSortChoices:!ShowSortChoices\r\n })\r\n )\r\n\r\n }\r\n return (\r\n <>\r\n \r\n {ShowSortChoices &&\r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n {size.width !== undefined && size.width > TABLET_BREAKPOINT_END &&\r\n
  • \r\n \r\n
  • \r\n }\r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n\r\n
\r\n
\r\n }\r\n \r\n )\r\n};","import {Toggle} from \"../../../../ui/toggle/toggle\";\r\nimport React from \"react\";\r\nimport {useAppSelector,rootActions, useAppDispatch} from \"../../DAL/store\";\r\nimport SearchIcon from \"../../../../ui/svg/common/search\";\r\nimport {PluginsSortOptions} from \"./plugins-sort-options\";\r\nimport {AddToCart, SetIsAnnual} from \"../../services/logic-helper\";\r\nimport {Price} from \"../price\";\r\nimport { PriceDifferent } from \"../price-different\";\r\nimport {ToggleStyled} from \"../../../../ui/toggle/toggle-styled\";\r\n\r\nexport const PlansPopup = () => {\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const SearchFilterKey = useAppSelector((store) => store.SearchFilterKey);\r\n\r\n const IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n const IsPriceDifferent = useAppSelector((store) => store.IsPriceDifferent);\r\n //const abtest_SBSPage25 = useAppSelector((store) => store.abtest_SBSPage25);\r\n const abtest_IsOldVariant = useAppSelector((store) => store.abtest_IsOldVariant);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const StarterPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n const PremiumPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n\r\n //if StarterPlan.numberOfFreeDays > 0 --> button's text : Start Free 7-Day Trial\r\n //else --> button's text : Get Access\r\n const StarterButtonText = StarterPlan.numberOfFreeDays > 0 ? \"Start Free \"+StarterPlan.numberOfFreeDays+\"-day Trial\" : \"Subscribe Now\";\r\n const PremiumButtonText = PremiumPlan.numberOfFreeDays > 0 ? \"Start Free \"+PremiumPlan.numberOfFreeDays+\"-day Trial\" : \"Subscribe Now\";\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
Compare Plans
\r\n\r\n
\r\n
Monthly
\r\n
\r\n SetIsAnnual(isToogle, dispatch)}\r\n\r\n textStyles={{\r\n margiLeft: '-5px'\r\n }}\r\n />\r\n
\r\n
Annual
\r\n
\r\n \r\n \r\n\r\n {\r\n dispatch(\r\n rootActions.main({\r\n SearchFilterKey:evt.target.value.trim()\r\n })\r\n )\r\n }}\r\n style={{\r\n textIndent: '10px'\r\n }}\r\n >\r\n
\r\n\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n
{StarterPlan.tierName}
\r\n
\r\n
\r\n {!IsPriceDifferent && }\r\n {IsPriceDifferent && }\r\n\r\n{/*\r\n / {IsAnnual ? \"year\":\"month\"}\r\n*/}\r\n
\r\n\r\n
\r\n AddToCart(StarterPlan)} className=\"text-white no-underline font-medium bg-mid-purple px-8 py-3 rounded-full text-base text-lg w-fit cursor-pointer\">{StarterButtonText}\r\n
\r\n
\r\n
\r\n {/*
*/}\r\n {/*

All 240+ Waves Plugins

*/}\r\n {/*

3 DTS broadcast plugins excluded

*/}\r\n {/*
*/}\r\n { abtest_IsOldVariant &&\r\n
\r\n

All 240+ Waves Plugins

\r\n

3 DTS broadcast plugins excluded

\r\n
\r\n }\r\n { !abtest_IsOldVariant &&\r\n
\r\n

Best Value

\r\n
\r\n }\r\n
{PremiumPlan.tierName}
\r\n
\r\n
\r\n {!IsPriceDifferent && }\r\n {IsPriceDifferent && }\r\n{/*\r\n / {IsAnnual ? \"year\":\"month\"}\r\n*/}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n )\r\n};","import React from 'react';\r\nimport {IIconProps} from \"../../../ui/svg/interfaces\";\r\n\r\nconst SbsEyeIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n \r\n {props.title}\r\n \r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default SbsEyeIcon;","import React from 'react';\r\nimport { IIconProps } from '../interfaces';\r\nconst CheckIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default CheckIcon;","import React, {useRef} from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport {ProductModel} from \"../../interfaces\";\r\nimport SbsEyeIcon from \"../../icons/sbs-eye\";\r\nimport CheckIcon from \"../../../../ui/svg/common/check-v\";\r\n\r\ninterface IPluginLgProps {\r\n product : ProductModel;\r\n index: number;\r\n}\r\n\r\nexport const PluginLg = (props : IPluginLgProps) => {\r\n\r\n const ShowPluginImageSortIncludesID = useAppSelector((store) => store.ShowPluginImageSortIncludesID);\r\n const dispatch = useAppDispatch();\r\n const eyeIconRef = useRef(null);\r\n\r\n /**\r\n * ShowPluginImageSortIncludesID is plugin identifier (by SortIncludesID) in order to show plugin view ( after clicking the eye icon)\r\n * When ShowPluginImageSortIncludesID > 0 --> show the plugin view popup for the specific plugin\r\n * When ShowPluginImageSortIncludesID <= 0 --> hide plugin view\r\n *\r\n * PluginViewPosition is the position (CSS) for positioning the plugin view after eye icon click (speech bubble popup)\r\n *\r\n * */\r\n const SetShowPluginImageSortIncludesID = (event:any) => {\r\n event.stopPropagation();\r\n if(eyeIconRef.current !== null){\r\n // @ts-ignore\r\n const { left,top } = eyeIconRef.current.getBoundingClientRect();\r\n dispatch(\r\n rootActions.main({\r\n ShowPluginImageSortIncludesID : props.product.sortIncludes,\r\n PluginViewPosition: {top:top,left:left}\r\n })\r\n )\r\n }\r\n\r\n return false;\r\n }\r\n return (\r\n
  • \r\n \r\n
    {props.product.documentName}{props.product.skuInStoreFrom && props.product.skuInStoreFrom !== '' && - NEW}
    \r\n
    {props.product.isLow ? : <> }
    \r\n
    {props.product.isHigh ? : <> }
    \r\n\r\n
  • \r\n )\r\n};","// 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 _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","import React, {useLayoutEffect, useRef, useState} from \"react\";\r\nimport {ProductModel} from \"../../interfaces\";\r\nimport Imgix from \"react-imgix\";\r\nimport {useAppSelector} from \"../../DAL/store\";\r\nimport StarRating from \"../../../../ui/rating/star-rating\";\r\nimport {getWindowDimensions, MOBILE_BREAKPOINT} from \"../../../../domain/animations/animations-provider\";\r\nimport { StopPropagation } from \"../../services/logic-helper\";\r\n\r\ninterface IPluginViewSortOptionsProps {\r\n product : ProductModel;\r\n}\r\n\r\nexport const PluginViewLg = (props : IPluginViewSortOptionsProps) => {\r\n\r\n const ImgCdnDomain = useAppSelector((store) => store.ImgCdnDomain);\r\n const containerRef = useRef(null);\r\n const [isFlipView, setIsFlipView] = useState(false);\r\n const [viewHeight, setViewHeight] = useState(0);\r\n const PluginViewPosition = useAppSelector((store) => store.PluginViewPosition);\r\n const windowWidth = getWindowDimensions().width;\r\n\r\n const getContainerStyle = () : any => {\r\n let containerStyle = {};\r\n if(windowWidth !== undefined && windowWidth <= MOBILE_BREAKPOINT){\r\n containerStyle = {zIndex:111,width:\"100vw\",height:\"100vh\",top:\"0px\",left:\"0px\"};\r\n }else{\r\n if(isFlipView){\r\n containerStyle = {zIndex:111,left:(PluginViewPosition.left + 37) + \"px\",top: (PluginViewPosition.top - viewHeight + 47 ) + \"px\"};\r\n }else{\r\n containerStyle ={zIndex:111,left:(PluginViewPosition.left + 37) + \"px\",top: PluginViewPosition.top - 16 + \"px\"};\r\n }\r\n }\r\n\r\n return containerStyle;\r\n }\r\n /**\r\n * Performs the layout measurements before the browser repaints the screen\r\n * Inorder to position the plugin view popup ( after eyeIcon click) we need to know what is the height of the element that PluginView renders\r\n *\r\n * isFlipView === True --> the popup element overflows --> flip the speech bubble up\r\n *\r\n * isFlipView === False --> the popup element doesn't overflow --> flip the speech bubble down\r\n */\r\n useLayoutEffect(() => {\r\n\r\n const pluginsContainerElement = document.getElementById('plugins-list-container');\r\n\r\n if(containerRef.current === null || pluginsContainerElement === null || windowWidth <= MOBILE_BREAKPOINT){\r\n return;\r\n }\r\n // @ts-ignore\r\n const { height } = containerRef.current.getBoundingClientRect();\r\n const pluginsContainerPos = pluginsContainerElement.getBoundingClientRect();\r\n\r\n const relativeTopToPluginsContainer = PluginViewPosition.top - pluginsContainerPos.top;\r\n setViewHeight(height);\r\n\r\n if((relativeTopToPluginsContainer + height) > pluginsContainerElement.offsetHeight){\r\n setIsFlipView(true);\r\n }else{\r\n setIsFlipView(false);\r\n }\r\n\r\n }, [PluginViewPosition,windowWidth]);\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {props.product.documentName}
    \r\n
    {props.product.documentPageDescription}
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n )\r\n};","import React, {useRef, useState} from \"react\";\r\nimport { useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport {ProductModel} from \"../../interfaces\";\r\nimport {PlansPopup} from \"./plans-popup\";\r\nimport {PluginLg} from \"./plugin-lg\";\r\nimport {PluginViewLg} from \"./plugin-view-lg\";\r\nimport {HidePluginView, SortItems} from \"../../services/logic-helper\";\r\n\r\n\r\ninterface IPluginsPopupLgProps {\r\n\r\n}\r\n\r\nexport const PluginsPopupLg = (props: IPluginsPopupLgProps) => {\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const SearchFilterKey = useAppSelector((store) => store.SearchFilterKey);\r\n const PluginSortStatus = useAppSelector((store) => store.PluginSortStatus);\r\n const ShowPluginImageSortIncludesID = useAppSelector((store) => store.ShowPluginImageSortIncludesID);\r\n const PluginViewPosition = useAppSelector((store) => store.PluginViewPosition);\r\n const FilteredItems = PageData.products.filter(item => item.documentName.toLowerCase().includes(SearchFilterKey.toLowerCase()));\r\n const SortedAndFilteredItems = SortItems(FilteredItems,PluginSortStatus);\r\n const [showFadeBottom, setShowFadeBottom] = useState(true);\r\n\r\n const listInnerRef = useRef();\r\n const dispatch = useAppDispatch();\r\n const OnScrollPlugins = () => {\r\n HidePluginView(dispatch);\r\n if (listInnerRef.current) {\r\n const { scrollTop, scrollHeight, clientHeight } = listInnerRef.current;\r\n if (scrollTop + clientHeight + 10 >= scrollHeight) {\r\n //Reached bottom --> hide the fade div to display the last plugins in the list\r\n setShowFadeBottom(false);\r\n }else{\r\n if(!showFadeBottom){\r\n //Scrolled up (out of the bottom) --> show the fade div\r\n setShowFadeBottom(true);\r\n }\r\n }\r\n }\r\n }\r\n return (\r\n
    HidePluginView(dispatch)}>\r\n \r\n
    \r\n
      OnScrollPlugins()} ref={listInnerRef} >\r\n {SortedAndFilteredItems.length > 0 && SortedAndFilteredItems.map((product : ProductModel, index: number) => {\r\n return \r\n })}\r\n
    \r\n\r\n
    \r\n {ShowPluginImageSortIncludesID > 0 && PluginViewPosition !== null &&\r\n product.sortIncludes === ShowPluginImageSortIncludesID )[0]} />\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n )\r\n};","import React, {useRef} from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport {ProductModel} from \"../../interfaces\";\r\nimport SbsEyeIcon from \"../../icons/sbs-eye\";\r\n\r\ninterface IPluginMobileProps {\r\n product : ProductModel;\r\n index: number;\r\n}\r\n\r\nexport const PluginMobile = (props : IPluginMobileProps) => {\r\n\r\n const ShowPluginImageSortIncludesID = useAppSelector((store) => store.ShowPluginImageSortIncludesID);\r\n const dispatch = useAppDispatch();\r\n const eyeIconRef = useRef(null);\r\n//console.log()\r\n const SetShowPluginImageSortIncludesID = (event:any) => {\r\n event.stopPropagation();\r\n if(eyeIconRef.current !== null){\r\n dispatch(\r\n rootActions.main({\r\n ShowPluginImageSortIncludesID : props.product.sortIncludes,\r\n })\r\n )\r\n }\r\n return false;\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n
    {props.product.documentName}{props.product.skuInStoreFrom && props.product.skuInStoreFrom !== '' && - NEW }
    \r\n{/*\r\n
    {showCheck ? : <> }
    \r\n*/}\r\n\r\n
  • \r\n )\r\n};","import React from \"react\";\r\nimport {ProductModel} from \"../../interfaces\";\r\nimport Imgix from \"react-imgix\";\r\nimport {useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport StarRating from \"../../../../ui/rating/star-rating\";\r\nimport {HidePluginView, StopPropagation} from \"../../services/logic-helper\";\r\nimport CloseIcon from \"../../../../ui/svg/common/close\";\r\n\r\ninterface IPluginViewSortOptionsProps {\r\n product : ProductModel;\r\n}\r\n\r\nexport const PluginViewMobile = (props : IPluginViewSortOptionsProps) => {\r\n\r\n const ImgCdnDomain = useAppSelector((store) => store.ImgCdnDomain);\r\n const abtest_SBSPage25 = useAppSelector((store) => store.abtest_SBSPage25);\r\n const dispatch = useAppDispatch();\r\n\r\n return (\r\n <>{props.product !== undefined &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    {props.product.documentName}
    \r\n
    {props.product.documentPageDescription}
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n }\r\n )\r\n};","import React from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport {HidePluginView, SortItems} from \"../../services/logic-helper\";\r\nimport {ProductModel} from \"../../interfaces\";\r\nimport {PluginMobile} from \"./plugin-mobile\";\r\nimport SearchIcon from \"../../../../ui/svg/common/search\";\r\nimport {PluginsSortOptions} from \"./plugins-sort-options\";\r\nimport {PluginViewMobile} from \"./plugin-view-mobile\";\r\n\r\ninterface IPluginsPopupMobileProps {\r\n\r\n}\r\nexport const PluginsPopupMobile = (props: IPluginsPopupMobileProps) => {\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const SearchFilterKey = useAppSelector((store) => store.SearchFilterKey);\r\n const PluginSortStatus = useAppSelector((store) => store.PluginSortStatus);\r\n const ShowPluginImageSortIncludesID = useAppSelector((store) => store.ShowPluginImageSortIncludesID);\r\n const PlanOnMobilePluginsPopup = useAppSelector((store) => store.PlanOnMobilePluginsPopup);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const FilteredItems = PageData.products.filter(item => {\r\n let searchFilter = item.documentName.toLowerCase().includes(SearchFilterKey.toLowerCase());\r\n let planFilter = (PlanOnMobilePluginsPopup?.tierLowHigh === \"low\" && item.isLow === 1) || (PlanOnMobilePluginsPopup?.tierLowHigh === \"high\" && item.isHigh === 1);\r\n return searchFilter && planFilter;\r\n });\r\n const SortedAndFilteredItems = SortItems(FilteredItems,PluginSortStatus);\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n
    {PlanOnMobilePluginsPopup !== null ? PlanOnMobilePluginsPopup.tierName : \"\"}
    \r\n\r\n
    \r\n \r\n\r\n {\r\n dispatch(\r\n rootActions.main({\r\n SearchFilterKey:evt.target.value.trim()\r\n })\r\n )\r\n }}\r\n style={{\r\n textIndent: '10px'\r\n }}\r\n >\r\n
    \r\n \r\n\r\n
    \r\n
      HidePluginView(dispatch)} style={{height:\"72vh\"}}>\r\n {SortedAndFilteredItems.length > 0 && SortedAndFilteredItems.map((product : ProductModel, index: number) => {\r\n return \r\n })}\r\n
    \r\n {ShowPluginImageSortIncludesID > 0 &&\r\n product.sortIncludes === ShowPluginImageSortIncludesID )[0]} />\r\n }\r\n
    \r\n )\r\n};","import CloseIcon from '../svg/common/close';\r\nimport { CSSProperties, ReactNode, useCallback, useEffect, useRef, MouseEvent } from 'react';\r\n\r\n/*\r\nUsage:\r\n-------\r\n {\r\n dispatch(\r\n rootActions.main({\r\n showLoginPage: false\r\n })\r\n );\r\n}}>\r\n
    \r\n

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

    \r\n LOG IN NOW\r\n
    \r\n
    \r\n */\r\n\r\ninterface IPopupProps {\r\n width?: string,\r\n height?: string,\r\n close?: Function,\r\n canBeClosed?: boolean,\r\n children?: ReactNode,\r\n classes?: string,\r\n bgClass?: string,\r\n styles?: CSSProperties,\r\n iconWidth?: string,\r\n iconColor?: string,\r\n btnTop?: string;\r\n btnRight?: string;\r\n removeBackdrop?: boolean;\r\n prevent?: boolean;\r\n}\r\n\r\n/**\r\n * Popup component.\r\n */\r\nexport const Popup = (props: IPopupProps) => {\r\n\r\n const popupRef = useRef(null);\r\n const closeButtonRef = useRef(null);\r\n\r\n useEffect(() => {\r\n\r\n setTimeout(() => {\r\n if(closeButtonRef.current) {\r\n closeButtonRef.current.focus();\r\n }\r\n else{\r\n popupRef.current?.focus();\r\n }\r\n }, 10);\r\n }, []);\r\n\r\n /**\r\n * close popup handler\r\n */\r\n const closePopup = useCallback(() => {\r\n if (typeof props.close !== 'function') return;\r\n props.close();\r\n }, [props])\r\n\r\n /**\r\n * handle escape key\r\n */\r\n const handleEscape = useCallback(async (evt: any) => {\r\n if (evt.key === 'Escape') {\r\n closePopup();\r\n }\r\n }, [closePopup]);\r\n\r\n useEffect(() => {\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('close-popup', closePopup);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n document.removeEventListener('close-popup', closePopup);\r\n }\r\n }, [closePopup, handleEscape]);\r\n\r\n const canBeClosed = props.canBeClosed !== undefined ? props.canBeClosed : true;\r\n const iconWidth = props.iconWidth !== undefined ? props.iconWidth : '16';\r\n\r\n const handlePopupClick = (evt: MouseEvent) => {\r\n\r\n if(props.prevent) {\r\n evt.preventDefault()\r\n evt.stopPropagation();\r\n }\r\n\r\n if (!canBeClosed) return;\r\n closePopup();\r\n };\r\n\r\n return (\r\n \r\n {\r\n evt.stopPropagation();\r\n if(props.prevent) {\r\n evt.preventDefault();\r\n }\r\n }}\r\n style={{\r\n ...(props.styles || {}),\r\n width: props.width,\r\n height: props.height,\r\n }}\r\n >\r\n {\r\n canBeClosed &&\r\n \r\n \r\n \r\n }\r\n\r\n {props.children}\r\n \r\n \r\n )\r\n};\r\n\r\n/*\r\n max-height: 100vh;\r\n */\r\n","import React from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../../DAL/store\";\r\nimport {PluginsPopupLg} from \"./plugins-popup-lg\";\r\nimport {PluginsPopupMobile} from \"./plugins-popup-mobile\";\r\nimport {Popup} from \"../../../../ui/popup/popup\";\r\nimport {useWindowSize} from \"../../../../domain/common\";\r\nimport {DESKTOP_BREAKPOINT, MOBILE_BREAKPOINT} from \"../../../../domain/animations/animations-provider\";\r\nimport {abtest_SBSPage25Variants} from \"../../interfaces\";\r\n\r\ninterface IPluginsPopupProps {\r\n close?: Function,\r\n}\r\nexport const PluginsPopup = (props : IPluginsPopupProps) => {\r\n\r\n const ShowSortChoices = useAppSelector((store) => store.ShowSortChoices);\r\n const abtest_SBSPage25 = useAppSelector((store) => store.abtest_SBSPage25);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const HideSortOptions = (dispatch :any) => {\r\n\r\n if(ShowSortChoices){\r\n dispatch(\r\n rootActions.main({\r\n ShowSortChoices:false\r\n })\r\n )\r\n }\r\n\r\n }\r\n const size = useWindowSize();\r\n\r\n const PopUpWidht = (size.width !== undefined && size.width < MOBILE_BREAKPOINT) ? \"100%\" : \"auto\";\r\n\r\n return (\r\n \r\n
    HideSortOptions(dispatch)}>\r\n {size.width !== undefined && size.width >= DESKTOP_BREAKPOINT && abtest_SBSPage25 !== abtest_SBSPage25Variants.ultimateOnly &&\r\n \r\n }\r\n {((size.width !== undefined && size.width < DESKTOP_BREAKPOINT) || abtest_SBSPage25 === abtest_SBSPage25Variants.ultimateOnly) &&\r\n \r\n }\r\n
    \r\n
    \r\n\r\n )\r\n};","import { Popup } from '../../../../ui/popup/popup';\r\nimport React from 'react';\r\nimport {rootActions, useAppDispatch, useAppSelector} from '../../DAL/store';\r\nimport ProductPriceFormat from \"../../../products/product-price/product-price-format\";\r\n\r\nconst TwoMonthFreePopup = () => {\r\n const dispatch = useAppDispatch();\r\n\r\n const PlanSavePopupShown = useAppSelector((store) => store.PlanSavePopupShown);\r\n const PlanCostPopupShown = useAppSelector((store) => store.PlanCostPopupShown);\r\n\r\n const closePopup = () => {\r\n dispatch(\r\n rootActions.main({\r\n IsTwoMonthFreePopupShown: false,\r\n PlanCostPopupShown: null,\r\n PlanSavePopupShown: null\r\n })\r\n );\r\n };\r\n\r\n return (\r\n \r\n
    \r\n

    By paying upfront annually, you save compared to paying monthly.

    \r\n \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nexport default TwoMonthFreePopup;","\r\nimport React from 'react';\r\nimport {rootActions, useAppDispatch} from '../../../account/change-sbs-billing-info/data/store';\r\nimport {sendGAEvent} from '../../../../domain/marketing/gtm-provider';\r\nimport { SubscriptionPlanModel} from \"../../interfaces\";\r\nimport ProductPriceFormat from \"../../../products/product-price/product-price-format\";\r\n\r\ninterface ITwoMonthFreeProps {\r\n PlanAnnual: SubscriptionPlanModel,\r\n PlanMonthly: SubscriptionPlanModel\r\n}\r\nconst TwoMonthFreeNew = (props: ITwoMonthFreeProps) => {\r\n const dispatch = useAppDispatch();\r\n\r\n const PlanSave = Number(((props.PlanMonthly.skU_MSRP * 12) - props.PlanAnnual.skU_MSRP).toFixed(2));\r\n //console.log('TwoMonthFree PlanSave: ',PlanSave);\r\n\r\n const openPopup = () => {\r\n dispatch(\r\n rootActions.main({\r\n IsTwoMonthFreePopupShown: true,\r\n PlanSavePopupShown: PlanSave,\r\n PlanCostPopupShown: props.PlanAnnual.skU_MSRP\r\n })\r\n );\r\n\r\n sendGAEvent('Click','You’re save 2 months free');\r\n };\r\n\r\n // const goToAnnual = () => {\r\n // dispatch(\r\n // rootActions.main({\r\n // IsAnnual: true,\r\n // })\r\n // );\r\n //\r\n // sendGAEvent('Click','Pay annually & save 2 months');\r\n // };\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n You save \r\n a year\r\n\r\n
    \r\n\r\n\r\n\r\n
    \r\n )\r\n};\r\n\r\nexport default TwoMonthFreeNew;","import React from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../DAL/store\";\r\nimport ArrowIcon from \"../../../ui/svg/common/arrow\";\r\nimport {AddToCart} from \"../services/logic-helper\";\r\nimport {SubscriptionPlanModel} from \"../interfaces\";\r\nimport {sendGAEvent} from \"../../../domain/marketing/gtm-provider\";\r\nimport {Price} from \"./price\";\r\nimport StarRating from \"../../../ui/rating/star-rating\";\r\nimport TwoMonthFreeNew from \"./two-month-free/two-month-free-new-version\";\r\n\r\ninterface IPlansProps {\r\n setShowPluginsPopup:Function\r\n}\r\n\r\nexport const PlansSideBySide = (props:IPlansProps) => {\r\n\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n\r\n\r\n //console.log('PageData:',PageData);\r\n const dispatch = useAppDispatch();\r\n\r\n const StarterPlanAnnual = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n const StarterPlanMonthly = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n const StarterPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n\r\n const PremiumPlanAnnual = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n const PremiumPlanMonthly = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n //const PremiumPlanSave:number = Number(((PremiumPlanMonthly.skU_MSRP * 12) - PremiumPlanAnnual.skU_MSRP).toFixed(2));\r\n const PremiumPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n\r\n //if StarterPlan.numberOfFreeDays > 0 --> button's text : Start Free 7-Day Trial\r\n //else --> button's text : Get Access\r\n const StarterButtonText = StarterPlan.numberOfFreeDays > 0 ? \"Start Free \"+StarterPlan.numberOfFreeDays+\"-day Trial\" : \"Get Access\";\r\n //const PremiumButtonText = PremiumPlan.numberOfFreeDays > 0 ? \"Start Free \"+PremiumPlan.numberOfFreeDays+\"-day Trial\" : \"Get Access\";\r\n\r\n //console.log('PremiumPlanSave: ',PremiumPlanSave);\r\n const ShowPluginsPopup = (plan? : SubscriptionPlanModel) => {\r\n\r\n sendGAEvent('Click', 'open plugins popup');\r\n\r\n props.setShowPluginsPopup(true);\r\n\r\n dispatch(\r\n rootActions.main({\r\n PlanOnMobilePluginsPopup:plan,\r\n ShowPluginImageSortIncludesID:-1,\r\n SearchFilterKey:\"\"\r\n })\r\n )\r\n\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n
    {StarterPlan.tierName}
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n ShowPluginsPopup(StarterPlan)}\r\n className=\" text-tiny md:text-lg lg:text-2xl text-white underline cursor-pointer w-auto pr-1\">120+ Included Plugins\r\n \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n  \r\n
    \r\n
    Monthly\r\n
    \r\n \r\n \r\n  
    \r\n  
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n
    Annual
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n

    Over 120 industry-leading plugins

    \r\n

    All plugin updates included

    \r\n

    Selected new plugins added

    \r\n

    2 licenses for activation on 2 machines

    \r\n

    Includes Waves Stream service for remote audio collaboration

    \r\n
    \r\n
    Includes StudioVerse:
    \r\n
    Thousands of mix chains w/\r\n instant AI search\r\n
    \r\n
    \r\n {/*
    \r\n
    Limited time: 2 free months of Splice Sounds+:
    \r\n
    Allow 8 days for code delivery by email
    \r\n
    */}\r\n
    \r\n
    Cancel anytime (your subscription will stop
    \r\n
    at the end of your current\r\n period)\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n Explore Essential\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {/*
    */}\r\n {/*

    All 240+ Waves Plugins

    */}\r\n {/*

    3 DTS broadcast plugins excluded

    */}\r\n {/*
    */}\r\n\r\n\r\n {/*
    */}\r\n {/* Best Value*/}\r\n {/*
    */}\r\n\r\n
    {PremiumPlan.tierName}
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n ShowPluginsPopup(PremiumPlan)}\r\n className=\" text-tiny md:text-lg lg:text-2xl text-white underline cursor-pointer w-auto pr-1\">240+ Included Plugins\r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n  \r\n
    Monthly
    \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 Best Value\r\n
    Annual
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n\r\n\r\n
    \r\n
    \r\n

    Over 240 industry-leading plugins

    \r\n

    All plugin updates included

    \r\n

    New plugins added regularly

    \r\n

    2 licenses for activation on 2 machines

    \r\n

    Includes Waves Stream service for remote audio collaboration

    \r\n
    \r\n
    Includes StudioVerse:
    \r\n
    Thousands of mix chains w/\r\n instant AI search\r\n
    \r\n
    \r\n {/*
    \r\n
    Limited time: 2 free months of Splice Sounds+:
    \r\n
    Allow 8 days for code delivery by email
    \r\n
    */}\r\n
    \r\n
    Cancel anytime (your subscription will stop
    \r\n
    at the end of your current\r\n period)\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n Explore Ultimate\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};","import React from \"react\";\r\nimport {rootActions, useAppDispatch, useAppSelector} from \"../DAL/store\";\r\nimport ArrowIcon from \"../../../ui/svg/common/arrow\";\r\nimport {AddToCart} from \"../services/logic-helper\";\r\nimport { SubscriptionPlanModel} from \"../interfaces\";\r\nimport {sendGAEvent} from \"../../../domain/marketing/gtm-provider\";\r\nimport {Price} from \"./price\";\r\nimport TwoMonthFree from './two-month-free/two-month-free';\r\nimport StarRating from \"../../../ui/rating/star-rating\";\r\nimport TwoMonthFreeNew from \"./two-month-free/two-month-free-new-version\";\r\n\r\ninterface IPlansProps {\r\n setShowPluginsPopup:Function\r\n}\r\n\r\nexport const PlansOnlyUltimate = (props:IPlansProps) => {\r\n\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n const IsAnnual = useAppSelector((store) => store.IsAnnual);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n //const StarterPlanAnnual = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n //const StarterPlanMonthly = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n const StarterPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"low\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"low\"))[0];\r\n\r\n const PremiumPlanAnnual = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n const PremiumPlanMonthly = PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n //const PremiumPlanSave:number = Number(((PremiumPlanMonthly.skU_MSRP * 12) - PremiumPlanAnnual.skU_MSRP).toFixed(2));\r\n const PremiumPlan = IsAnnual ?\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 2 && plan.tierLowHigh.endsWith(\"high\"))[0] :\r\n PageData.subscriptionPlans.filter(plan => plan.sbsTypeID === 1 && plan.tierLowHigh.endsWith(\"high\"))[0];\r\n\r\n //if StarterPlan.numberOfFreeDays > 0 --> button's text : Start Free 7-Day Trial\r\n //else --> button's text : Get Access\r\n const StarterButtonText = StarterPlan.numberOfFreeDays > 0 ? \"Start Free \"+StarterPlan.numberOfFreeDays+\"-day Trial\" : \"Get Access\";\r\n //const PremiumButtonText = PremiumPlan.numberOfFreeDays > 0 ? \"Start Free \"+PremiumPlan.numberOfFreeDays+\"-day Trial\" : \"Get Access\";\r\n\r\n //console.log('PremiumPlanSave: ',PremiumPlanSave);\r\n const ShowPluginsPopup = (plan? : SubscriptionPlanModel) => {\r\n\r\n sendGAEvent('Click', 'open plugins popup');\r\n\r\n props.setShowPluginsPopup(true);\r\n\r\n dispatch(\r\n rootActions.main({\r\n PlanOnMobilePluginsPopup:plan,\r\n UseMobilePluginsPopup:true,\r\n ShowPluginImageSortIncludesID:-1,\r\n SearchFilterKey:\"\"\r\n })\r\n )\r\n\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n {/*
    \r\n

    All 240+ Waves Plugins

    \r\n

    3 DTS broadcast plugins excluded

    \r\n
    */}\r\n
    \r\n
    {PremiumPlan.tierName}
    \r\n
    {PremiumPlan.tagline.replace('
    ','')}
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n  \r\n
    Monthly
    \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 Best Value\r\n
    Annual
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n\r\n\r\n\r\n
    \r\n
    \r\n

    Over 240 industry-leading plugins

    \r\n

    All plugin updates included

    \r\n

    New plugins added regularly

    \r\n

    2 licenses for activation on 2 machines

    \r\n

    Includes Waves Stream service for remote audio collaboration

    \r\n
    \r\n
    Includes StudioVerse:
    \r\n
    Thousands of mix chains w/\r\n instant AI search\r\n
    \r\n
    \r\n {/*
    \r\n
    Limited time: 2 free months of Splice Sounds+:
    \r\n
    Allow 8 days for code delivery by email
    \r\n
    */}\r\n
    \r\n
    Cancel anytime (your subscription will stop
    \r\n
    at the end of your current\r\n period)\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n Also available: Waves Essential\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \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;","import React from 'react';\r\nimport {useAppSelector} from \"../DAL/store\";\r\nimport Gallery from \"../../galleries/gallery/gallery\";\r\nimport {ProductModel} from \"../interfaces\";\r\nimport Imgix from \"react-imgix\";\r\n\r\nexport const SubscriptionSlider = () => {\r\n\r\n const PageData = useAppSelector((store) => store.PageData);\r\n //console.log('SubscriptionSlider: ',PageData.products[0]);\r\n const ImageCDNDomain= (document.getElementById('img-cdn-domain')?.textContent || '')?.trim().toLowerCase();\r\n\r\n return (\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Recently
    \r\n Added Plugins\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Recently
    \r\n Added Plugins\r\n
    \r\n
    \r\n
    \r\n
    \r\n (p.skuInStoreFrom && p.skuInStoreFrom) !== '').sort(function(a:any,b:any){\r\n\r\n return new Date(b.skuInStoreFrom).getTime() - new Date(a.skuInStoreFrom).getTime();\r\n })}\r\n loop={true}\r\n duration={800}\r\n renderItem={(item: ProductModel, slideItemWidth: number) => {\r\n\r\n return (\r\n {\r\n\r\n }}>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {item.documentName}\r\n
    \r\n Added to \r\n {\r\n !!item.isLow && !item.isHigh &&\r\n Essential\r\n }\r\n {\r\n !item.isLow && !!item.isHigh &&\r\n Ultimate\r\n }\r\n {\r\n !!item.isLow && !!item.isHigh &&\r\n Essential & Ultimate\r\n }\r\n
    \r\n
    \r\n \r\n )\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n )\r\n};","import React from 'react';\r\nimport {IIconProps} from \"../../../ui/svg/interfaces\";\r\n\r\nconst SbsSmoothCheckIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n {props.title}\r\n\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nexport default SbsSmoothCheckIcon;","import React from 'react';\r\nimport {IIconProps} from \"../../../ui/svg/interfaces\";\r\n\r\nconst SbsAnimationDownArrowIcon = (props: IIconProps) => {\r\n\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n )\r\n};\r\n\r\nexport default SbsAnimationDownArrowIcon;","import React from \"react\";\r\nimport SbsSmoothCheckIcon from \"../icons/sbs-smooth-check\";\r\nimport SbsAnimationDownArrowIcon from \"../icons/sbs-animation-down-arrow\";\r\n\r\nexport const MainBanner = () => {\r\n\r\n const scrollToPlans = () => {\r\n const $el = document.getElementById('plans-container');\r\n if(!$el) return;\r\n\r\n window.scrollTo({\r\n top: $el.offsetTop,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n }\r\n return (\r\n <>\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n Waves
    Creative Access\r\n

    \r\n
    \r\n
    \r\n
    \r\n Create with total freedom: The world's largest catalog of \r\n industry-leading plugins for mixing and audio production\r\n\r\n
    \r\n {/* Desktop three check points */}\r\n \r\n
    \r\n \r\n
    240+ Waves plugins
    \r\n
    \r\n
    \r\n \r\n
    All updates included
    \r\n
    \r\n
    \r\n \r\n
    New plugins added regularly
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n )\r\n};","import React from \"react\";\r\nimport TimerCountDown from \"../../../ui/clock/count-down-timer\";\r\ninterface ITitleDescriptionProps {\r\n isMobile:boolean,\r\n isPriceDifferent:boolean\r\n}\r\nexport const TitleDescription = (props:ITitleDescriptionProps) => {\r\n\r\n\r\n return (\r\n <>\r\n {/*Default title*/}\r\n {props?.isMobile && !props?.isPriceDifferent &&\r\n
    \r\n Create with total freedom: The world's largest catalog of industry-\r\n leading plugins, plus powerful AI mixing tools—all at your fingertips.\r\n
    \r\n }\r\n {!props?.isMobile && !props?.isPriceDifferent &&\r\n
    \r\n Create with total freedom: The world's largest catalog of industry-leading\r\n plugins,
    plus powerful AI mixing tools—all at your\r\n fingertips.\r\n
    \r\n }\r\n\r\n\r\n {/*isPriceDifferent = TRUE*/}\r\n {props?.isMobile && props?.isPriceDifferent &&\r\n
    \r\n
    20% Off Annual Subscriptions :
    \r\n
    \r\n
    Offer ends in:
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n Get creative with the world's largest\r\n catalog of industry-leading plugins.\r\n
    \r\n }\r\n {!props?.isMobile && props?.isPriceDifferent &&\r\n
    \r\n
    20% Off Annual Subscriptions :
    \r\n
    \r\n
    Offer ends in:
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n Get creative with the world's largest
    \r\n catalog of industry-leading plugins.\r\n
    \r\n }\r\n\r\n \r\n )\r\n};","import React from \"react\";\r\nimport {TitleDescription} from \"./title-decription\";\r\nimport SbsSmoothCheckIcon from \"../icons/sbs-smooth-check\";\r\nimport SbsAnimationDownArrowIcon from \"../icons/sbs-animation-down-arrow\";\r\nimport {useAppSelector} from \"../DAL/store\";\r\nimport {useWindowSize} from \"../../../domain/common\";\r\n\r\nexport const MainBannerOld = () => {\r\n\r\n const IsPriceDifferent = useAppSelector((store) => store.IsPriceDifferent);\r\n\r\n // Window Size Hook.\r\n const size = useWindowSize();\r\n const LG_BREAKPOINT_START = 941;\r\n /**\r\n * On page load - create sbs alert if needed by URL params\r\n */\r\n const scrollToPlans = () => {\r\n const $el = document.getElementById('plans-container');\r\n if(!$el) return;\r\n\r\n window.scrollTo({\r\n top: $el.offsetTop,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n }\r\n return (\r\n <>\r\n
    \r\n \"\"/\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Waves
    Creative Access

    \r\n
    \r\n\r\n
    \r\n {/* Desktop description */}\r\n \r\n {}\r\n
    \r\n {/* Desktop three check points */}\r\n \r\n
    \r\n \r\n
    240+ Waves plugins
    \r\n
    \r\n
    \r\n \r\n
    All updates included
    \r\n
    \r\n
    \r\n \r\n
    New plugins added regularly
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {/*
    */}\r\n \r\n {/* Mobile description */}\r\n
    \r\n
    \r\n

    Waves
    Creative Access

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* Mobile three check points */}\r\n
    \r\n
    \r\n
    \r\n \r\n
    240+ Waves plugins
    \r\n
    \r\n
    \r\n \r\n
    All updates included
    \r\n
    \r\n
    \r\n \r\n
    New plugins added regularly
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n )\r\n};","import React from \"react\";\r\nimport SbsSmoothCheckIcon from \"../icons/sbs-smooth-check\";\r\nimport SbsAnimationDownArrowIcon from \"../icons/sbs-animation-down-arrow\";\r\nimport TimerCountDown from \"../../../ui/clock/count-down-timer\";\r\n\r\nexport const MainBannerPriceDifferent = () => {\r\n\r\n const scrollToPlans = () => {\r\n const $el = document.getElementById('plans-container');\r\n if(!$el) return;\r\n\r\n window.scrollTo({\r\n top: $el.offsetTop,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n }\r\n return (\r\n <>\r\n {/*Default title*/}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n Waves
    Creative Access\r\n

    \r\n
    \r\n
    \r\n
    \r\n Limited Time Offer\r\n
    \r\n
    \r\n Annual Subscriptions\r\n
    \r\n
    \r\n 20% Off the First Year\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* Desktop three check points */}\r\n \r\n
    \r\n \r\n
    240+ Waves plugins
    \r\n
    \r\n
    \r\n \r\n
    All updates included
    \r\n
    \r\n
    \r\n \r\n
    New plugins added regularly
    \r\n
    \r\n
    \r\n
    \r\n New annual subscription plans only. \r\n See terms & conditions.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n )\r\n};","import React, {useEffect, useState} from 'react';\r\nimport { useAppSelector} from \"../DAL/store\";\r\nimport SbsCheckIcon from \"../icons/sbs-check\";\r\nimport CloseIcon from \"../../../ui/svg/common/close\";\r\nimport {Plans} from \"../components/plans\";\r\nimport {PluginsPopup} from \"../components/plugins-popup/plugins-popup\";\r\nimport {GetQueryWithNoParams} from \"../services/logic-helper\";\r\nimport SbsSmoothCheckIcon from \"../icons/sbs-smooth-check\";\r\nimport TwoMonthFreePopup from '../components/two-month-free/two-month-free-popup';\r\nimport {PlansSideBySide} from \"../components/plans-side-by-side\";\r\nimport {abtest_SBSPage25Variants} from \"../interfaces\";\r\nimport {PlansOnlyUltimate} from \"../components/plans-only-ultimate\";\r\nimport {SubscriptionSlider} from \"../components/subscription-slider\";\r\nimport {getQueryString} from \"../../../domain/url-provider\";\r\nimport {TitleDescription} from \"../components/title-decription\";\r\nimport {MainBanner} from \"../components/main-banner\";\r\nimport {MainBannerOld} from \"../components/main-banner-old\";\r\nimport {MainBannerPriceDifferent} from \"../components/main-banner-price-different\";\r\n\r\n/**\r\n * the entry point\r\n */\r\nconst App: React.FC = () => {\r\n const ImageCDNDomain = (document.getElementById('img-cdn-domain')?.textContent || '')?.trim().toLowerCase();\r\n const [showPluginsPopup, setShowPluginsPopup] = useState(false);\r\n /**\r\n * softwareCodesAlertValue === -1 hide alert\r\n *\r\n */\r\n const [sbsAlertValue, setSbsAlertValue] = useState(\"\");\r\n\r\n\r\n const SbsActiveTiers = useAppSelector((store) => store.SbsActiveTiers);\r\n const MainBannerStyle = useAppSelector((store) => store.MainBannerStyle);\r\n const IsPriceDifferent = useAppSelector((store) => store.IsPriceDifferent);\r\n const QueryStringsReponse = useAppSelector((store) => store.QueryStringsReponse);\r\n const IsTwoMonthFreePopupShown = useAppSelector((store) => store.IsTwoMonthFreePopupShown);\r\n\r\n const abtest_IsOldVariant = useAppSelector((store) => store.abtest_IsOldVariant);\r\n const abtest_SBSPage25 = useAppSelector((store) => store.abtest_SBSPage25);\r\n //console.log('abtest_SBSPage25: ',abtest_SBSPage25);\r\n\r\n\r\n\r\n useEffect(() => {\r\n\r\n if(SbsActiveTiers.length === 0){\r\n return;\r\n }else{\r\n //remove URL param: plugins & skus on page load\r\n let queryString = GetQueryWithNoParams([\"plugins\",\"skus\"]);\r\n\r\n const urlLink = getQueryString()['scroll'];\r\n if(urlLink !== undefined && urlLink !== null && urlLink !== '')\r\n document.getElementById(urlLink)?.scrollIntoView();\r\n\r\n if(queryString.length > 0){\r\n queryString = \"?\" + queryString;\r\n }\r\n window.history.replaceState({}, '', window.location.protocol + '//' + window.location.host + window.location.pathname + queryString);\r\n }\r\n\r\n //----logic to top banner that is created from querystring param: skus OR plugins----\r\n // queryString :?skus=75 --> top banner :\"AudioTrack is available in both Waves Essential and Waves Ultimate\"\r\n // queryString :?skus=75_819_--> top banner :\"The plugins you want to access are available in Waves Ultimate\"\r\n // queryString :?plugins=ORVS_ --> top banner :\"OVox Vocal ReSynthesis is available in Waves Ultimate\"\r\n // queryString :?plugins=STAS_ORVS_--> top banner :\"The plugins you want to access are available in Waves Ultimate\"\r\n //more info: https://wavesaudio.atlassian.net/browse/DSWEB-2666\r\n\r\n let alertSentence = \"\";\r\n if(QueryStringsReponse.productName !== null && QueryStringsReponse.productName.length > 0){\r\n alertSentence = QueryStringsReponse.productName + \" is available in\";\r\n }else{\r\n alertSentence = \"The plugins you want to access are available in\"\r\n }\r\n\r\n if(QueryStringsReponse.sbsIncludedIn === 1){\r\n\r\n let tierName = SbsActiveTiers.filter(activeTier => activeTier.itemOrder === 1)[0].tierName;\r\n setSbsAlertValue(alertSentence + \" Waves \" + tierName);\r\n\r\n }else if(QueryStringsReponse.sbsIncludedIn === 2){\r\n\r\n let tierName1 = SbsActiveTiers.filter(activeTier => activeTier.itemOrder === 1)[0].tierName;\r\n let tierName2 = SbsActiveTiers.filter(activeTier => activeTier.itemOrder === 2)[0].tierName;\r\n setSbsAlertValue(alertSentence + \" both Waves \" + tierName2 + \" & \" + tierName1);\r\n }\r\n\r\n }, [SbsActiveTiers ,QueryStringsReponse]);\r\n\r\n\r\n\r\n return (\r\n
    \r\n\r\n\r\n {sbsAlertValue.length > 0 &&\r\n
    \r\n\r\n {(QueryStringsReponse.productName === null\r\n || QueryStringsReponse.productName.length === 0)\r\n &&
    }\r\n\r\n {(QueryStringsReponse.productName !== null\r\n && QueryStringsReponse.productName.length > 0)\r\n &&\r\n {\"image}\r\n\r\n
    \r\n {sbsAlertValue}\r\n
    \r\n \r\n
    \r\n }\r\n {\r\n MainBannerStyle === 'old' && \r\n }\r\n {\r\n MainBannerStyle === 'new' && !IsPriceDifferent && \r\n }\r\n {\r\n MainBannerStyle === 'new' && IsPriceDifferent && \r\n }\r\n\r\n {/* Mobile border */}\r\n {/*\r\n
    \r\n*/}\r\n\r\n {abtest_IsOldVariant && }\r\n {!abtest_IsOldVariant && abtest_SBSPage25 === abtest_SBSPage25Variants.sideBySide &&\r\n }\r\n {!abtest_IsOldVariant && abtest_SBSPage25 === abtest_SBSPage25Variants.ultimateOnly &&\r\n }\r\n {showPluginsPopup && setShowPluginsPopup(false)}/>}\r\n\r\n\r\n {\r\n IsTwoMonthFreePopupShown && \r\n }\r\n\r\n\r\n \r\n
    \r\n\r\n );\r\n};\r\n\r\nexport default App;\r\n\r\n","\r\nimport { getHiddenDataString, getIsChina } from \"../../domain/hidden-data-provider\";\r\nimport {getGdprCookie} from \"../gdpr/domain/gdpr-provider\";\r\n\r\nexport default class YotpoPreview{\r\n\r\n static Init(yotpoApiKey,skuNum, productImg) {\r\n const gdpr = getGdprCookie();\r\n const GDPRisPerformance = gdpr.IsPerformance;\r\n\r\n\r\n if(getIsChina()){\r\n let elem = document.getElementById('tab-reviews');\r\n if(elem !== null) {\r\n elem.parentNode.removeChild(elem);\r\n return false;\r\n }\r\n }\r\n\r\n //if(window.gdpr && window.gdpr.isPerformance) {\r\n if(GDPRisPerformance) {\r\n //console.log(`1. y otpoApiKey: ${yotpoApiKey} | skuNum: ${skuNum} | productImg: ${productImg} }`);\r\n\r\n let productTitle ='';\r\n const domain = window.location.host;\r\n const productUrl = window.location.href;\r\n //complete sending data if need\r\n if(!yotpoApiKey && document.getElementById('yotpo-api-key'))\r\n yotpoApiKey = document.getElementById('yotpo-api-key').textContent;\r\n\r\n if(!skuNum && document.getElementById('skunumber'))\r\n skuNum = document.getElementById('skunumber').textContent;\r\n\r\n if(!productImg) {\r\n let productImgEl = document.getElementById('PreviewImage');\r\n\r\n if(productImgEl){\r\n productTitle = productImgEl.getAttribute('data-yotpo-title');\r\n }\r\n if(productImgEl && productImgEl.children && productImgEl.children[0]){\r\n productImg = productImgEl.children[0].src;\r\n if(productImg && productImg !== '')\r\n productImg = productImg.split('?')[0];\r\n // console.log(productImg);\r\n }\r\n\r\n }\r\n\r\n //------------------\r\n const yotpoReviews = document.getElementById('yotpo-reviews');\r\n if(yotpoReviews) {\r\n\r\n /*\r\n \r\n */\r\n if(!yotpoReviews.classList.contains('yotpo-widget-instance')) {\r\n yotpoReviews.classList.add('yotpo-widget-instance');\r\n }\r\n\r\n yotpoReviews.setAttribute('data-yotpo-instance-id', getHiddenDataString('yotpo-instance-id'));\r\n yotpoReviews.setAttribute('data-yotpo-product-id', skuNum);\r\n yotpoReviews.setAttribute('data-yotpo-name', productTitle);\r\n yotpoReviews.setAttribute('data-yotpo-url', productUrl);\r\n yotpoReviews.setAttribute('data-yotpo-image-url', productImg);\r\n yotpoReviews.setAttribute('data-appkey', yotpoApiKey);\r\n yotpoReviews.setAttribute('data-domain', domain);\r\n yotpoReviews.classList.remove('hidden');\r\n\r\n /*\r\n yotpoReviews.setAttribute('data-appkey', yotpoApiKey);\r\n yotpoReviews.setAttribute('data-domain', domain);\r\n yotpoReviews.setAttribute('data-product-id', skuNum);\r\n yotpoReviews.setAttribute('data-name', productTitle); // || document.querySelector('h1')?.textContent?.trim()\r\n yotpoReviews.setAttribute('data-url', productUrl);\r\n yotpoReviews.setAttribute('data-image-url', productImg);*/\r\n\r\n // Call Youtpo script\r\n // \r\n window.yotpo_app_key = yotpoApiKey;\r\n (function e1() {\r\n var e = document.createElement('script');\r\n e.type = 'text/javascript';\r\n e.async = true;\r\n e.src = `https://cdn-widgetsrepository.yotpo.com/v1/loader/${yotpoApiKey}`; // \"//staticw2.yotpo.com/\" + yotpoApiKey + \"/widget.js\";\r\n var t = document.getElementsByTagName(\"script\")[0];\r\n t.parentNode.insertBefore(e, t)\r\n })();\r\n }\r\n }\r\n else {\r\n console.log('NOT window.gdpr && window.gdpr.isPerformance');\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n","import { getGdprCookie } from \"../gdpr/domain/gdpr-provider\";\r\nimport { getHiddenDataString } from \"../../domain/hidden-data-provider\";\r\n\r\nexport default class YotpoPreviewList{\r\n\r\n static Init(yotpoEl,yotpoApiKey,skuNum, productImg, productTitle) {\r\n const gdpr = getGdprCookie();\r\n const GDPRisPerformance = gdpr.IsPerformance;\r\n\r\n\r\n //if(window.gdpr && window.gdpr.isPerformance) {\r\n if(GDPRisPerformance) {\r\n //console.log(`X1. yotpoApiKey: ${yotpoApiKey} | skuNum: ${skuNum} | productImg: ${productImg} }`);\r\n\r\n if(!productTitle || productTitle === '')\r\n productTitle =null;\r\n const domain = window.location.host;\r\n const productUrl = window.location.href;\r\n\r\n //------------------\r\n\r\n if(yotpoEl) {\r\n /*\r\n \r\n */\r\n if(!yotpoEl.classList.contains('yotpo-widget-instance')) {\r\n yotpoEl.classList.add('yotpo-widget-instance');\r\n }\r\n\r\n yotpoEl.setAttribute('data-yotpo-instance-id', getHiddenDataString('yotpo-instance-id'));\r\n yotpoEl.setAttribute('data-yotpo-product-id', skuNum);\r\n yotpoEl.setAttribute('data-yotpo-name', productTitle);\r\n yotpoEl.setAttribute('data-yotpo-url', productUrl);\r\n yotpoEl.setAttribute('data-yotpo-image-url', productImg);\r\n yotpoEl.setAttribute('data-appkey', yotpoApiKey);\r\n yotpoEl.setAttribute('data-domain', domain);\r\n yotpoEl.classList.remove('hidden');\r\n\r\n /*\r\n yotpoEl.setAttribute('data-appkey', yotpoApiKey);\r\n yotpoEl.setAttribute('data-domain', domain);\r\n yotpoEl.setAttribute('data-product-id', skuNum);\r\n yotpoEl.setAttribute('data-name', productTitle);\r\n yotpoEl.setAttribute('data-url', productUrl);\r\n yotpoEl.setAttribute('data-image-url', productImg);*/\r\n\r\n\r\n // Call Youtpo script\r\n // \r\n window.yotpo_app_key = yotpoApiKey;\r\n (function e1() {\r\n var e = document.createElement('script');\r\n e.type = 'text/javascript';\r\n e.async = true;\r\n e.src = `https://cdn-widgetsrepository.yotpo.com/v1/loader/${yotpoApiKey}`; // \"//staticw2.yotpo.com/\" + yotpoApiKey + \"/widget.js\";\r\n var t = document.getElementsByTagName(\"script\")[0];\r\n t.parentNode.insertBefore(e, t)\r\n })();\r\n }\r\n }\r\n else {\r\n console.log('NOT window.gdpr && window.gdpr.isPerformance');\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App/App';\r\nimport {Provider} from \"react-redux\";\r\nimport store from \"./DAL/store\"\r\nimport {TABLET_BREAKPOINT_END} from \"../../domain/animations/animations-provider\";\r\nimport YotpoPreview from \"../yotpo-preview/yotpoPreview\";\r\nimport YotpoPreviewList from \"../yotpo-preview/yotpoPreviewList\";\r\nimport { getABTest, sendABTestAnalytics } from '../../domain/abtest/abtest-provider';\r\n\r\n\r\n/**\r\n * entry point\r\n */\r\nexport const init = () => {\r\n const $root = document.getElementById('subscriptions-app');\r\n if (!$root) return;\r\n\r\n // Send 'SBSSideBySide' a/b test only on subscription page\r\n const abtestSBSSideBySide = getABTest('SBSSideBySide');\r\n if(abtestSBSSideBySide && abtestSBSSideBySide.isActive) {\r\n sendABTestAnalytics(abtestSBSSideBySide);\r\n }\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n $root\r\n );\r\n};\r\n\r\n/**\r\n * entry point\r\n */\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n init();\r\n const $yotpo = document.getElementById('yotpo-reviews');\r\n if($yotpo) {\r\n YotpoPreview.Init();\r\n }\r\n\r\n const $yotpoList = document.querySelectorAll('[yotpo-block]') ;\r\n $yotpoList.forEach($yotpoBlock => {\r\n //if(cnt++ > 0)\r\n // return;\r\n if(!$yotpoBlock || !$yotpoBlock.textContent)\r\n return;\r\n\r\n\r\n const yotpoMainWidget:any = $yotpoBlock.getElementsByClassName('yotpo-main-widget');\r\n if(!yotpoMainWidget || !yotpoMainWidget[0])\r\n return;\r\n\r\n const yotpoApiKey = document.getElementById('yotpo-api-key')?.textContent;\r\n const previewImageDiv:any = $yotpoBlock.querySelectorAll('[yotpo-previewimage]');\r\n\r\n let previewImage = null;\r\n let productTitle = null;\r\n if(previewImageDiv && previewImageDiv[0] && previewImageDiv[0].children && previewImageDiv[0].children[0]) {\r\n previewImage = previewImageDiv[0].children[0].src;\r\n if(previewImage && previewImage !== '')\r\n previewImage = previewImage.split('?')[0];\r\n productTitle = previewImageDiv[0].children[0].getAttribute(\"data-yotpo-title\");\r\n }\r\n\r\n const skunumberDiv:any = $yotpoBlock.querySelectorAll('[yotpo-skunumber]');\r\n let skunumber = null;\r\n if(skunumberDiv && skunumberDiv[0] && skunumberDiv[0].textContent)\r\n skunumber = skunumberDiv[0].textContent;\r\n\r\n //console.log(`previewImage:${previewImage}, skunumber:${skunumber}`);\r\n YotpoPreviewList.Init(yotpoMainWidget[0], yotpoApiKey, skunumber, previewImage,productTitle);\r\n });\r\n\r\n});\r\n/**\r\n * On Scroll Event for Explore plan panel on mobile\r\n */\r\ndocument.addEventListener('scroll', () => {\r\n\r\n if(window.screen.width <= TABLET_BREAKPOINT_END){\r\n let codeMirrorContainer = document.getElementById(\"code-mirror-container\");\r\n let explorePlanContainer = document.getElementById(\"explore-plan-container\");\r\n\r\n if(codeMirrorContainer !== null){\r\n const rect = codeMirrorContainer.getBoundingClientRect();\r\n if(rect.top <= 0 && explorePlanContainer !== null && explorePlanContainer.classList.contains(\"hidden\")){\r\n explorePlanContainer.classList.remove(\"hidden\");\r\n }else if(rect.top > 0 && explorePlanContainer !== null && !explorePlanContainer.classList.contains(\"hidden\")){\r\n explorePlanContainer.classList.add(\"hidden\");\r\n }\r\n }\r\n }\r\n\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","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","key","descriptor","e","Symbol","for","d","f","g","h","k","l","m","p","q","r","t","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isBuffer","obj","readFloatLE","slice","isSlowBuffer","_isBuffer","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","this","clear","entry","set","get","has","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","Set","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","data","__data__","size","Uint8Array","WeakMap","array","iteratee","predicate","resIndex","result","value","baseTimes","isArguments","isArray","isIndex","isTypedArray","hasOwnProperty","inherited","isArr","isArg","isBuff","isType","skipIndexes","call","values","offset","baseAssignValue","eq","object","objValue","undefined","copyObject","source","keysIn","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","tag","isFunc","stacked","forEach","subValue","add","props","objectCreate","create","baseCreate","proto","arrayPush","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","baseGetTag","isObjectLike","isFunction","isMasked","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","test","isLength","typedArrayTags","isPrototype","nativeKeys","nativeKeysIn","isProto","Array","func","arrayBuffer","byteLength","root","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","copy","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","exec","lastIndex","symbolProto","symbolValueOf","valueOf","symbol","typedArray","isNew","newValue","getSymbols","getSymbolsIn","coreJsData","freeGlobal","baseGetAllKeys","isKeyable","map","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","Ctor","ctorString","nativeCreate","input","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reIsUint","uid","maskSrcKey","IE_PROTO","assocIndexOf","splice","pop","getMapData","freeProcess","process","nodeUtil","require","types","binding","transform","arg","freeSelf","self","pairs","LARGE_ARRAY_SIZE","CLONE_DEEP_FLAG","other","baseIsArguments","stubFalse","baseIsMap","baseUnary","nodeIsMap","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","baseKeysIn","md5","message","options","encoding","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","s","_blocksize","_digestsize","Error","digestbytes","asBytes","asString","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","number","string","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","objA","objB","compareContext","ret","keysA","keysB","bHasOwnProperty","bind","idx","valueA","valueB","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","definition","o","enumerable","globalThis","window","prop","nmd","paths","children","React","ReactDOM","configurable","writable","Q","Z","L","nn","delete","X","rn","freeze","isFrozen","tn","_","U","O","S","P","M","H","I","R","D","F","E","N","T","C","en","on","Proxy","revocable","revoke","proxy","J","K","from","G","W","B","Reflect","iterator","ownKeys","getOwnPropertyDescriptors","deleteProperty","setPrototypeOf","apply","un","produce","then","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","path","op","$","an","fn","enumerableOnly","symbols","filter","sym","_objectSpread2","target","defineProperties","formatProdErrorMessage","code","$$observable","observable","randomString","substring","split","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","dispatch","action","isPlainObject","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","next","unsubscribe","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","state","hasChanged","nextState","_i","_key","previousStateForKey","nextStateForKey","compose","_len","funcs","reduce","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","middleware","createThunkMiddleware","extraArgument","thunk","withExtraArgument","extendStatics","__extends","__proto__","TypeError","__","__spreadArray","to","il","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","_c","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","MiddlewareArray","_super","args","_this","species","arr","prepend","configureStore","rootReducer","curriedGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","isBoolean","getDefaultMiddleware","_d","_e","_f","devTools","_g","_h","enhancers","baseProto","finalMiddleware","middlewareEnhancer","finalCompose","trace","storeEnhancers","createAction","prepareAction","actionCreator","prepared","payload","meta","error","match","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","createSlice","_reducer","initialState","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState_1","caseReducers","cr","previousState","caseReducer","draft","createReducer","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","min","batch","callback","getBatch","nullListeners","notify","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","first","last","prev","createListenerCollection","notifyNestedSubs","Boolean","tryUnsubscribe","getListeners","document","createElement","useLayoutEffect","useEffect","context","contextValue","useMemo","Context","Provider","assign","useContext","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","_useReducer","useReducer","forceRender","latestSubscriptionCallbackError","useRef","latestSelector","latestStoreState","latestSelectedState","storeState","current","newSelectedState","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","getJSONFromHtml","$el","textContent","json","JSON","parse","ex","useWindowSize","windowSize","setWindowSize","useState","width","height","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","abtest_SBSPage25Variants","PluginSortStatusEnum","getQueryString","search","caseSensitive","toLowerCase","hashes","sections","val","getCookie","cookies","cookie","trim","ABTestTypeEnum","CLIENT_SIDE_LOCAL_STORAGE_NAME","handlePartialMasterVariants","variations","sum","offItems","variant","startsWith","percent","proportion","offItem","round","compareTestsVariants","test1","test2","test1Variations","test2Variations","values1","item","sort","values2","chooseVariation","notRandomNumbers","variation","selected","parseVariations","testVariations","list","variationItemList","initClientSideTests","newClientSideTests","isServer","$data","getElementById","dataItem","codeName","isActive","masterSlotID","slot","testType","started","Client","getTestsFromHTML","savedClientSideTests","savedClientSideTestsStr","storageName","localStorage","getItem","getLocalStorageItem","clientSideTests","savedTests","newTests","updatedTests","savedTest","newTest","findOldTestsThatAppearInNewTests","ifAppear","findNewTestsThankDontAppearInOldTests","masterSlotIDs","regular","masterData","chooseVariations","mergeTests","escapedValue","stringify","setItem","setLocalStorageItem","getABTest","testName","abtests","serverSideTests","urlTests","abtestString","tests","testsArr","testData","getClientSideTestsFromURL","serverSideTestsStr","initServerSideTests","initABTestSystem","urlTest","find","clientSideTest","serverSideTest","_subscriptionsPageData","_imgCdnDomain","_softwareCodesAlerts","_sbsActiveTiers","_softwareCodesReponse","_abtest_SBSPage25","abtest_SBSPage25","abtest_SBSPage25_Enabled","abtestVariant","oldY","sideBySide","ultimateOnly","getABTest_SBSPage25","PageData","SearchFilterKey","ImgCdnDomain","PluginSortStatus","Popular","ShowSortChoices","ShowPluginImageSortIncludesID","PluginViewPosition","IsAnnual","IsPriceDifferent","subscriptionPlans","_subscriptionsPageDat","some","isPriceDifferent","abtest_IsOldVariant","PlanOnMobilePluginsPopup","SoftwareCodesAlerts","SbsActiveTiers","QueryStringsReponse","AnnualPriceDisplayType","IsTwoMonthFreePopupShown","PlanSavePopupShown","PlanCostPopupShown","MainBannerStyle","rootSlice","main","rootActions","useAppDispatch","useAppSelector","useSelector","xmlns","viewBox","fill","title","fillRule","clipRule","className","classes","color","setHeight","style","setStyle","rotationAngle","endsWith","viewPortWidth","viewPortHeight","widthNum","getSVGHeight","isNaN","angle","WebkitTransform","msTransform","xmlnsXlink","xlinkHref","CartSteps","ProductDepartmentEnum","LastPaymentOption","PaymentTabsEnum","CreditCardServiceEnum","CreditCardTabTabsEnum","createControl","initialValue","rules","touched","isValid","sendGAEvent","eventTitle","eventValue","dataLayer","pathname","getHiddenDataBoolean","innerText","getHiddenDataString","requiredArgs","required","toDate","argument","argStr","Date","getTime","console","warn","NaN","formatDistanceLocale","lessThanXSeconds","one","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","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","rest","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","ceil","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","abs","signedYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","formatTimezoneShort","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","unit","lightFormatters","Y","signedWeekYear","weekYear","week","firstWeek","startOfUTCWeekYear","getUTCWeek","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","_localize","timezoneOffset","_originalDate","getTimezoneOffset","originalDate","dateLongFormatter","pattern","timeLongFormatter","dateTimeFormat","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffsetInMilliseconds","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","firstCharacter","longFormatter","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","getGdprDefaultValues","isOptOut","isGdprOptOut","IsMarketing","IsPerformance","ItemModifiedWhen","IsCountryGDPR","getGdprCookie","parsed","SortItems","items","sortPopular","IncludedInPlan","sortIncludes","ProductNameAZ","documentName","ProductNameZA","SetIsAnnual","isAnnual","HidePluginView","StopPropagation","event","stopPropagation","AddToCart","plan","obApi","log","skuNumber","skuPrice","documentUrlPath","ecommerce","currencyCode","products","price","quantity","category","url","lastIndexOf","actionField","sendGAEventAddToCart","skuName","skU_MSRP","href","skuid","accessible","parts","setParts","containsDot","setContainsDot","cents","seCents","isNegative","toLocaleString","Price","tierEndsWith","isStarter","annualPlan","sbsTypeID","tierLowHigh","isPopup","stroke","strokeWidth","cx","cy","TaxIdStatusEnum","countries","countriesMap","country","states","countryID","getCountriesAndStates","countryId","getCountryById","cmsCountryID","stateId","stateID","getStateById","cmsStateID","orderID","serverError","isOk","addressLine1Control","billingAddress","maxlength","addressLine2Control","billingAddress2","countryIdControl","stateIdControl","control","reduxStore","selectedCountryId","selectedCountry","countryHasStates","controlStateId","isBillingStateRequired","cityControl","billingCity","zipCodeControl","billingZipCode","taxIdPopupShown","taxIdControl","taxID","isTaxIdRequired","minlength","isTaxID","taxIDMinLength","getTaxIdMinLength","Infinity","max","taxIDMaxLength","getTaxIdMaxLength","taxIdSelectedStatusControl","taxIDSelectedStatus","NO","taxIdRequired","taxIdSelectedStatus","isTaxIdSelectedStatusRequired","setControl","cloneDeep","controlName","PlanSave","PlanMonthly","PlanAnnual","toFixed","onClick","int_part","trunc","rating","float_part","fixed_float_part","reviews","urlHashHide","urlHash","clickByAttribute","carouselCLick","querySelectorAll","click","gaEventName","gaEventValue","colorClass","timerType","dataClass","dataClassEx","expiredWhenNumber","loadDataFromHtml","timerFromHtml","timerId","sTimer","subscriptionTimer_Obj","dataSaleEndDate","getAttribute","countDownTime","getTimerCounterDataFromHtml","containerRef","localTime","totalSecondsBetween","isExpired","_days","_hours","_minutes","_seconds","days","setDays","setHours","setMinutes","seconds","setSeconds","calcCounterInterval","setInterval","clearInterval","parentElement","classList","ref","PriceDifferent","ToggleStyled","padding","handleSize","handleColor","textRef","btnToogle","setBtnToogle","isToogle","$root","querySelector","translateXHandle","setProperty","translateXText","offsetWidth","checkedPositionClass","isPositionRight","adaText","opacity","evt","_btnToogle","borderRadius","backgroundColor","text","textClasses","textStyles","Plans","StarterPlanAnnual","StarterPlanMonthly","StarterPlan","PremiumPlanAnnual","PremiumPlanMonthly","PremiumPlanSave","PremiumPlan","StarterButtonText","numberOfFreeDays","PremiumButtonText","ShowPluginsPopup","setShowPluginsPopup","borderBottom","margiLeft","tierName","dangerouslySetInnerHTML","__html","tagline","reviewsTotal","marginTop","MOBILE_BREAKPOINT","TABLET_BREAKPOINT_END","DESKTOP_BREAKPOINT","getViewportWidth","documentElement","clientWidth","PluginsSortOptions","OnClickOption","ToggleShowSortOptions","PlansPopup","autoComplete","placeholder","onChange","textIndent","marginRight","PluginLg","eyeIconRef","borderTop","left","top","getBoundingClientRect","product","skuInStoreFrom","isLow","isHigh","thisArg","warnings","fallbackImage","sizesAttribute","invalidARFormat","oversizeImage","lazyLCP","PACKAGE_VERSION","_hasBuffer","_TE","TextDecoder","TextEncoder","b64chs","_fromCC","tab","_mkUriSafe","src","m0","_btoa","btoa","u32","c0","c1","c2","asc","pad","_fromUint8Array","u8a","strs","subarray","cb_utob","re_utob","_encode","encode","utob","gBase64","urlsafe","PLUS_RE","PROTOCOL_STRICT_REGEX","PROTOCOL_REGEX","PROTOCOL_RELATIVE_REGEX","hasProtocol","inputString","opts","acceptRelative","strict","getQuery","parametersString","parameter","parseQuery","parseURL","protocolRelative","defaultProto","_specialProtoMatch","_proto","_pathname","protocol","auth","host","hash","parsePath","hostAndPath","_slicedToArray","_arrayWithHoles","_s","_x","_r","_arr","_n","done","return","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","len","arr2","hint","prim","toPrimitive","res","DOMAIN_REGEX","DPR_QUALITIES","DEFAULT_DPR","DEFAULT_OPTIONS","domain","useHTTPS","includeLibraryParam","urlPrefix","secureURLToken","extractUrl","_ref$url","_ref$useHttps","useHttps","validateRange","isInteger","validateWidthTolerance","widthTolerance","ImgixClient","instance","Constructor","settings","targetWidthsCache","libraryParam","version","protoProps","staticProps","rawPath","params","_sanitizePath","finalParams","_buildParams","_signParams","useCustomEncoder","encoder","customEncoder","queryParams","encodedKey","encodedValue","signatureBase","signature","_path","disablePathEncoding","encodeURI","_buildDPRSrcSet","_buildSrcSetPairs","targetWidthValues","_validateAndDestructu","minWidth","maxWidth","validateAndDestructureOptions","_validateAndDestructu2","widths","customWidths","every","validateWidths","targetWidths","srcset","buildURL","_this2","devicePixelRatios","dpr","validateDevicePixelRatios","targetRatios","disableVariableQuality","validateVariableQuality","variableQualities","validateVariableQualities","qualities","withQuality","_extractUrl","combinedParams","srcsetModifiers","clientOptions","_extractUrl2","buildSrcSet","cache","minW","maxW","cacheKey","resolutions","currentWidth","PARAM_EXPANSION","brightness","contrast","exposure","gamma","highlights","hue","invert","saturation","shaddows","shadows","sharpness","vibrance","blend","border","faces","download","DPI","quality","orientation","blurring","halftone","monotone","pixelate","compactParamKeys","longImgixParams","keysLength","extractClientAndPathComponents","_src$split2","scheme","_rest$split2","_toArray","pathComponents","client","auto","srcOptions","_extractClientAndPath","splitSrc","query","paramsPairs","splitParam","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","construct","_setPrototypeOf","ShouldComponentUpdateHOC","WrappedComponent","_Component","nextProps","onMounted","propsAreEqual","oldProp","newProp","_inherits","Component","ImgixContext","createContext","_mergeProps","destination","newProps","newPropKeys","_Object$entries","_objectEntries","_Object$entries$_i","mergeComponentPropsHOF","contextProps","childProps","PARAMS_EXP_MAP","processPropsHOF","formattedProps","formatSrc","formatProps","formattedImgixParams","compactedParams","collapseImgixParams","imgixParams","includes","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","_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","child","_child$type","childIsReactImgix","_inPicture","imgIdx","ReactImgixWrapped","SourceImpl","_Component3","_this5","sourceRef","_this$props$htmlAttri6","_this$props$htmlAttri7","_this6","_this$props2","_buildSrc2","MapShim","getIndex","class_1","__entries__","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","setTimeout","now","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","timeStamp","throttle","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","position","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","right","vertPad","bottom","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","getHTMLElementContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","rect","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","method","getTypes","allowedTypes","calculations","clientTop","clientLeft","offsetTop","offsetLeft","offsetHeight","scroll","scrollTop","scrollLeft","scrollWidth","scrollHeight","bounds","margin","marginBottom","marginLeft","withContentRect","_class","_temp","subClass","superClass","WithContentRect","_animationFrameID","_resizeObserver","_node","_window","measure","setState","onResize","_handleRef","innerRef","componentDidMount","componentWillUnmount","cancelAnimationFrame","excluded","sourceKeys","measureRef","Measure","BackgroundImpl","_React$Component","prevWidth","prevHeight","nextBounds","nextWidth","nextHeight","propsEqual","__shouldComponentUpdate","_this$props$imgixPara","onLoad","_this$props$className","forcedWidth","forcedHeight","hasDOMDimensions","devicePixelRatio","onRef","searchValue","mid","lo","hi","findClosest","_height2","isReady","commonProps","renderedSrc","fit","backgroundImage","backgroundSize","PluginViewLg","isFlipView","setIsFlipView","viewHeight","setViewHeight","windowWidth","getWindowDimensions","pluginsContainerElement","pluginsContainerPos","relativeTopToPluginsContainer","containerStyle","zIndex","getContainerStyle","thumb","documentPageDescription","PluginsPopupLg","FilteredItems","SortedAndFilteredItems","showFadeBottom","setShowFadeBottom","listInnerRef","onScroll","OnScrollPlugins","PluginMobile","PluginViewMobile","PluginsPopupMobile","searchFilter","planFilter","Popup","popupRef","closeButtonRef","focus","closePopup","useCallback","close","handleEscape","async","canBeClosed","iconWidth","tabIndex","background","removeBackdrop","prevent","preventDefault","bgClass","btnRight","btnTop","iconColor","PluginsPopup","PopUpWidht","overflowY","HideSortOptions","PlansSideBySide","PlansOnlyUltimate","UseMobilePluginsPopup","getLoopItems","slideItemIndex","itemsNumberPerSlide","totalItems","stateItems","getNextPrevSlideItemIndex","total","loop","direction","updated","checkIfVertical","isVerticalDesktop","isVerticalTablet","isVerticalMobile","vw","ifShowButtons","hideButtons","showOnMobile","getDurationPerViewport","desktopDuration","isVertical","slideItemWidth","slideItemHeight","gap","perspective","backfaceVisibility","renderItem","slideData","prevLoopItems","currentLoopItems","currentLeftPos","nextLoopItems","galleryContentRef","galleryAnimationRef","leftButtonRef","rightButtonRef","animationRef","setWidth","body","useWindowResizeObserver","rootStyle","setRootStyle","animatedContentStyle","setAnimatedContentStyle","slideContent","slideIndex","totalSlides","galleryContentWidth","galleryContentHeight","enableAnimation","animationTiming","duration","easing","animating","currentTopPos","xDown","yDown","showButtons","showButtonsOnMobile","setPrevLoopItems","setCurrentLoopItems","setNextLoopItems","setIsVertical","updateButtonsVisibility","toggle","jumpToSlide","$next","changeSlide","shouldAnimate","reject","newSlideItemIndex","prevIndex","nextIndex","newItemIndex","animate","play","nextExists","newItems","$node","setAttribute","firstElementChild","append","resetState","galleryContentRefLocal","cancel","getPropertyValue","removeProperty","getWidth","desktopItemsPerSlide","tableItemsPerSlide","mobileItemsPerSlide","desktopNum","tableNum","mobileNum","getItemsNumberPerSlide","temp","$dItem","remove","jumpToItemIndex","handleTouchStart","touches","clientX","clientY","handleTouchMove","xUp","yUp","xDiff","yDiff","isHorizontalSwipe","allowVerticalScrolling","isArrowsOverflow","arrowsHeightWidthRatio","galleryStaticContentArrowClasses","prevButtonArrow","arrowsColor","galleryStaticContentClasses","galleryRightFadeClasses","nextButtonArrow","SubscriptionSlider","ImageCDNDomain","rx","ry","MainBanner","media","scrollTo","behavior","TitleDescription","isMobile","MainBannerOld","MainBannerPriceDifferent","showPluginsPopup","sbsAlertValue","setSbsAlertValue","queryString","paramNames","URL","URLSearchParams","param","GetQueryWithNoParams","urlLink","scrollIntoView","history","replaceState","alertSentence","productName","sbsIncludedIn","activeTier","itemOrder","tierName1","tierName2","YotpoPreview","yotpoApiKey","skuNum","productImg","GDPRisPerformance","elem","parentNode","removeChild","productTitle","productUrl","productImgEl","yotpoReviews","contains","yotpo_app_key","getElementsByTagName","insertBefore","YotpoPreviewList","yotpoEl","abtestSBSSideBySide","_test","found","master","sendABTestAnalytics","init","Init","$yotpoBlock","yotpoMainWidget","getElementsByClassName","previewImageDiv","previewImage","skunumberDiv","skunumber","screen","codeMirrorContainer","explorePlanContainer"],"sourceRoot":""}