{ "version": 3, "sources": ["../../../../../node_modules/lodash/_assignMergeValue.js", "../../../../../node_modules/lodash/_safeGet.js", "../../../../../node_modules/lodash/toPlainObject.js", "../../../../../node_modules/lodash/_baseMergeDeep.js", "../../../../../node_modules/lodash/_baseMerge.js", "../../../../../node_modules/lodash/_createAssigner.js", "../../../../../node_modules/lodash/merge.js", "../../../../../node_modules/lodash/_arrayEvery.js", "../../../../../node_modules/lodash/_baseEvery.js", "../../../../../node_modules/lodash/every.js", "../../../../../node_modules/moment/moment.js", "../../../../../node_modules/lodash/_castSlice.js", "../../../../../node_modules/lodash/_asciiToArray.js", "../../../../../node_modules/lodash/_unicodeToArray.js", "../../../../../node_modules/lodash/_stringToArray.js", "../../../../../node_modules/lodash/_createCaseFirst.js", "../../../../../node_modules/lodash/upperFirst.js", "../../../../../node_modules/lodash/capitalize.js", "../../../../../node_modules/@qwerty.software/ui-order-form/src/constants.ts", "../../../../../node_modules/env.js", "../../../../../node_modules/shared/utils/unzip/index.js", "../../../../../node_modules/shared/store-manager/middlewares/unzip-pusher-data/index.js", "../../../../../node_modules/shared/store-manager/middlewares/events/store-event-target.ts", "../../../../../node_modules/shared/helpers/singleton.ts", "../../../../../node_modules/shared/store-manager/middlewares/events/index.ts", "../../../../../node_modules/shared/store-manager/sagas.ts", "../../../../../node_modules/shared/utils/is-plain-object.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/hydrators/check-request.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/_register.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/_hydrators.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/constants.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/store/slice.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/store/hydrate-listener.ts", "../../../../../node_modules/@qwerty.software/ab-test/src/component/store/index.ts", "../../../../../node_modules/shared/global-entities/discount/side-effects/index.ts", "../../../../../node_modules/shared/store-manager/core.ts", "../../../../../node_modules/shared/global-entities/ref-to-interact-slice/store.ts", "../../../../../node_modules/shared/global-entities/files-uploader/validators/_build-validator.ts", "../../../../../node_modules/shared/utils/notify/index.ts", "../../../../../node_modules/shared/global-entities/files-uploader/validators/material-extension.ts", "../../../../../node_modules/shared/global-entities/configs/utils/init.ts", "../../../../../node_modules/shared/global-entities/configs/utils/get.ts", "../../../../../node_modules/static/default.json", "../../../../../node_modules/shared/helpers/configs/get-from-configs.js", "../../../../../node_modules/shared/constants/configs.ts", "../../../../../node_modules/shared/constants/auth.js", "../../../../../node_modules/shared/constants/pagesWordsSwitcher.js", "../../../../../node_modules/shared/common/fields-configs.js", "../../../../../node_modules/shared/global-entities/files-uploader/validators/material-size-limit.ts", "../../../../../node_modules/shared/global-entities/files-uploader/validators/index.ts", "../../../../../node_modules/shared/constants/sagas.ts", "../../../../../node_modules/shared/global-entities/files-uploader/definitions.ts", "../../../../../node_modules/shared/global-entities/files-uploader/selectors.ts", "../../../../../node_modules/shared/global-entities/files-uploader/persistor/transforms/aborted.ts", "../../../../../node_modules/shared/global-entities/files-uploader/slice.ts", "../../../../../node_modules/shared/global-entities/discount/definitions.ts", "../../../../../node_modules/shared/global-entities/discount/persistor/transforms/whitelist.ts", "../../../../../node_modules/shared/global-entities/discount/slice.ts", "../../../../../node_modules/shared/helpers/string/convert-string-to-boolean.js", "../../../../../node_modules/shared/utils/storage/storagies/local.js", "../../../../../node_modules/shared/utils/storage/storagies/session.js", "../../../../../node_modules/shared/utils/storage/index.js", "../../../../../node_modules/shared/microservices/sheared/universal-constants.js", "../../../../../node_modules/shared/global-entities/user-data/constants.js", "../../../../../node_modules/shared/constants/persistor.js", "../../../../../node_modules/shared/constants/storage.js", "../../../../../node_modules/shared/global-entities/user-data/reducer.js", "../../../../../node_modules/shared/global-entities/price-data/constants.js", "../../../../../node_modules/shared/global-entities/price-data/reducer.js", "../../../../../node_modules/shared/global-entities/price-data/index.ts", "../../../../../node_modules/shared/global-entities/geo-tag/constants.ts", "../../../../../node_modules/shared/utils/query-string/methods/get-params.js", "../../../../../node_modules/shared/utils/query-string/methods/manipulate-param-without-refresh.js", "../../../../../node_modules/shared/utils/query-string/methods/build.js", "../../../../../node_modules/shared/utils/query-string/methods/make-search-depends-on-env.js", "../../../../../node_modules/shared/utils/query-string/index.js", "../../../../../node_modules/shared/constants/query-params.js", "../../../../../node_modules/shared/global-entities/geo-tag/utils/searchLocalContryCode.ts", "../../../../../node_modules/shared/global-entities/geo-tag/utils/searchLocalIP.ts", "../../../../../node_modules/shared/global-entities/geo-tag/utils/searchLocalGeoTag.ts", "../../../../../node_modules/shared/global-entities/geo-tag/store/types.ts", "../../../../../node_modules/shared/global-entities/geo-tag/store/reducer.ts", "../../../../../node_modules/shared/store-manager/localforage.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/utils/extractCustomVaraibles.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/types.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/initialState.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/constants.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/reducer.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/constants.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/selectors.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/methods/constants.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/methods/open/saga.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/sagas/interactionWithUser.ts", "../../../../../node_modules/@qwerty.software/live-chat/src/store/index.ts", "../../../../../node_modules/shared/utils/http-client/tools/axios.js", "../../../../../node_modules/shared/utils/custom-event/index.js", "../../../../../node_modules/shared/constants/custom-events.js", "../../../../../node_modules/shared/constants/visibility-actions.js", "../../../../../node_modules/shared/utils/global-spinner/index.js", "../../../../../node_modules/shared/utils/http-client/request-handler.js", "../../../../../node_modules/shared/utils/from-url/redesign-referrer.ts", "../../../../../node_modules/shared/utils/from-url/temp-query.ts", "../../../../../node_modules/shared/utils/from-url/a-b-test-referrer.ts", "../../../../../node_modules/shared/utils/from-url/index.ts", "../../../../../node_modules/shared/utils/visitor/index.ts", "../../../../../node_modules/shared/utils/action-tracker/interior-track/store/sagas/track/request.ts", "../../../../../node_modules/shared/utils/action-tracker/interior-track/store/constants.ts", "../../../../../node_modules/shared/utils/action-tracker/interior-track/store/sagas/track/index.ts", "../../../../../node_modules/shared/global-entities/files-uploader/middlewares/reorient-image.ts", "../../../../../node_modules/shared/global-entities/files-uploader/sagas/upload-files/single-file.ts", "../../../../../node_modules/shared/global-entities/files-uploader/sagas/upload-files/index.ts", "../../../../../node_modules/@qwerty.software/currency-switcher/src/store/constants.ts", "../../../../../node_modules/@qwerty.software/currency-switcher/src/store/slice.ts", "../../../../../node_modules/shared/global-entities/bootstrap-data/utils/init.ts", "../../../../../node_modules/shared/global-entities/bootstrap-data/utils/get.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/contexts/constants.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/utils/helpers/session-notify.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/work-type-paper-type.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/work-type.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/paper-type.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/deadline.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/pages-words-switcher.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/spacing.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/additional-features/ai-check-report.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/max-value/pages-slides-spacing-deadline.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/max-value/prodlems-questions-deadline.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/max-value/index.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/academic-level.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/subject.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/quantity-key.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/index.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/order/index.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/ContextPDAdapter.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/selectors.ts", "../../../../../node_modules/shared/global-entities/discount/adapters/async-field.ts", "../../../../../node_modules/shared/global-entities/discount/selectors.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/index.ts", "../../../../../node_modules/@qwerty.software/currency-switcher/src/utils/replace-price-via-currency.ts", "../../../../../node_modules/shared/global-entities/discount/sagas/apply-discount.ts", "../../../../../node_modules/shared/store-manager/index.ts", "../../../../../node_modules/ui/tooltip/src/variant_default/index.tsx", "../../../../../node_modules/ui/tooltip/src/hooks/use-position/index.ts", "../../../../../node_modules/ui/tooltip/src/hooks/use-position/coords.ts", "../../../../../node_modules/ui/tooltip/src/hooks/use-anchor.ts", "../../../../../node_modules/ui/tooltip/src/hooks/use-open.ts", "../../../../../node_modules/ui/tooltip/src/hooks/use-portal.ts", "../../../../../node_modules/ui/tooltip/src/hooks/use-render.ts", "../../../../../node_modules/ui/tooltip/src/variables.module.scss", "../../../../../node_modules/ui/select/src/variant_default/index.tsx", "../../../../../node_modules/ui/select/src/context/hoc.tsx", "../../../../../node_modules/ui/select/src/context/index.tsx", "../../../../../node_modules/ui/select/src/components/select.tsx", "../../../../../node_modules/ui/select/src/variables.module.scss", "../../../../../node_modules/ui/select/src/components/option.tsx", "../../../../../node_modules/ui/select/src/components/optgroup.tsx", "../../../../../node_modules/ui/number-input/src/variant_default/index.tsx", "../../../../../node_modules/ui/number-input/src/context/hoc.tsx", "../../../../../node_modules/ui/number-input/src/context/index.tsx", "../../../../../node_modules/ui/number-input/src/hooks/use-api.ts", "../../../../../node_modules/ui/number-input/src/tools/base-stringify.ts", "../../../../../node_modules/ui/number-input/src/tools/base-parse.ts", "../../../../../node_modules/ui/number-input/src/tools/base-normalize.ts", "../../../../../node_modules/ui/number-input/src/hooks/use-temp-state.ts", "../../../../../node_modules/ui/number-input/src/components/decrease.tsx", "../../../../../node_modules/ui/number-input/src/components/button.tsx", "../../../../../node_modules/shared/ui/_hooks/use-ripple.ts", "../../../../../node_modules/ui/number-input/src/variables.module.scss", "../../../../../node_modules/ui/number-input/src/assets/minus.svg.tsx", "../../../../../node_modules/ui/number-input/src/components/input.tsx", "../../../../../node_modules/ui/number-input/src/components/increase.tsx", "../../../../../node_modules/ui/number-input/src/assets/plus.svg.tsx", "../../../../../node_modules/ui/switcher/src/variant_default/index.tsx", "../../../../../node_modules/ui/switcher/src/context/index.tsx", "../../../../../node_modules/ui/switcher/src/context/hoc.tsx", "../../../../../node_modules/ui/switcher/src/components/flag.tsx", "../../../../../node_modules/ui/switcher/src/variables.module.scss", "../../../../../node_modules/ui/switcher/src/components/label.tsx", "../../../../../node_modules/ui/switcher/src/components/thumb.tsx", "../../../../../node_modules/shared/ui/_hooks/use-ripple.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/templates/default/calculator/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/contexts/form-context/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/templates/_decorator/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/templates/_decorator/configs-context.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/contexts/dictionary-context/index.tsx", "../../../../../node_modules/shared/utils/dictionary/t.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/contexts/dictionary-context/dictionary.ts", "../../../../../node_modules/shared/global-entities/discount/with-discount.tsx", "../../../../../node_modules/shared/store-manager/absrtact-initializer.ts", "../../../../../node_modules/shared/store-manager/initializer.ts", "../../../../../node_modules/shared/global-entities/discount/side-effects/search-param.ts", "../../../../../node_modules/shared/global-entities/files-uploader/with-files-uploader.tsx", "../../../../../node_modules/shared/global-entities/files-uploader/side-effects/notifications.ts", "../../../../../node_modules/shared/global-entities/files-uploader/side-effects/index.ts", "../../../../../node_modules/shared/store-manager/hooks/use-slices.ts", "../../../../../node_modules/shared/utils/notify/configure-notify.tsx", "../../../../../node_modules/shared/common/store-gate.tsx", "../../../../../node_modules/shared/utils/set-design-type-to-storage/index.js", "../../../../../node_modules/shared/hooks/use-store-manager.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/user/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/user/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/usePriceData.ts", "../../../../../node_modules/shared/hooks/useAction.ts", "../../../../../node_modules/shared/global-entities/discount/hooks/use-discount.tsx", "../../../../../node_modules/shared/global-entities/discount/hooks/use-price-activation.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/use-calculate.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/price-data/extract-free-features-from-raw-order.ts", "../../../../../node_modules/shared/global-entities/user-data/hook.ts", "../../../../../node_modules/shared/global-entities/user-data/actions/check.js", "../../../../../node_modules/shared/global-entities/user-data/adapter.js", "../../../../../node_modules/shared/utils/action-tracker/index.ts", "../../../../../node_modules/shared/utils/action-tracker/google-track.ts", "../../../../../node_modules/shared/utils/action-tracker/interior-track/index.ts", "../../../../../node_modules/shared/utils/rt/index.ts", "../../../../../node_modules/shared/utils/first-check-request/index.ts", "../../../../../node_modules/shared/utils/visited-pages/track-main-page.ts", "../../../../../node_modules/shared/utils/visited-pages/index.ts", "../../../../../node_modules/shared/utils/action-tracker/getUserTraficFields.js", "../../../../../node_modules/shared/global-entities/user-data/actions/fingerprint/index.ts", "../../../../../node_modules/shared/global-entities/user-data/actions/fingerprint/toBinary.tsx", "../../../../../node_modules/shared/global-entities/user-data/helpers/toggle-auth-buttons.js", "../../../../../node_modules/shared/constants/data-attrs.js", "../../../../../node_modules/shared/global-entities/user-data/selectors.js", "../../../../../node_modules/@qwerty.software/ui-order-form/src/hooks/use-mark-order-page-as-visited.tsx", "../../../../../node_modules/shared/global-entities/user-data/hooks/useVisitorID.ts", "../../../../../node_modules/shared/global-entities/geo-tag/index.ts", "../../../../../node_modules/shared/utils/cookie/index.js", "../../../../../node_modules/shared/global-entities/geo-tag/tracers/index.ts", "../../../../../node_modules/shared/global-entities/geo-tag/tracers/cloudflare.ts", "../../../../../node_modules/shared/global-entities/geo-tag/store/hooks/geoTag.ts", "../../../../../node_modules/shared/global-entities/geo-tag/store/actions.ts", "../../../../../node_modules/shared/global-entities/geo-tag/store/selectors.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/hooks/use-clear-after-time.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/changed-data-reminder/store/actions.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/step/index.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/sagas/step/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/step/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/utils/sanitizers/number.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/step/utils/go.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/store/slices/step/slice-creator.ts", "../../../../../node_modules/@qwerty.software/chat-bot/src/store/slice.ts", "../../../../../node_modules/@qwerty.software/chat-bot/src/store/definitions.ts", "../../../../../node_modules/@qwerty.software/chat-bot/src/variables.module.scss", "../../../../../node_modules/@qwerty.software/ui-order-form/src/templates/default/calculator/form.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/hooks/use-change-order-by-query.tsx", "../../../../../node_modules/shared/store-manager/providers/query/index.ts", "../../../../../node_modules/shared/store-manager/api/botstrap-data.ts", "../../../../../node_modules/shared/global-entities/bootstrap-data/slice.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/hooks/constants.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/academic-level/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/fieldbox/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/tooltip/index.tsx", "../../../../../node_modules/shared/ui/_responsive/base.tsx", "../../../../../node_modules/shared/ui/_responsive/breakpoints.module.scss", "../../../../../node_modules/shared/ui/_responsive/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/_common/select.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/paper-type/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/deadline/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/deadline/use-deadline-helper.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/deadline/get-deadlines.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/deadline/use-disabled.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/quantity/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/quantity/field.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/_common/number-input/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/_sanitizers/number-input.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/quantity/pages-words-switcher/index.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/components/form-fields/quantity/useHint.ts", "../../../../../node_modules/@qwerty.software/ui-order-form/src/templates/default/calculator/components/calculator-footer.tsx", "../../../../../node_modules/@qwerty.software/ui-order-form/src/hooks/use-copy-order-to-clipboard.tsx", "../../../../../resources/views/sites/homeworkfor-me/microservices-kits/order-calculator/render.tsx"], "sourcesContent": ["var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n", "var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n", "var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n", "var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n", "var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n", "var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n", "/**\n * A specialized version of `_.every` 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 {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n", "var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n", "var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n", "//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n", "var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n", "/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n", "/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n", "var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n", "var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n", "var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n", "var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n", "export const FORM_ID = 'constants://order.formID' as const\nexport const INQUIRY_FORM_ID = 'constants://inquiry.formID' as const\n\nexport const NAME = 'new-order' as const\nexport const ORDER_NAMESPACE = 'new-order' as const", "exports.ENV = 'production'\n\nexports.PORT = 8686\n\nexports.SERVER_URL = 'https://ms-hub.site.supplies'\n\nexports.PRICE_CALCULATOR_SERVER_URL = 'https://price-calculator-module.site.supplies'\n\nexports.API_URL = 'https://api.speedy.company/'\n\nexports.API_PROXY_URL = '/api/'\n\nexports.USE_HOST = false\n\nexports.PRICE_CALCULATOR_LOGGER = false\n\nexports.FETCH_GENERAL_CONFIGS_URL = 'https://api.speedy.company/client/configs/LAKSJHdASKLDFJLAljsaf897234hlafsf1LSf'\n\nexports.CLICK_JACKING_DEFENSE = true\n\nexports.ENABLE_PT = false\n", "import pako from 'pako'\n\nconst unzip = (data) => {\n const compressedData = atob(data)\n // eslint-disable-next-line\n const unziped = pako.inflate(new Uint8Array(compressedData.split('').map(x => x.charCodeAt(0))))\n // eslint-disable-next-line\n\treturn JSON.parse(String.fromCharCode.apply(null, new Uint16Array(unziped)))\n}\n\nexport default unzip\n", "/* utils general */\nimport unzip from 'utils/unzip'\n\nexport default store => next => action => {\n if (action.data && action.data.event_data && action.data.event_data.format === 'gzip') {\n const modifyedAction = {\n ...action,\n data: {\n ...action.data,\n event_data: {\n ...action.data.event_data,\n action_data: unzip(action.data.event_data.action_data),\n format: 'object',\n },\n },\n }\n\n return next(modifyedAction)\n }\n\n return next(action)\n}\n", "class StoreEventTarget extends EventTarget {\n protected listeners: { [key: string]: (EventListener)[] } = {}\n\n public addEventListener = (type: string, listener: EventListener, ...args: any) => {\n if (!this.listeners[type]) {\n this.listeners[type] = []\n }\n\n this.listeners[type].push(listener)\n\n super.addEventListener(type, listener, ...args)\n }\n\n public removeEventListener = (type: string, listener: EventListener, ...args: any) => {\n if (!this.listeners[type]) {\n return\n }\n\n const index = this.listeners[type].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[type].splice(index, 1)\n }\n\n if (this.listeners[type].length === 0) {\n delete this.listeners[type]\n }\n\n super.removeEventListener(type, listener, ...args)\n }\n\n public getEventListeners = (type?: string) => {\n if (type && this.listeners[type] && this.listeners[type].length === 0) {\n delete this.listeners[type]\n }\n\n if (!type) {\n return this.listeners\n }\n\n return this.listeners[type]\n }\n\n public dispatchEvent = (event: Event) => {\n const listeners = this.getEventListeners(event.type)\n\n if (!listeners || listeners.length === 0) {\n return false\n }\n\n return super.dispatchEvent(event)\n }\n}\n\nexport default StoreEventTarget", "/**\n * Singleton factory\n * \n * Using for bind factory returned value to global scope on first call\n * and only return if value exists\n * \n * @warning Use as specific as possible key for avoid collisions (hashes, uuids, etc.) between different values,\n * but declare as string literal for avoid collisions with other singletons.\n * \n * @param key - global variable name\n * @param factory - factory function\n * @param onceCallback - callback for first call\n * \n * @returns factory returned value\n * \n * P.S.: helper writed for easy typing.\n */\nexport default function singleton unknown = () => unknown>(\n key: string,\n factory: TFactory,\n options?: {\n onCreate?: (factory: ReturnType) => void\n }\n): ReturnType {\n const { onCreate: handleCreate } = options ?? {}\n\n // @ts-ignore\n if (!window[key]) {\n // @ts-ignore\n window[key] = factory()\n\n if (handleCreate) {\n handleCreate(window[key])\n }\n }\n\n // @ts-ignore\n return window[key]\n}", "import StoreEventTarget from './store-event-target'\n\nimport singleton from 'helpers/singleton'\n\nexport const storeEvents = singleton('590912f1-8b25-40aa-b922-250960cbbeb2', () => new StoreEventTarget())\n\nconst eventsMiddlware = store => next => action => {\n storeEvents.dispatchEvent(new CustomEvent(action.type, { detail: action }))\n\n return next(action)\n}\n\nexport default eventsMiddlware", "import createSagaMiddleware from 'redux-saga'\n// @ts-ignore\nconst sagaMiddleware = window.sagaMiddleware ?? createSagaMiddleware()\n// @ts-ignore\nwindow.sagaMiddleware = sagaMiddleware\n\nexport default sagaMiddleware\n", "interface IsPlainObject {\n (value: any): boolean\n}\n\nconst isPlainObject: IsPlainObject = value => value?.constructor === Object\n\nexport default isPlainObject", "import { RegisteredAbTests } from '../_register'\n\nimport isPlainObject from 'utils/is-plain-object'\n\nimport type { Hydrator, ABTestsMap } from '../types'\n\nconst hydrateCheckRequest = (register: RegisteredAbTests[]): Hydrator => (payload: any) => {\n if (!isPlainObject(payload)) {\n return {} as ABTestsMap\n }\n\n return register.reduce((tests, testName) => {\n if (typeof payload[testName] !== 'undefined') {\n tests[testName] = payload[testName]\n }\n\n return tests\n }, {} as ABTestsMap)\n}\n\nexport default hydrateCheckRequest", "export enum RegisteredAbTests {\n IPHONE_BANNER = 'showIphoneBanner',\n ORDER_BOT = 'chatbotOrderFormAlternative',\n INC_PRICES = 'incPrices',\n NEW_ORDER_FORM = 'newOrderForm',\n}\n", "import hydrateCheckRequest from './hydrators/check-request'\n\nimport { RegisteredAbTests } from './_register'\n\nimport type { Hydrator } from './types'\n\nexport const hydrators: Array = [\n hydrateCheckRequest(Object.values(RegisteredAbTests)),\n]\n\nexport default hydrators", "import { v4 as uuid } from 'uuid'\n\nimport { RegisteredAbTests } from './_register'\n\nimport type { ABTests, ABTestsState } from './types.d'\n\nexport const NAME = 'ab-tests' as const\n\nexport const AB_TESTS_LIST = Object.values(RegisteredAbTests)\n\nexport const INITIAL_AB_TESTS: ABTests = AB_TESTS_LIST.reduce((acc, testName) => {\n acc[testName] = {\n name: testName,\n group: undefined,\n hydrated: false,\n rayId: uuid(),\n }\n\n return acc\n}, {} as ABTests)\n\nexport const INITIAL_STATE: ABTestsState = {\n abTests: INITIAL_AB_TESTS,\n checkRequestReady: false,\n}", "import * as RTK from '@reduxjs/toolkit'\n\nimport { RegisteredAbTests } from '../_register'\nimport hydrators from '../_hydrators'\n\nimport { NAME, INITIAL_STATE } from '../constants'\nimport type { State, ABTestsMap } from '../types.d'\n\nexport const slice = RTK.createSlice({\n name: NAME,\n initialState: INITIAL_STATE,\n reducers: {\n hydrate(state, action: RTK.PayloadAction) {\n state.checkRequestReady = true\n Object.entries(hydrate(action.payload)).forEach(([testName, group]) => {\n state.abTests[testName as RegisteredAbTests].group = group\n state.abTests[testName as RegisteredAbTests].hydrated = true\n })\n },\n }\n})\n\nexport const abTestsSlice = slice\n\nconst GET_STATE = (state: State) => state[NAME]\n\nexport const AB_TEST = (testName: RegisteredAbTests) => RTK.createSelector(GET_STATE, state => state.abTests[testName])\nexport const AB_TESTS = RTK.createSelector(GET_STATE, state => state.abTests)\nexport const CHECK_REQUEST_READY = RTK.createSelector(GET_STATE, state => state.checkRequestReady)\n\nexport function hydrate(payload: unknown) {\n return hydrators.reduce((acc, hydrator) => {\n const testsMap: ABTestsMap = hydrator(payload)\n\n for (const testName in testsMap) {\n acc[testName as RegisteredAbTests] = testsMap[testName]\n }\n\n return acc\n }, {} as ABTestsMap)\n}\n\n", "import { createListenerMiddleware } from '@reduxjs/toolkit'\n\nimport { slice, AB_TESTS } from './slice'\n\nimport type { State, ABTest } from '../types.d'\n\nconst ATTRS_DOMAIN = 'data-ab-test'\nconst CONTAINER_ATTR = 'data-ab-tests-container'\n\nconst listener = createListenerMiddleware()\n\nlistener.startListening({\n actionCreator: slice.actions.hydrate,\n effect(_, { getState }) {\n const state = getState() as State\n const abTests = AB_TESTS(state)\n\n const container = getContainer()\n\n Object.values(abTests).forEach((test) => {\n setTest(container, test)\n })\n },\n})\n\nexport const abTestsHydarateListener = listener\n\nfunction getContainer() {\n const existsRoot = document.body.querySelector(`div[${CONTAINER_ATTR}]`)\n\n const container = existsRoot || document.createElement('div')\n\n container.setAttribute(CONTAINER_ATTR, '')\n container.setAttribute('hidden', '')\n\n if (!existsRoot) {\n document.body.prepend(container)\n }\n\n return container\n}\n\nfunction setTest(container: HTMLDivElement, test: ABTest) {\n const existsNode = document.body.querySelector(`div[${ATTRS_DOMAIN}-ray-id=\"${test.rayId}\"]`)\n\n if (!test.hydrated) {\n return\n }\n\n const node = existsNode || document.createElement('div')\n\n const group = typeof test.group === 'string' ? test.group : JSON.stringify(test.group)\n\n node.setAttribute(ATTRS_DOMAIN, '')\n node.setAttribute(`${ATTRS_DOMAIN}-ray-id`, test.rayId)\n node.setAttribute('data-name', test.name)\n node.setAttribute('data-group', group)\n\n if (!existsNode) {\n container.append(node)\n }\n}", "export {\n abTestsSlice,\n\n AB_TEST,\n AB_TESTS,\n} from './slice'\nexport { abTestsHydarateListener } from './hydrate-listener'", "import { createListenerMiddleware } from '@reduxjs/toolkit'\n\nimport singleton from 'helpers/singleton'\n\nconst SINGLETON_ID = 'ab30ee82-f520-4686-8e37-29af85f87b21'\n\nexport const discountListener = singleton(SINGLETON_ID, () => createListenerMiddleware())", "import {\n // ENV,\n PRICE_CALCULATOR_SERVER_URL,\n\n // @ts-ignore\n} from 'env'\n\nimport { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\n\n// import { promiseBaseQuery } from './api/base-query-functions'\n\nimport { configureStore, combineReducers, Store, Middleware, Reducer, ReducersMapObject, Slice } from '@reduxjs/toolkit'\nimport { persistStore, persistReducer, Persistor, PersistConfig } from 'redux-persist'\n\n// import { routerReducer } from 'react-router-redux'\n\n// import _throttle from 'lodash/throttle'\n// import _isEqual from 'lodash/isEqual'\n\nimport unzipPusherData from '@qwerty.software/store-manager/middlewares/unzip-pusher-data'\nimport events from '@qwerty.software/store-manager/middlewares/events'\nimport sagas from '@qwerty.software/store-manager/sagas'\n\nimport { abTestsSlice, abTestsHydarateListener } from '@qwerty.software/ab-test/src/component/store'\nimport { discountListener } from 'global-entities/discount/side-effects'\n// import { filesUploaderListener } from 'global-entities/files-uploader/side-effects'\n\nimport type { IStoreManager } from './types'\nimport type { ICurrencySwitcherState, ResponseData } from './api/price-calculator-api/exchange-rates'\n\n// const DEV_TOOLS = ENV !== 'production'\n\nabstract class StoreManager implements IStoreManager {\n public store!: Store\n\n public persistor!: Persistor\n\n public persist!: () => void\n\n // Create an object which maps keys to reducers\n private reducers!: ReducersMapObject\n\n // Create the initial combinedReducer\n private combinedReducer!: ReturnType\n\n // An array which is used to delete state keys when reducers are removed\n private keysToRemove: string[] = []\n\n // static APIv1 = createApi({\n // reducerPath: '[APIv1]',\n // baseQuery: fetchBaseQuery({\n // baseUrl: `/api`,\n // }),\n // endpoints: () => ({}),\n // })\n\n static PriceCalculatorApiV1 = createApi({\n reducerPath: '[PriceCalculatorApiV1]',\n baseQuery: fetchBaseQuery({\n baseUrl: PRICE_CALCULATOR_SERVER_URL,\n }),\n endpoints: (builder) => ({\n rates: builder.query({\n query: () => ({\n url: `/exchange-rates`,\n method: 'GET',\n params: {},\n }),\n transformResponse: (response: ResponseData) => ({\n rates: response?.rates,\n timestamp: response?.timestamp,\n }),\n providesTags: ['CurrencyRate'],\n }),\n }),\n tagTypes: ['CurrencyRate'],\n })\n\n // static Promises = createApi({\n // reducerPath: '[Promises]',\n // baseQuery: promiseBaseQuery(),\n // endpoints: () => ({}),\n // })\n\n protected constructor(\n reducers: ReducersMapObject = {},\n ) {\n this.reducers = {\n // api reducers\n // [StoreManager.APIv1.reducerPath]: StoreManager.APIv1.reducer,\n [StoreManager.PriceCalculatorApiV1.reducerPath]: StoreManager.PriceCalculatorApiV1.reducer,\n // [StoreManager.Promises.reducerPath]: StoreManager.Promises.reducer,\n\n [abTestsSlice.name]: abTestsSlice.reducer,\n\n // @ts-ignore\n // routing: routerReducer,\n\n ...reducers,\n }\n this.combinedReducer = combineReducers(this.reducers)\n\n this.store = configureStore({\n // devTools: DEV_TOOLS,\n\n reducer: this.reduce,\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({\n serializableCheck: false,\n immutableCheck: false,\n })\n .concat([\n unzipPusherData,\n events,\n sagas,\n\n // api middlewares\n // StoreManager.APIv1.middleware,\n StoreManager.PriceCalculatorApiV1.middleware,\n // StoreManager.Promises.middleware,\n\n // side effects middlewares\n abTestsHydarateListener.middleware,\n discountListener.middleware,\n // filesUploaderListener.middleware,\n ]),\n })\n\n this.persistor = persistStore(this.store)\n\n this.persist = this.persistor.persist\n // this.persist = _throttle(this.persistor.persist, 500, {\n // leading: false,\n // trailing: true,\n // })\n }\n\n // The root reducer function exposed by this object\n // This will be passed to the store\n protected reduce = (state, action) => {\n // If any reducers have been removed, clean up their state first\n if (this.keysToRemove.length > 0) {\n state = { ...state }\n for (const key of this.keysToRemove) {\n delete state[key]\n }\n this.keysToRemove = []\n }\n\n // Delegate to the combined reducer\n return this.combinedReducer(state, action)\n }\n\n public addReducer = (key: string, reducer: Reducer, persistConfig?: PersistConfig) => {\n if (persistConfig) {\n reducer = persistReducer(\n persistConfig,\n reducer,\n )\n }\n\n if (!key || this.reducers[key]) {\n return\n }\n\n // Add the reducer to the reducer mapping\n this.reducers[key] = reducer\n\n // Generate a new combined reducer\n this.combinedReducer = combineReducers(this.reducers)\n\n this.store.replaceReducer(this.reduce)\n\n this.persist()\n }\n\n // Removes a reducer with the specified key\n public removeReducer = (key: string) => {\n if (!key || !this.reducers[key]) {\n return\n }\n\n // Remove it from the reducer mapping\n delete this.reducers[key]\n\n // Add the key to the list of keys to clean up\n this.keysToRemove.push(key)\n\n // Generate a new combined reducer\n this.combinedReducer = combineReducers(this.reducers)\n\n this.store.replaceReducer(this.reduce)\n\n this.persist()\n }\n\n public addReducers = (reducers, persistConfig?: PersistConfig) => {\n for (const key in reducers) {\n this.addReducer(key, reducers[key], persistConfig)\n }\n }\n\n public removeReducers = (keys) => {\n for (const key of keys) {\n this.removeReducer(key)\n }\n }\n\n public addSlice = (slice: Slice, persistConfig?: PersistConfig) => {\n this.addReducer(slice.name, slice.reducer, persistConfig)\n }\n\n public removeSlice = (slice: Slice | string) => {\n this.removeReducer(typeof slice === 'string' ? slice : slice.name)\n }\n\n public addSlices = (slices: (Slice | [slice: Slice, persistConfig?: PersistConfig])[]) => {\n for (const _slice of slices) {\n const [slice, persistConfig] = Array.isArray(_slice) ? _slice : [_slice]\n\n this.addSlice(slice, persistConfig)\n }\n }\n\n public removeSlices = (slices: (Slice | string)[]) => {\n for (const slice of slices) {\n this.removeSlice(slice)\n }\n }\n}\n\nexport default StoreManager\n", "import { createSlice, PayloadAction, } from '@reduxjs/toolkit'\nimport type { ReactNode } from 'react'\n\nexport interface State {\n cookiePolicyNode: ReactNode | null\n}\n\nconst initialState: State = {\n cookiePolicyNode: null\n}\n\nexport const slice = createSlice({\n name: `slice://global-entities/ref-to-interact`,\n initialState,\n reducers: {\n setCookiePolicyNode(state, action: PayloadAction) {\n state.cookiePolicyNode = action.payload\n },\n },\n})\n\nexport const { setCookiePolicyNode } = slice.actions\n\ntype Store = {\n [slice.name]: State\n}\n\nexport const COOKIE_POLICY_NODE = (state: Store) => state[slice.name]?.cookiePolicyNode\n", "import { Validator } from '../definitions'\n\nfunction buildValidator(\n name: Validator['name'],\n fn: Omit,\n Error: Validator['Error'],\n): Validator {\n Object.defineProperty(fn, 'name', {\n value: name,\n\n configurable: false,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(fn, 'Error', {\n value: Error,\n\n configurable: false,\n enumerable: false,\n writable: false,\n })\n\n return fn as Validator\n}\n\nexport default buildValidator", "import { SharedProps, enqueueSnackbar } from 'notistack'\n\nconst DEFAULT_OPTIONS: SharedProps = {\n anchorOrigin: { horizontal: 'left', vertical: 'bottom' },\n autoHideDuration: 3000,\n}\n\nconst notify = {\n success: (messageText: string, options?: SharedProps) => {\n try {\n enqueueSnackbar && enqueueSnackbar(messageText, { // enqueueSnackbar && - this fix files uploader bug with uploaded file with error on page load\n variant: 'success',\n autoHideDuration: options?.autoHideDuration || DEFAULT_OPTIONS.autoHideDuration,\n anchorOrigin: options?.anchorOrigin || DEFAULT_OPTIONS.anchorOrigin\n })\n } catch (error) {\n console.error(error)\n }\n },\n error: (messageText: string, options?: SharedProps) => {\n try {\n enqueueSnackbar && enqueueSnackbar(messageText, {\n variant: 'error',\n autoHideDuration: options?.autoHideDuration || DEFAULT_OPTIONS.autoHideDuration,\n anchorOrigin: options?.anchorOrigin || DEFAULT_OPTIONS.anchorOrigin\n })\n } catch (error) {\n console.error(error)\n }\n },\n warning: (messageText: string, options?: SharedProps) => {\n try {\n enqueueSnackbar && enqueueSnackbar(messageText, {\n variant: 'warning',\n autoHideDuration: options?.autoHideDuration || DEFAULT_OPTIONS.autoHideDuration,\n anchorOrigin: options?.anchorOrigin || DEFAULT_OPTIONS.anchorOrigin\n })\n } catch (error) {\n console.error(error)\n }\n },\n info: (messageText: string, options?: SharedProps) => {\n try {\n enqueueSnackbar && enqueueSnackbar(messageText, {\n variant: 'info',\n autoHideDuration: options?.autoHideDuration || DEFAULT_OPTIONS.autoHideDuration,\n anchorOrigin: options?.anchorOrigin || DEFAULT_OPTIONS.anchorOrigin\n })\n } catch (error) {\n console.error(error)\n }\n },\n}\n\n// @ts-ignore\nwindow.toastr = notify\n\nexport default notify\n", "import buildValidator from './_build-validator'\nimport type { ValidationError } from './_error-interface'\n\nimport notify from 'utils/notify'\n\nimport { FileMeta } from '../definitions'\n\nclass NotAllowedExtensionError extends Error implements ValidationError {\n protected fileName: string\n\n constructor({ file }: FileMeta) {\n super('Security reasons error')\n\n this.fileName = file.name\n }\n\n notify() {\n // notify.error(`'${this.fileName}' was not uploaded due to security reasons. Please contact support staff.`)\n }\n}\n\nconst materialExtension = buildValidator(\n 'material-extension',\n (fileMeta: FileMeta) => {\n const ext = fileext(fileMeta.file.name)\n const allowedExtensions = getAllowedExtensions()\n\n if (ext && !allowedExtensions.includes(ext)) {\n notify.error(`'${fileMeta.file.name}' was not uploaded due to security reasons. Please contact support staff.`)\n throw new NotAllowedExtensionError(fileMeta)\n }\n },\n NotAllowedExtensionError,\n)\n\nexport default materialExtension\n\nfunction fileext(fileName: string) {\n return fileName.split('.')[fileName.split('.').length - 1]\n}\n\nfunction getAllowedExtensions() {\n return [\n 'docx',\n 'doc',\n 'txt',\n 'pdf',\n 'sav',\n 'scv',\n 'xlsx',\n 'xls',\n 'pptx',\n 'ppt',\n 'png',\n 'jpg',\n 'webp',\n 'jpeg',\n 'mp4',\n 'pub',\n 'rar',\n 'zip',\n 'rtf',\n ]\n}", "import type { Configs as ConfigsMapType } from 'common/configs/types'\n\nexport const KEY = 'MICROSERVICES_CONFIGS' as const\n\ndeclare global {\n interface Window {\n MICROSERVICES_INNER_CONFIGS?: ConfigsMapType\n MICROSERVICES_OUTER_CONFIGS?: ConfigsMapType\n\n [KEY]?: ConfigsMapType\n }\n}\n\nexport const initConfigs = (...args: Array) => {\n const prevConfigs = window[KEY] || {}\n\n const innerConfigs = window.MICROSERVICES_INNER_CONFIGS || {}\n const outerConfigs = window.MICROSERVICES_OUTER_CONFIGS || {}\n\n const configs = Object.assign({}, innerConfigs, outerConfigs, prevConfigs, ...args) as ConfigsMapType\n\n window[KEY] = configs\n}\n\nexport type { Configs as ConfigsMapType } from 'common/configs/types'", "import { KEY } from './init'\n\nexport const getConfigs = () => {\n if (!window[KEY]) {\n throw new Error('Configs are not initialized')\n }\n\n return window[KEY]\n}", "{\n \"calculatorConfigs\": \"default\",\n \"orderFormConfigs\": \"default\",\n \"inquiryFormConfigs\": \"default\",\n \"orderInfoConfigs\": \"default\",\n \"defaultCalculatorType\": \"vertical\",\n \"inquiryFormSidebarType\": \"default\",\n \"defaultEmailsCollectorType\": \"default\",\n \"livechatOptions\": {\n \"license\": 5580561,\n \"chat_between_groups\": false\n }\n}\n", "import { getConfigs } from 'global-entities/configs/utils/get'\n\n/* helpers general */\n// import getDomain from 'helpers/domain/get-domain'\n// import getInnerConfigs from 'helpers/configs/get-inner-configs'\n// import getOuterConfigs from 'helpers/configs/get-outer-configs'\n// import getContextConfigs from 'helpers/configs/get-context-configs'\n\n/* configs mh default */\nimport defaultConfigs from 'static/default.json'\n\nexport default (key) => {\n // if (!window.hasOwnProperty('globalNumberOfCallsForGetFromConfigs')) {\n // window.globalNumberOfCallsForGetFromConfigs = 0\n // }\n\n // window.globalNumberOfCallsForGetFromConfigs++\n\n const configs = getConfigs()\n\n // if (!Object.keys(configs).length && window.globalNumberOfCallsForGetFromConfigs === 1) {\n // // eslint-disable-next-line no-console\n // console.warn(`Can't find configs for '${getDomain()}' project!`)\n // return\n // }\n\n if (!key) {\n return configs\n }\n\n if (!configs[key]) {\n // console.warn(`[FALLBACK_TO_DEFAULT] used ${value} instead of \"${key}\" of \"${getDomain()}\"`);\n return defaultConfigs[key] || undefined\n }\n\n return configs[key]\n}\n", "export const PROJECT_ID = 'id' as const\nexport const PROJECT_DOMAIN = 'domain' as const\nexport const PROJECT_FAMILY = 'family' as const\nexport const PROJECT_PARENT = 'parent' as const\n\nexport const ORDER_PAGE_PATH = 'orderPagePath' as const\n\nexport const IS_ALIAS_DOMAIN = 'isAliasDomain' as const\nexport const SHARE_LOCAL_STORAGE_TO = 'shareLocalStorageTo' as const\n\nexport const ORDER_DATA_DEFAULTS = 'orderDataDefaults' as const\nexport const ORDER_DATA_DISABLED_PERSISTOR = 'orderDataDisabledPersistor' as const\n\nexport const CALCULATOR_CONFIGS = 'calculatorConfigs' as const\n\nexport const HIDE_JINP = 'hideNewJinp' as const\n\nexport const ORDER_FORM_CONFIGS = 'orderFormConfigs' as const\nexport const ORDER_FORM_BOTTOMBAR_TYPE = 'orderFormBottombarType' as const\nexport const ORDER_FORM_IS_AVAILABLE_ONLY_FOR_AUTHORIZED_USER = 'orderFormIsAvailableOnlyForAuthorizedUser' as const\n\nexport const INQUIRY_FORM_CONFIGS = 'inquiryFormConfigs' as const\nexport const INQUIRY_FORM_SIDEBAR_TYPE = 'inquiryFormSidebarType' as const\nexport const INQUIRY_FORM_BOTTOMBAR_TYPE = 'inquiryFormBottombarType' as const\nexport const INQUIRY_PAGE_PATH = 'inquiryPagePath' as const\n\nexport const ORDER_INFO_CONFIGS = 'orderInfoConfigs' as const\n\nexport const DELIVER_DATA_FROM_CALCULATOR_TO_ORDER_FORM_VIA_QUERY_STRING = 'deliverDataFromCalculatorToOrderFormViaQueryString' as const\n\nexport const SHOULD_DISABLE_USER_CHECK_REQUEST = 'shouldDisableUserCheckRequest' as const\n\nexport const SHOULD_REDIRECT_TO_PARENT_SITE = 'shouldRedirectToParentSite' as const\nexport const PARENT_SITE_URL = 'parentSiteUrl' as const\nexport const ADDITIONAL_QUERY_PARAMS_TO_PARENT_SITE = 'additionalQueryParamsToParentSite' as const\n\nexport const SHOULD_USE_SPECIFIC_API = 'shouldUseSpecificApi' as const\nexport const SPECIFIC_API_URL = 'specificApiUrl' as const\n\nexport const DASHBOARD_SUBDOMAIN = 'dashboardSubdomain'\n\nexport const LIVECHAT_OPTIONS = 'livechatOptions' as const\n\nexport const SHOULD_DISABLE_LOAD_ALWAYS_SERVICES = 'shouldDisableLoadAlwaysServices' as const\n\nexport const SHOULD_DISABLE_RATE_US = 'shouldDisableRateUs' as const\n\nexport const IS_NEW_SPEEDYPAPER_DESIGN = 'newSpeedyDesign' as const\n\nexport const TRACK_TOOL = 'trackTool' as const\n\nexport const CASHBACK_PERCENT_IN_CALCULATOR = 'cashback' as const //LA-2461 !!!!\nexport const CALCULATOR_QUERY_FLOW = 'calculatorQueryFlow' as const\n\nexport const WITH_RECAPTCHA = 'withRecaptcha' as const\n\nexport const ORDER_FORM_BOT_SWITCHER_FORCE_ENABLED = 'orderFormBotSwitcherForceEnabled' as const\nexport const ORDER_FORM_BOT_SWITCHER_VARIANT = 'orderFormBotSwitcherVariant' as const\n\nexport const INC_PRICES_AB_TEST_VERSION = 'incPricesAbTestVersion' as const\n\nexport const FORCE_HIDE_TURNITIN_UPSALE = 'forceHideTurnitinUpsale' as const", "export const USER_DATA_EXPIRES_TIMEOUT = 7.2e+6 // 2 hours, same with api\n\nexport const AUTHORISATION_STATUSES = {\n authorized: 'AUTHORIZED',\n unauthorized: 'UNAUTHORIZED',\n}\n\nexport const SIGNUP = {\n authType: 'signup',\n aliasedAuthTypes: ['register'],\n route: 'register',\n authFormStep: 1,\n orderFormStep: 2,\n}\n\nexport const SIGNIN = {\n authType: 'signin',\n aliasedAuthTypes: ['login'],\n route: 'login',\n authFormStep: 2,\n orderFormStep: 1,\n}\n\nexport const FORGOT = {\n authType: 'forgot',\n route: 'password/forgot',\n authFormStep: 2,\n}\n\nexport const RESET = {\n authType: 'reset',\n route: 'password/reset',\n}\n\nexport const FACEBOOK = {\n authType: 'facebook',\n}\n\nexport const GOOGLE = {\n authType: 'google',\n}\n\nexport const APPLE = {\n authType: 'apple',\n}\n\nexport const DASHBOARD = {\n action: 'dashboard',\n}\n\nexport const SIGNOUT = {\n action: 'signout',\n aliasedAuthTypes: ['logout'],\n route: 'logout',\n}\n\nexport const CHECK_TRIGGERED = 'CHECK_TRIGGERED'\nexport const CHECK = {\n action: 'check',\n route: 'check',\n}\n", "export const PAGES = 'pages'\nexport const WORDS = 'words'\nexport const SWITCHER_BUTTONS = [\n PAGES,\n WORDS,\n]\n\nexport const PAGES_INDEX = SWITCHER_BUTTONS.findIndex((button) => button === PAGES)\nexport const WORDS_INDEX = SWITCHER_BUTTONS.findIndex((button) => button === WORDS)\n", "/* helpers general */\nimport getFromConfigs from 'helpers/configs/get-from-configs'\n\n/* constants general */\nimport { ORDER_DATA_DEFAULTS } from 'constants/configs'\nimport { SIGNUP } from 'constants/auth'\n\nimport { PAGES_INDEX } from 'constants/pagesWordsSwitcher'\n\nconst orderDataDefaults = getFromConfigs(ORDER_DATA_DEFAULTS)\n\nexport default {\n authType: {\n name: 'authType',\n defaultValue: (orderDataDefaults && orderDataDefaults.authType) || SIGNUP.authType,\n defaultType: 'string',\n effectsOnOrderDataChange: false,\n },\n\n name: {\n name: 'name',\n defaultValue: '',\n defaultType: 'string',\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n firstName: {\n name: 'firstName',\n defaultValue: '',\n defaultType: 'string',\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n lastName: {\n name: 'lastName',\n defaultValue: '',\n defaultType: 'string',\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n email: {\n name: 'email',\n defaultValue: '',\n defaultType: 'string',\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n phone: {\n name: 'phone',\n defaultValue: '',\n defaultType: 'string',\n effectsOnOrderDataChange: false,\n },\n\n oldPassword: {\n name: 'oldPassword',\n defaultValue: '',\n defaultType: 'string',\n minLength: 6,\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n password: {\n name: 'password',\n defaultValue: '',\n defaultType: 'string',\n minLength: 6,\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n passwordConfirmation: {\n name: 'passwordConfirmation',\n defaultValue: '',\n defaultType: 'string',\n minLength: 6,\n debounceTime: 500,\n effectsOnOrderDataChange: false,\n },\n\n rememberMe: {\n name: 'rememberMe',\n defaultValue: (orderDataDefaults && orderDataDefaults.rememberMe) || true,\n defaultType: 'boolean',\n effectsOnOrderDataChange: false,\n },\n\n facebookAuth: {\n name: 'facebookAuth',\n defaultValue: {},\n defaultType: 'object',\n effectsOnOrderDataChange: false,\n },\n\n googleAuth: {\n name: 'googleAuth',\n defaultValue: {},\n defaultType: 'object',\n effectsOnOrderDataChange: false,\n },\n\n appleAuth: {\n name: 'appleAuth',\n defaultValue: {},\n defaultType: 'object',\n effectsOnOrderDataChange: false,\n },\n\n topic: {\n name: 'topic',\n defaultValue: (orderDataDefaults && orderDataDefaults.topic) || '',\n defaultType: 'string',\n minLength: 8,\n maxLength: 300,\n debounceTime: 500,\n effectsOnOrderDataChange: true,\n },\n\n paperDetails: {\n name: 'paperDetails',\n defaultValue: (orderDataDefaults && orderDataDefaults.paperDetails) || '',\n defaultType: 'string',\n minLength: 15,\n maxLength: 1000,\n debounceTime: 500,\n effectsOnOrderDataChange: true,\n },\n\n academicLevel: {\n name: 'academicLevel',\n defaultValue: (orderDataDefaults && orderDataDefaults.academicLevel) || 10,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n paperType: {\n name: 'paperType',\n defaultValue: (orderDataDefaults && orderDataDefaults.paperType) || 90,\n problemSolvingKey: 110,\n resumeKey: 116,\n multiplyQuestionsKey: 200,\n questionsAndAnswersKey: 199,\n includesFollowUpThankYouLetterKeys: [166, 168],\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n workType: {\n name: 'workType',\n defaultValue: (orderDataDefaults && orderDataDefaults.workType) || 20,\n problemSolvingKey: 22,\n gradingMarkingKey: 172,\n multiplyQuestionsKey: 201,\n questionsAndAnswersKey: 202,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n paperFormat: {\n name: 'paperFormat',\n defaultValue: (orderDataDefaults && orderDataDefaults.paperFormat) || 26,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n subject: {\n name: 'subject',\n defaultValue: (orderDataDefaults && orderDataDefaults.subject) || 78,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n deadline: {\n name: 'deadline',\n defaultValue: (orderDataDefaults && orderDataDefaults.deadline) || 9,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n pagesWordsSwitcher: {\n name: 'pagesWordsSwitcher',\n defaultValue: (orderDataDefaults && orderDataDefaults.pagesWordsSwitcher) || PAGES_INDEX,\n problemSolvingKey: 0,\n questionsKey: 0,\n defaultType: 'number',\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n pages: {\n name: 'pages',\n defaultValue: (orderDataDefaults && orderDataDefaults.pages) || 1,\n problemSolvingKey: 0,\n questionsKey: 0,\n defaultType: 'number',\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n words: {\n name: 'words',\n defaultValue: (orderDataDefaults && orderDataDefaults.words) || 0,\n problemSolvingKey: 0,\n questionsKey: 0,\n defaultType: 'number',\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n problems: {\n name: 'problems',\n defaultValue: (orderDataDefaults && orderDataDefaults.problems) || 0,\n problemSolvingKey: 1,\n questionsKey: 0,\n defaultType: 'number',\n defaultHidden: true,\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n questions: {\n name: 'questions',\n defaultValue: (orderDataDefaults && orderDataDefaults.questions) || 0,\n questionsKey: 1,\n problemSolvingKey: 0,\n defaultType: 'number',\n defaultHidden: true,\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n slides: {\n name: 'slides',\n defaultValue: {\n slidesCount: (orderDataDefaults && orderDataDefaults.slides) || 0,\n checkedSpeakernotes: false,\n },\n problemSolvingKey: {\n slidesCount: 0,\n checkedSpeakernotes: false,\n },\n defaultType: 'object',\n speakerNotesID: 14,\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n spacing: {\n name: 'spacing',\n defaultValue: (orderDataDefaults && orderDataDefaults.spacing) || 118,\n problemSolvingKey: 118,\n multiplyQuestionsKey: 118,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n sources: {\n name: 'sources',\n defaultValue: {\n sourcesCount: (orderDataDefaults && orderDataDefaults.sources) || 0,\n checkedSoftcopies: false,\n },\n multiplyQuestionsKey: {\n sourcesCount: 0,\n checkedSoftcopies: false,\n },\n defaultType: 'object',\n softcopiesID: 8,\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n software: {\n name: 'software',\n requiresPreEnable: true,\n enabled: false,\n defaultValue: (orderDataDefaults && orderDataDefaults.software) || 9,\n defaultType: 'number',\n effectsOnOrderDataChange: true,\n },\n\n writerCategory: {\n name: 'writerCategory',\n defaultValue: (orderDataDefaults && orderDataDefaults.writerCategory) || 1,\n defaultType: 'number',\n minDeadlineKey: 4,\n proWriterKey: 2,\n topWriterKey: 3,\n preferredWriterKey: 11,\n effectsOnOrderDataChange: true,\n },\n\n preferredOrder: {\n name: 'preferredOrder',\n defaultValue: null,\n defaultType: 'string',\n minLength: 4,\n maxLength: 10,\n effectsOnOrderDataChange: true,\n },\n\n additionalFeatures: {\n name: 'additionalFeatures',\n defaultValue: (orderDataDefaults && orderDataDefaults.additionalFeatures) || [],\n defaultType: 'array',\n followUpThankYouLetterKey: 6,\n effectsOnOrderDataChange: true,\n },\n\n discount: {\n name: 'discount',\n defaultValue: '',\n defaultType: 'string',\n buttonText: {\n apply: 'Apply',\n cancel: 'Cancel',\n },\n debounceTime: 300,\n effectsOnOrderDataChange: true,\n },\n\n files: {\n name: 'files',\n defaultValue: [],\n defaultType: 'array',\n maxFileSize: 1024 * 1024 * 25, // 25Mb\n status: {\n CANCELED: 'canceled',\n PENDING: 'pending',\n INDEFINITE: 'indefinite',\n SUCCESS: 'success',\n ERROR: 'error',\n },\n effectsOnOrderDataChange: true,\n },\n\n clientAgreements: {\n name: 'clientAgreements',\n defaultValue: [],\n requiredValues: [1, 2, 3],\n subscribedValue: 4,\n defaultType: 'array',\n effectsOnOrderDataChange: false,\n },\n\n amount: {\n name: 'amount',\n defaultValue: 1,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n debounceTime: 100,\n },\n\n tipsAmountWriter: {\n name: 'tipsAmountWriter',\n defaultValue: 10,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n tipsAmountSupport: {\n name: 'tipsAmountSupport',\n defaultValue: 10,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n tipsSupportsList: {\n name: 'tipsSupportsList',\n defaultValue: [],\n defaultType: 'array',\n effectsOnOrderDataChange: false,\n },\n\n revisionDaysAmount: {\n name: 'revisionDaysAmount',\n defaultValue: 8,\n maxValue: 20,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n revisionHoursAmount: {\n name: 'revisionHoursAmount',\n maxValue: 24,\n defaultValue: 0,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n revisionMinutesAmount: {\n name: 'revisionMinutesAmount',\n maxValue: 60,\n defaultValue: 0,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n revisionComment: {\n name: 'revisionComment',\n defaultValue: '',\n defaultType: 'string',\n minLength: 8,\n effectsOnOrderDataChange: false,\n },\n\n revisionDeadline: {\n name: 'revisionDeadline',\n defaultType: 'string',\n defaultValue: '',\n effectsOnOrderDataChange: false,\n },\n\n /* steppers */\n orderFormStepper: {\n name: 'orderFormStepper',\n defaultValue: 1,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n userAreaStepper: {\n name: 'userAreaStepper',\n defaultValue: 2,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n authFormStepper: {\n name: 'authFormStepper',\n defaultValue: 1,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n pricesTableStepper: {\n name: 'pricesTableStepper',\n defaultValue: 1,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n ordersTableStepper: {\n name: 'ordersTableStepper',\n defaultValue: 3,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n\n orderInfoStepper: {\n name: 'orderInfoStepper',\n defaultValue: 1,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n orderDetailsStep: 1,\n messagesStep: 2,\n filesStep: 3,\n },\n\n walletStepper: {\n name: 'walletStepper',\n defaultValue: 1,\n defaultType: 'number',\n effectsOnOrderDataChange: false,\n },\n}\n", "import buildValidator from './_build-validator'\nimport type { ValidationError } from './_error-interface'\n\nimport notify from 'utils/notify'\n\nimport { FileMeta } from '../definitions'\n\nimport cc from 'common/fields-configs'\n\nclass MaxFileSizeError extends Error implements ValidationError {\n protected fileName: string\n\n constructor({ file }: FileMeta) {\n super('File size is too big')\n\n this.fileName = file.name\n }\n\n notify() {\n // notify.error(`'${this.fileName}' should not exceed 25MB. Please contact support staff.`)\n }\n}\n\nconst materialExtension = buildValidator(\n 'material-size-limit',\n (fileMeta: FileMeta) => {\n if (fileMeta.file.size && fileMeta.file.size > cc.files.maxFileSize) {\n notify.error(`'${fileMeta.file.name}' should not exceed 25MB. Please contact support staff.`)\n throw new MaxFileSizeError(fileMeta)\n }\n },\n MaxFileSizeError,\n)\n\nexport default materialExtension", "import materialExtensionValidator from './material-extension'\nimport materialSizeLimitValidator from './material-size-limit'\n\nimport { Validator, FileMeta } from '../definitions'\n\n/**\n * Factory for getting validator by name\n *\n * @param name validator`s name\n * @returns Validator\n */\nconst validation = (name: string): Validator => {\n switch (name) {\n case materialExtensionValidator.name:\n return materialExtensionValidator\n\n case materialSizeLimitValidator.name:\n return materialSizeLimitValidator\n\n default:\n throw new Error(`Validator \"${name}\" not found`)\n }\n}\n\nexport const baseGetValidatorMapName = (namespace: string) => {\n /**\n * write here rules for dynamic file-uploader namespace name transform for key of validator map\n */\n return namespace\n}\n\nconst register = (\n getValidatorMapName: (namespace: string, file: FileMeta) => string = baseGetValidatorMapName,\n) => (namespace: string, file: FileMeta) => {\n switch (getValidatorMapName(namespace, file)) {\n case 'new-order':\n case 'dashboard':\n return [\n validation('material-extension'),\n validation('material-size-limit'),\n ]\n\n default:\n return []\n }\n}\n\nexport default register", "export const SAGAS_SCHEMA = 'saga://' as const", "import { createAction } from '@reduxjs/toolkit'\n\nimport { SAGAS_SCHEMA } from 'constants/sagas'\n\nimport type { PayloadAction } from '@reduxjs/toolkit'\n\nexport const NAME = 'files-uploader' as const\nexport type NAME = typeof NAME\nexport const FILES_UPLOADER_SLICE = `slice://${NAME}/` as const\nexport const UPLOAD_FILES_SAGA = `${SAGAS_SCHEMA}${NAME}/upload` as const\nexport const CANCEL_UPLOAD_FILES = `${SAGAS_SCHEMA}${NAME}/upload/cancel` as const\n\nexport type Namespace = string\n\nexport interface FileStat {\n name: string,\n size: number,\n}\n\nexport const PreloadState = {\n PENDING: 'pending',\n PROGRESS: 'progress',\n FULFILLED: 'fulfilled',\n REJECTED: 'rejected',\n} as const\nexport type PreloadState = typeof PreloadState[keyof typeof PreloadState]\n\nexport interface FileMeta {\n hash: string,\n id: number | null,\n file: FileStat\n preload?: {\n state?: PreloadState\n progress?: number\n\n error: string | null\n }\n}\n\nexport interface FileUploaderState {\n files: {\n [namespace in Namespace]?: FileMeta[]\n }\n}\n\nexport type UploadFilesSagaAction = PayloadAction<{\n namespace: Namespace\n\n files: File | File[]\n}, typeof UPLOAD_FILES_SAGA>\n\nexport interface FileErrorConstructor {\n new(file: FileMeta): Error\n}\n\nexport interface Validator {\n (file: FileMeta): void\n readonly name: string\n readonly Error: FileErrorConstructor\n}\n\nexport interface UploadFileResponse {\n errors: string[]\n data?: {\n uploaded_file_id: number\n }\n}\n\nexport const INITIAL_STATE: FileUploaderState = {\n files: {},\n}\n\nexport function uploadFilesSagaAction(namespace: string, files: File | File[]) {\n return createAction(UPLOAD_FILES_SAGA)({ namespace, files })\n}\n\nexport function cancelFileUpload(hash: string) {\n return createAction(`${CANCEL_UPLOAD_FILES}/${hash}`)()\n}", "import { createSelector } from '@reduxjs/toolkit'\n\nimport validatorRegister from './validators'\n\nimport {\n FILES_UPLOADER_SLICE,\n\n Namespace,\n FileUploaderState,\n} from './definitions'\n\nexport const validation = (namespace: Namespace, file: FileUploaderState['files'][Namespace][number]) => {\n const getValidator = validatorRegister()\n const validators = getValidator(namespace, file)\n\n return validators.reduce((acc, validator) => {\n let validationResult = null\n\n try {\n validator(file)\n } catch (error) {\n validationResult = error\n } finally {\n return {\n ...acc,\n [validator.name]: validationResult,\n }\n }\n }, {} as Record)\n}\n\nexport const createFilesSelector = (namespace: Namespace) => createSelector(\n [createSelector(GET_STATE, state => state.files[namespace] || [])],\n files => files.map(file => ({\n ...file,\n\n validation: validation(namespace, file),\n }))\n)\n\nexport const createFileSelector = (namespace: Namespace, hash: string) => createSelector(\n [createFilesSelector(namespace)],\n files => {\n const file = files.find(file => file.hash === hash)\n\n if (!file) {\n throw new Error(`File with hash \"${hash}\" not found`)\n }\n\n return file\n })\n\nfunction GET_STATE(state: any) {\n return state[FILES_UPLOADER_SLICE] as FileUploaderState\n}", "import { createTransform } from 'redux-persist'\n\nimport { validation } from '../../selectors'\n\nimport { PreloadState, FileUploaderState, FileMeta } from '../../definitions'\n\nconst write = (inboundState, key) => {\n switch (key) {\n default:\n return { ...inboundState }\n }\n}\n\nconst CompletedStates = [PreloadState.FULFILLED, PreloadState.REJECTED] as PreloadState[]\n\nconst hydrate = (outboundState, key) => {\n switch (key) {\n case 'files': {\n const namespaces = Object.keys(outboundState as FileUploaderState['files'])\n\n const result = namespaces.reduce((accumulator, namespace) => {\n accumulator[namespace] = outboundState[namespace].map((file) => {\n // failure front-end validation checks\n const invalid = Object.values(validation(namespace, file)).some(error => error !== null)\n // preload request fulfilled or rejected\n const uploaded = CompletedStates.indexOf(file.preload?.state as PreloadState) !== -1\n\n if (invalid || uploaded) {\n return file\n }\n\n return {\n ...file,\n\n preload: {\n ...file.preload,\n state: PreloadState.REJECTED,\n\n error: 'Aborted',\n }\n }\n }, [] as FileMeta[])\n\n return accumulator\n }, {} as FileUploaderState['files'])\n\n return result\n }\n\n default:\n return { ...outboundState }\n }\n}\n\nconst whitelist = createTransform(write, hydrate, {})\n\nexport default whitelist", "import { createSlice, PayloadAction, DeepPartial } from '@reduxjs/toolkit'\nimport localStorage from 'redux-persist/es/storage'\n\nimport aborted from './persistor/transforms/aborted'\n\nimport {\n INITIAL_STATE,\n\n FILES_UPLOADER_SLICE,\n\n FileMeta,\n} from './definitions'\n\nconst filesUploaderSlice = createSlice({\n name: FILES_UPLOADER_SLICE,\n initialState: INITIAL_STATE,\n reducers: {\n addFile(state, action: PayloadAction<{ namespace: string, files: FileMeta | FileMeta[] }>) {\n const { namespace } = action.payload\n const files = Array.isArray(action.payload.files)\n ? action.payload.files\n : [action.payload.files]\n\n if (!state.files[namespace]) {\n state.files[namespace] = []\n }\n\n state.files[namespace].push(...files)\n },\n\n updateFile(state, action: PayloadAction<{ namespace: string, hash: string, file: DeepPartial> }>) {\n const { namespace, hash, file } = action.payload\n\n if (!state.files[namespace]) {\n state.files[namespace] = []\n }\n\n const fileIndex = state.files[namespace].findIndex(file => file.hash === hash)\n\n if (fileIndex === -1) {\n console.error(`File with hash \"${hash}\" not found`)\n return\n }\n\n const fileMeta = state.files[namespace][fileIndex]\n\n state.files[namespace][fileIndex] = {\n ...fileMeta,\n ...file,\n\n preload: {\n error: null,\n\n ...(fileMeta.preload || {}),\n ...(file.preload || {}),\n },\n }\n },\n\n removeFile(state, action: PayloadAction<{ namespace: string, hash: string }>) {\n const { namespace, hash } = action.payload\n\n if (!state.files[namespace]) {\n state.files[namespace] = []\n }\n\n const fileIndex = state.files[namespace].findIndex(file => file.hash === hash)\n\n if (fileIndex === -1) {\n throw new Error(`File with hash \"${hash}\" not found`)\n }\n\n state.files[namespace] = state.files[namespace].filter(file => file.hash !== hash)\n },\n\n resetFiles(state, action: PayloadAction<{ namespace: string }>) {\n const { namespace } = action.payload\n\n state.files[namespace] = []\n }\n },\n})\n\nexport const FILES_UPLOADER_PERSIST_CONFIG = {\n key: FILES_UPLOADER_SLICE,\n storage: localStorage,\n transforms: [aborted],\n}\n\nexport const slice = filesUploaderSlice", "import { createAction } from '@reduxjs/toolkit'\n\nimport { SAGAS_SCHEMA } from 'constants/sagas'\n\nimport type { Response, SuccessData, UnauthorizedData } from './discount.d'\n\nexport const NAME = 'discount' as const\nexport type NAME = typeof NAME\nexport const DISCOUNT_SLICE = `slice://${NAME}/` as const\nexport const CHECK_SEARCH_PARAM = `side-effect://${NAME}/check-search-param` as const\nexport const APPLY_DISCOUNT_KEY = 'apply-discount' as const\nexport const APPLY_DISCOUNT_SAGA = `${SAGAS_SCHEMA}${NAME}/${APPLY_DISCOUNT_KEY}` as const\nexport const CANCEL_APPLY_DISCOUNT = `${SAGAS_SCHEMA}${NAME}/${APPLY_DISCOUNT_KEY}/cancel` as const\nexport const APPLIED_DISCOUNT = `${SAGAS_SCHEMA}${NAME}/applied` as const\n\nexport type Namespace = string\n\nexport interface Discount {\n name: string,\n size: number,\n}\n\nexport const PreloadState = {\n PENDING: 'pending',\n PROGRESS: 'progress',\n FULFILLED: 'fulfilled',\n REJECTED: 'rejected',\n} as const\nexport type PreloadState = typeof PreloadState[keyof typeof PreloadState]\n\nexport type DiscountResponse = Response | Response | Response<[]>\n\nexport interface DiscountMeta {\n code: string\n\n sended: boolean\n applied: boolean\n\n data: SuccessData | UnauthorizedData | null\n\n response: Omit | null\n\n preload?: {\n state?: PreloadState\n progress?: number\n\n error: string | null\n }\n}\n\nexport const DiscountVariant = {\n PERCENT: 'percent',\n SUM: 'sum',\n LIMIT: 'limit',\n} as const\nexport type DiscountVariant = typeof DiscountVariant[keyof typeof DiscountVariant]\n\nexport interface DiscountState {\n discount: {\n [namespace in Namespace]?: DiscountMeta\n }\n}\n\nexport const INITIAL_STATE: DiscountState = {\n discount: {},\n}\n\nexport const NOOP_DISCOUNT: DiscountMeta = {\n code: '',\n sended: false,\n applied: false,\n data: null,\n response: null,\n}\n\nexport const applyDiscountAction = createAction<{\n namespace: Namespace\n\n disableNotify?: boolean\n useCheckRoute?: boolean\n}>(APPLY_DISCOUNT_SAGA)\n\nexport function applyDiscount(namespace: Namespace, options: {\n disableNotify?: boolean\n useCheckRoute?: boolean\n} = {}) {\n return applyDiscountAction({ namespace, ...options })\n}\nexport type ApplyDiscountAction = ReturnType\n\nexport function cancelApplyDiscount(namespace: Namespace) {\n return createAction(`${CANCEL_APPLY_DISCOUNT}/${namespace}`)()\n}\nexport type CancelApplyDiscountAction = ReturnType\n\nexport function appliedDiscount(namespace: Namespace) {\n return createAction(`${APPLIED_DISCOUNT}/${namespace}`)()\n}\nexport type AppliedDiscountAction = ReturnType", "import { createTransform } from 'redux-persist'\n\nimport { DiscountMeta, NOOP_DISCOUNT } from '../../definitions'\n\ntype PersistedMap = {\n [namespace: string]: {\n code: string,\n sended: boolean,\n }\n}\n\nconst write = (inboundState, key) => {\n switch (key) {\n case 'discount': {\n const discount = inboundState as Record\n\n return Object.keys(discount).reduce((acc, ns) => {\n acc[ns] = {\n code: discount[ns].code,\n sended: discount[ns].sended,\n }\n\n return acc\n }, {} as PersistedMap)\n }\n\n default:\n return inboundState\n }\n}\n\nconst hydrate = (outboundState, key) => {\n switch (key) {\n case 'discount': {\n const discount = outboundState as PersistedMap\n\n return Object.keys(discount).reduce((acc, ns) => {\n acc[ns] = {\n ...NOOP_DISCOUNT,\n ...discount[ns],\n }\n\n return acc\n }, {} as Record)\n }\n\n default:\n return outboundState\n }\n}\n\nconst whitelist = createTransform(write, hydrate, {})\n\nexport default whitelist", "import { createSlice, PayloadAction, DeepPartial } from '@reduxjs/toolkit'\nimport localStorage from 'redux-persist/es/storage'\n\nimport whitelist from './persistor/transforms/whitelist'\n\nimport {\n INITIAL_STATE,\n\n DISCOUNT_SLICE,\n NOOP_DISCOUNT,\n\n applyDiscountAction,\n\n DiscountResponse,\n DiscountMeta,\n} from './definitions'\n\nconst discountSlice = createSlice({\n name: DISCOUNT_SLICE,\n initialState: INITIAL_STATE,\n reducers: {\n setCode(state, action: PayloadAction<{ namespace: string, code: string }>) {\n const { namespace, code } = action.payload\n\n state.discount[namespace] = {\n ...NOOP_DISCOUNT,\n code,\n }\n },\n updateDiscount(state, action: PayloadAction<{\n namespace: string\n discount?: Omit, 'code' | 'response' | 'data'>\n response?: DiscountResponse | null\n }>) {\n const { namespace, discount = {} } = action.payload\n\n state.discount[namespace] = {\n ...NOOP_DISCOUNT,\n\n ...state.discount[namespace],\n ...discount,\n\n preload: {\n error: null,\n\n ...(state.discount[namespace]?.preload || {}),\n ...(discount.preload || {}),\n },\n }\n\n const rawResponse = action.payload.response\n\n if (!rawResponse) {\n return\n }\n\n let { data, ...response } = rawResponse\n const normalizedData = Array.isArray(data) ? null : data\n\n state.discount[namespace] = {\n ...NOOP_DISCOUNT,\n\n ...state.discount[namespace],\n\n data: normalizedData,\n response,\n }\n },\n cancelDiscount(state, action: PayloadAction<{ namespace: string }>) {\n const { namespace } = action.payload\n\n state.discount[namespace] = {\n ...NOOP_DISCOUNT,\n code: state.discount[namespace]?.code || NOOP_DISCOUNT.code\n }\n },\n resetDiscount(state, action: PayloadAction<{ namespace: string }>) {\n const { namespace } = action.payload\n\n state.discount[namespace] = {\n ...NOOP_DISCOUNT,\n }\n },\n },\n extraReducers(builder) {\n builder.addCase(applyDiscountAction, (state, action) => {\n const { namespace } = action.payload\n\n state.discount[namespace] = {\n ...NOOP_DISCOUNT,\n ...state.discount[namespace],\n sended: true,\n }\n })\n },\n})\n\nexport const DISCOUNT_PERSIST_CONFIG = {\n key: DISCOUNT_SLICE,\n storage: localStorage,\n transforms: [whitelist],\n}\n\nexport const slice = discountSlice", "export default (string) => {\n let boolean\n\n switch (string) {\n case 'true':\n boolean = true\n break\n\n case 'false':\n boolean = false\n break\n\n default:\n boolean = undefined\n break\n }\n\n return boolean\n}\n", "const isEnabled = () => navigator.cookieEnabled && typeof localStorage !== 'undefined'\n\nconst get = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n\n return localStorage.getItem(storageItemKey)\n}\n\nconst set = async (storageItemKey, storageItemValue, { expiresAt, share = false } = {}) => {\n if (!isEnabled()) {\n return false\n }\n\n localStorage.setItem(storageItemKey, JSON.stringify({ value: storageItemValue, expiresAt }))\n\n return null\n}\n\nconst remove = async (storageItemKey, { share = false } = {}) => {\n if (!isEnabled()) {\n return false\n }\n\n localStorage.removeItem(storageItemKey)\n\n return null\n}\n\nconst getRelatedKeys = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n return Object.keys(localStorage).filter((key) => key.includes(`${storageItemKey}__`))\n}\n\nexport default {\n isEnabled,\n get,\n set,\n remove,\n getRelatedKeys,\n}\n", "const isEnabled = () => navigator.cookieEnabled && typeof sessionStorage !== 'undefined'\n\nconst get = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n return sessionStorage.getItem(storageItemKey)\n}\n\nconst set = (storageItemKey, storageItemValue, { expiresAt }) => {\n if (!isEnabled()) {\n return\n }\n\n sessionStorage.setItem(storageItemKey, JSON.stringify({\n value: storageItemValue,\n expiresAt,\n }))\n}\n\nconst remove = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n sessionStorage.removeItem(storageItemKey)\n}\n\nconst getRelatedKeys = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n return Object.keys(sessionStorage).filter((key) => key.includes(`${storageItemKey}__`))\n}\n\nexport default {\n isEnabled,\n get,\n set,\n remove,\n getRelatedKeys,\n}\n", "import isPlainObject from 'lodash/isPlainObject'\n\n/* env */\nimport { ENV } from 'env'\n\n/* helpers general */\nimport getFromConfigs from 'helpers/configs/get-from-configs'\nimport convertStringToBoolean from 'helpers/string/convert-string-to-boolean'\n\n/* constants general */\nimport { PROJECT_DOMAIN } from 'constants/configs'\n\n/* storagies */\nimport localStorage from 'utils/storage/storagies/local'\nimport sessionStorage from 'utils/storage/storagies/session'\n\nconst version = 'v-0.0.12'\n\nconst addVersion = (storageItemKey) => `${storageItemKey}__${version}`\n\nconst changeDependsOnENV = (storageItemKey) => {\n if (ENV !== 'production') {\n const domain = getFromConfigs(PROJECT_DOMAIN)\n storageItemKey = `${storageItemKey}__${domain}`\n\n return storageItemKey\n }\n\n return storageItemKey\n}\n\nconst getRelatedKeys = (storageItemKey, { storageType = 'local' }) => {\n let keys\n switch (storageType) {\n case 'local':\n keys = localStorage.getRelatedKeys(storageItemKey)\n break\n case 'session':\n keys = sessionStorage.getRelatedKeys(storageItemKey)\n break\n default:\n // eslint-disable-next-line no-console\n console.error(`This '${storageType}' storage type doesn't available`)\n break\n }\n\n return keys\n}\n\nconst remove = (storageItemKey, { storageType = 'local', isOuterKey = false, shouldCompletelyRemove = false, ...rest } = {}) => {\n if (!isOuterKey) {\n if (!shouldCompletelyRemove) {\n storageItemKey = addVersion(storageItemKey)\n storageItemKey = changeDependsOnENV(storageItemKey)\n }\n }\n\n switch (storageType) {\n case 'local':\n localStorage.remove(storageItemKey, rest)\n break\n case 'session':\n sessionStorage.remove(storageItemKey)\n break\n default:\n // eslint-disable-next-line no-console\n console.error(`This '${storageType}' storage type doesn't available`)\n break\n }\n}\n\nconst removeOldVersions = (storageItemKey, { storageType = 'local' } = {}) => {\n const relatedKeys = getRelatedKeys(storageItemKey, { storageType })\n\n relatedKeys && relatedKeys.forEach((key) => {\n const keyVersion = key.split('__')[1]\n if (keyVersion !== version) {\n storageItemKey = `${storageItemKey}__${keyVersion}`\n storageItemKey = changeDependsOnENV(storageItemKey)\n remove(storageItemKey, { storageType, shouldCompletelyRemove: true })\n }\n })\n}\n\nconst get = (storageItemKey, { storageType = 'local', isOuterKey = false, ignoreExpitesAt = false } = {}) => {\n removeOldVersions(storageItemKey, { storageType })\n\n if (!isOuterKey) {\n storageItemKey = addVersion(storageItemKey)\n storageItemKey = changeDependsOnENV(storageItemKey)\n }\n\n let storageItem\n switch (storageType) {\n case 'local':\n storageItem = localStorage.get(storageItemKey)\n break\n case 'session':\n storageItem = sessionStorage.get(storageItemKey)\n break\n default:\n // eslint-disable-next-line no-console\n console.error(`This '${storageType}' storage type doesn't available`)\n break\n }\n\n let parsedStorageItem\n try {\n parsedStorageItem = JSON.parse(storageItem)\n } catch (error) {\n parsedStorageItem = storageItem\n }\n\n let storageItemValue = parsedStorageItem\n\n if (isPlainObject(parsedStorageItem)) {\n if (parsedStorageItem.hasOwnProperty('value')) {\n storageItemValue = parsedStorageItem.value\n\n if (!ignoreExpitesAt && parsedStorageItem.hasOwnProperty('expiresAt') && parsedStorageItem.expiresAt) {\n const expiresAt = parsedStorageItem.expiresAt\n\n const date = new Date()\n const timestamp = date.getTime()\n\n if (expiresAt < timestamp) {\n remove(storageItemKey, { storageType })\n return null\n }\n }\n } else {\n return null\n }\n }\n\n if (storageItemValue === 'true' || storageItemValue === 'false') {\n storageItemValue = convertStringToBoolean(storageItemValue)\n }\n\n let parsedStorageItemValue\n try {\n parsedStorageItemValue = JSON.parse(storageItemValue)\n } catch (error) {\n parsedStorageItemValue = storageItemValue\n }\n\n return parsedStorageItemValue\n}\n\nconst set = (storageItemKey, storageItemValue, { storageType = 'local', expires = null, isOuterKey = false, ...rest } = {}) => {\n if (!isOuterKey) {\n storageItemKey = addVersion(storageItemKey)\n storageItemKey = changeDependsOnENV(storageItemKey)\n }\n\n storageItemValue = JSON.stringify(storageItemValue)\n\n let expiresAt = null\n if (expires && typeof expires === 'number') {\n const date = new Date()\n expiresAt = date.setTime(date.getTime() + expires)\n }\n\n switch (storageType) {\n case 'local':\n localStorage.set(storageItemKey, storageItemValue, { expiresAt, ...rest })\n break\n case 'session':\n sessionStorage.set(storageItemKey, storageItemValue, { expiresAt })\n break\n default:\n // eslint-disable-next-line no-console\n console.error(`This '${storageType}' storage type doesn't available`)\n break\n }\n}\n\nconst isEnabled = (storageType) => {\n let isEnabled\n switch (storageType) {\n case 'local':\n isEnabled = localStorage.isEnabled()\n break\n case 'session':\n isEnabled = sessionStorage.isEnabled()\n break\n default:\n // eslint-disable-next-line no-console\n console.error(`This '${storageType}' storage type doesn't available`)\n break\n }\n\n return isEnabled\n}\n\nconst storage = {\n isEnabled,\n\n get,\n set,\n remove,\n\n version,\n addVersion,\n changeDependsOnENV,\n removeOldVersions,\n}\n\nexport default storage\n\nwindow.MICROSERVICES_UTILS_AND_HELPERS = window.MICROSERVICES_UTILS_AND_HELPERS || {}\n!window.MICROSERVICES_UTILS_AND_HELPERS?.storage && (window.MICROSERVICES_UTILS_AND_HELPERS.storage = storage)", "export const UNIVERSAL_UPDATE_ACROSS_STORES = 'UNIVERSAL_UPDATE_ACROSS_STORES'\n\nexport const REMOTE_ATTEMPT = '/REMOTE_ATTEMPT'\nexport const REMOTE_ERROR = '/REMOTE_ERROR'\nexport const REMOTE_SUCCESS = '/REMOTE_SUCCESS'\n", "export const USER_CHECK = 'USER_CHECK'\nexport const USER_UPDATE = 'USER_UPDATE'\nexport const USER_AUTHORIZE = 'USER_AUTHORIZE'\nexport const USER_UNAUTHORIZE = 'USER_UNAUTHORIZE'\n\nexport const REMOTE_SUCCESS = '/REMOTE_SUCCESS'\n\nexport const ORDER_PAYMENT_SUCCESS = 'user-data/order-payment/success'\n", "export const PERSISTOR_PREFIX = 'persist:'\n\nexport const ORDER_DATA_PERSISTOR_NAME = 'order_data'\n\nexport const ORDER_DATA_PERSISTOR_EXPIRES_TIMEOUT = 8.64e7 // 1 day\n", "import { ORDER_DATA_PERSISTOR_NAME, PERSISTOR_PREFIX } from 'constants/persistor'\n\nexport const ORDER_DATA_PERSISTOR_KEY = `${PERSISTOR_PREFIX}${ORDER_DATA_PERSISTOR_NAME}`\n\nexport const AUTH_ACTION_KEY = 'auth_action'\nexport const USER_DATA_KEY = 'user_data'\nexport const IS_EXISTING_USER_KEY = 'is_existing_user'\n\nexport const SHOULD_PREVENT_REDIRECT_TO_DASHBOARD_KEY = 'should_prevent_redirect_to_dashboard'\n\nexport const PLACE_ORDER_AUTHORIZATION_FROM_MODAL = 'place_order_authorization_from_modal'\n\nexport const ORDER_DATA_CHANGED_FROM_FORM_ASSERTS_KEY = 'order_data_changed_from_form_asserts_item'\nexport const ORDER_DATA_CHANGED_FROM_CALCULATOR_ASSERTS_KEY = 'order_data_changed_from_calculator_asserts_item'\n\nexport const HIDE_DISCOUNT_NOTIFICATION_KEY = 'hide_discount_notification'\n\nexport const THANKS_PAGE_VOTING_KEY = 'thanks_page_voting'\n\nexport const ACCOUNT_MANAGER_PROCESSED_KEY = 'account_manager_processed'\n\nexport const REFERRALS_PAGE_WITH_BADGE_VISITED = 'referrals_page_with_badge_visited'\n\nexport const DESIGN_TYPE = 'design_type'\n\n/* outer */\nexport const TEMP_QS_KEY = 'tempQS'\nexport const REFERRER = 'refer'\n\nexport const CONVERSION_PARAMS_KEY = 'conversionParams'\nexport const CONVERSION_PARAMS_FROM_PRICE_COMPARATOR_KEY = 'conversionPriceComparatorParams'\n\nexport const VERSION = 'msh-version'\nexport const CONTENTHASH = 'msh-contenthash'\n", "import isEmpty from 'lodash/isEmpty'\n\n/* utils general */\nimport storage from 'utils/storage'\n\n/* redux-constants microservices */\nimport { UNIVERSAL_UPDATE_ACROSS_STORES } from 'microservices/sheared/universal-constants'\n/* redux-constants local */\nimport {\n USER_CHECK,\n USER_UPDATE,\n USER_AUTHORIZE,\n USER_UNAUTHORIZE,\n\n REMOTE_SUCCESS,\n\n ORDER_PAYMENT_SUCCESS,\n} from 'global-entities/user-data/constants'\n\n/* constants general */\nimport { USER_DATA_EXPIRES_TIMEOUT } from 'constants/auth'\nimport { USER_DATA_KEY } from 'constants/storage'\n\nconst initialStateFromBrowserStorage = storage.get(USER_DATA_KEY)\nconst initialStateFromReduxStorage = {\n authorizationStatus: undefined,\n isAuthorized: false,\n\n userID: null,\n visitorID: null,\n referrerID: null,\n\n email: '',\n phone: '',\n firstName: '',\n lastName: '',\n subscribed: false,\n\n paidOrdersCount: 0,\n}\n\nconst defaultState =\n !isEmpty(initialStateFromBrowserStorage) ?\n initialStateFromBrowserStorage\n :\n initialStateFromReduxStorage\n\nexport default (state = defaultState, action) => {\n switch (action.type) {\n case UNIVERSAL_UPDATE_ACROSS_STORES:\n case USER_CHECK + REMOTE_SUCCESS:\n case USER_UPDATE + REMOTE_SUCCESS:\n case USER_AUTHORIZE + REMOTE_SUCCESS:\n case USER_UNAUTHORIZE + REMOTE_SUCCESS:\n storage.set(USER_DATA_KEY, action.payload, { expires: USER_DATA_EXPIRES_TIMEOUT })\n return {\n checked: true,\n ...state,\n ...action.payload,\n }\n\n case ORDER_PAYMENT_SUCCESS:\n return {\n ...state,\n paidOrdersCount: state.paidOrdersCount + 1,\n }\n\n default:\n return state\n }\n}\n", "export const NAME = 'priceData'\n\nexport const CALCULATE_PRICE__ATTEMPT = 'CALCULATE_PRICE__ATTEMPT'\nexport const CALCULATE_PRICE__SUCCESS = 'CALCULATE_PRICE__SUCCESS'\n", "/* redux-constants local */\nimport {\n CALCULATE_PRICE__ATTEMPT,\n CALCULATE_PRICE__SUCCESS,\n} from 'global-entities/price-data/constants'\n\nconst defaultState = {\n currency: '$',\n\n priceFull: 0,\n priceBasic: 0,\n priceForCalculatorItems: 0,\n\n pricePerUnit: {\n default: 0,\n pages: 0,\n words: 0,\n slides: 0,\n problems: 0,\n questions: 0,\n },\n priceForUnits: {\n pages: 0,\n words: 0,\n slides: 0,\n problems: 0,\n questions: 0,\n },\n\n priceAdditionals: {\n writerCategory: {\n total: 0,\n basic: 0,\n additional: 0,\n },\n additionalFeatures: {\n total: 0,\n },\n softcopies: 0,\n software: 0,\n },\n\n discountAmount: 0,\n\n priceWithDiscount: 0,\n priceWithUpsales: 0,\n\n technicalSubjectPricePB: 0,\n technicalSubjectPricePWD: 0,\n}\n\nexport default (state = defaultState, action) => {\n switch (action.type) {\n case CALCULATE_PRICE__ATTEMPT:\n return {\n ...state,\n }\n\n case CALCULATE_PRICE__SUCCESS:\n return {\n ...state,\n ...action.payload,\n }\n\n default:\n return state\n }\n}\n", "import reducer from './reducer'\n\nimport { NAME } from './constants'\n\nexport const priceDataReducers = {\n [NAME]: reducer,\n}\n", "export const KEY = 'geo-tag'\n\nexport const BLACKLIST_COUNTRIES = {\n ke: { name: 'Kenia', iso2: 'ke' },\n bd: { name: 'Bangladesh', iso2: 'bd' },\n ph: { name: 'Phillipines', iso2: 'ph' },\n in: { name: 'India', iso2: 'in' },\n pk: { name: 'Pakistan', iso2: 'pk' },\n zw: { name: 'Zimbabwe', iso2: 'zw' },\n bn: { name: 'Brunei', iso2: 'bn' },\n ye: { name: 'Yemen', iso2: 'ye' },\n lr: { name: 'Liberia', iso2: 'lr' },\n lk: { name: 'Sri Lanka', iso2: 'lk' },\n ps: { name: 'Palestine', iso2: 'ps' },\n uz: { name: 'Uzbekistan', iso2: 'uz'},\n ar: { name: 'Argentina', iso2: 'ar'},\n am: { name: 'Armenia', iso2: 'am'},\n mn: { name: 'Mongolia', iso2: 'mn'},\n md: { name: 'Moldova', iso2: 'md'},\n}\n", "/* helpers general */\nimport convertStringToBoolean from 'helpers/string/convert-string-to-boolean'\n\nexport default (key) => {\n const queryParamsString = window.location.search\n if (!queryParamsString) {\n return\n }\n\n const queryParamsArray = queryParamsString.replace('?', '').split('&')\n const queryParamsObject = {}\n\n queryParamsArray.forEach((param) => {\n const paramArray = param.split('=')\n const paramKey = paramArray[0]\n let paramValue = paramArray[1]\n\n if (paramValue) {\n // paramValue = paramValue.replace(/%20/g, ' ')\n // paramValue = paramValue.replace(/%2C/g, ',')\n // paramValue = paramValue.replace(/%22/g, '\"')\n // paramValue = paramValue.replace(/%27/g, '\\'')\n // paramValue = paramValue.replace(/%3A/g, ':')\n\n paramValue = decodeURIComponent(paramValue)\n\n if (paramValue === 'true' || paramValue === 'false') {\n paramValue = convertStringToBoolean(paramValue)\n }\n queryParamsObject[paramKey] = paramValue\n }\n })\n\n if (!key) {\n return queryParamsObject\n }\n\n if (key && queryParamsObject[key]) {\n return queryParamsObject[key]\n }\n}\n", "export default (key, value = undefined, method = undefined) => {\n const queryParamsString = window.location.search\n if (method !== 'add' && !queryParamsString) {\n return\n }\n\n const queryParamsArray = queryParamsString.replace('?', '').split('&')\n\n let staticQueryParamsString = ''\n\n let divider = ''\n for (let i = 0; i < queryParamsArray.length; i++) {\n if (queryParamsArray[i].split('=')[0] !== key) {\n staticQueryParamsString += divider + queryParamsArray[i]\n divider = staticQueryParamsString.length ? '&' : ''\n }\n }\n\n let updatedQueryParamsString = staticQueryParamsString\n if (value) {\n updatedQueryParamsString = `${staticQueryParamsString}${divider}${key}=${value}`\n }\n\n updatedQueryParamsString = updatedQueryParamsString.length ? `?${updatedQueryParamsString}` : window.location.origin + window.location.pathname\n\n window.history.replaceState('', '', updatedQueryParamsString)\n}\n", "export default (queryParamsObject) => {\n const keys = Object.keys(queryParamsObject)\n const values = keys.map((key) => queryParamsObject[key])\n\n return keys.map((key, index) => `${key}=${values[index]}`).join('&')\n}\n", "import isEmpty from 'lodash/isEmpty'\nimport isPlainObject from 'lodash/isPlainObject'\n\n/* utils general */\nimport queryString from 'utils/query-string'\n\nexport default (additionalQueryParams = {}) => {\n let queryParamsString = ''\n\n const currentQueryParams = queryString.getParams()\n if (!isEmpty(currentQueryParams)) {\n queryParamsString = queryString.build(currentQueryParams)\n }\n\n if (isPlainObject(additionalQueryParams) && !isEmpty(additionalQueryParams)) {\n if (queryParamsString) {\n queryParamsString += `&${queryString.build(additionalQueryParams)}`\n } else {\n queryParamsString += queryString.build(additionalQueryParams)\n }\n }\n\n return queryParamsString ? `?${queryParamsString}` : ''\n}\n", "/* methods */\nimport getParams from 'utils/query-string/methods/get-params'\nimport manipulateParamWithoutRefresh from 'utils/query-string/methods/manipulate-param-without-refresh'\nimport build from 'utils/query-string/methods/build'\n\nimport makeSearchDependsOnENV from 'utils/query-string/methods/make-search-depends-on-env'\n\nexport default {\n getParams,\n getParam: (key) => getParams(key),\n addParam: (key, value) => manipulateParamWithoutRefresh(key, value, 'add'),\n updateParam: (key, value) => manipulateParamWithoutRefresh(key, value, 'update'),\n removeParam: (key) => manipulateParamWithoutRefresh(key, null, 'remove'),\n build,\n\n makeSearchDependsOnENV,\n}\n", "export const PNAME_KEY = 'pname'\n\n/* auth */\nexport const AUTH_TYPE_KEY = 'authType'\nexport const SINGLE_AUTH_METHOD_KEY = 'singleAuthMethod'\nexport const PAGE_REDIRECT = 'pageRedirect'\n\n/* order */\nexport const DUPLICATE_ORDER_DATA_CHANGES_INTO_URL_KEY = 'duplicateOrderDataChangesIntoURL'\nexport const ORDER_DATA_DISABLED_PERSISTOR_KEY = 'disabledOrderPersistor'\nexport const UNDO_REDO_KEY = 'undo-redo'\n\n/* dashboard */\nexport const ORDERS_TABLE_ACTIVE_TAB_KEY = 'ordersTableActiveTab'\nexport const ORDER_INFO_ACTIVE_TAB_KEY = 'orderInfoActiveTab'\n\nexport const PRICE_DATA_LOGGER_KEY = 'priceDataLogger'\nexport const PRICE_RESULT_LOGGER_KEY = 'priceResultLogger'\n\n/* outer */\nexport const E2E_KEY = 'e2e'\n", "import storage from 'utils/storage'\n\nimport { KEY } from 'global-entities/geo-tag/constants'\n\nimport queryString from 'utils/query-string'\n\nimport { E2E_KEY } from 'constants/query-params'\n\nconst E2E_ENABLE = queryString.getParam(E2E_KEY)\n\nconst searchLocalCountryCode = (): string | undefined => {\n // 1st step: const hardcore for e2e testing\n if (E2E_ENABLE) {\n return 'us'\n }\n\n // 2nd step: search geo tag in sessionStorage\n let countryCode = sessionStorage.getItem(KEY)\n if (countryCode) {\n countryCode = JSON.parse(countryCode)?.countryCode\n }\n\n // 3rd step: search in geo_params - fallback\n if (!countryCode) {\n countryCode = storage.get('geo_params', { storageType: 'session' })?.country\n }\n\n // 4th step: search countryCode in sessionSotage\n if (!countryCode) {\n countryCode = sessionStorage.getItem('countryCode')\n\n if (countryCode) {\n countryCode = JSON.parse(countryCode)?.value\n }\n }\n\n // 5th step: can't find\n if (!countryCode) {\n return\n }\n\n return countryCode.toLowerCase()\n}\n\nexport default searchLocalCountryCode\n", "import storage from 'utils/storage'\n\nimport { KEY } from 'global-entities/geo-tag/constants'\n\nimport queryString from 'utils/query-string'\n\nimport { E2E_KEY } from 'constants/query-params'\n\nconst E2E_ENABLE = queryString.getParam(E2E_KEY)\n\nconst searchLocalIP = (): string | undefined => {\n // 1st step: const hardcore for e2e testing\n if (E2E_ENABLE) {\n return '0.0.0.0'\n }\n\n // 2st step: search geo tag in sessionStorage\n let IP = sessionStorage.getItem(KEY)\n\n if (IP) {\n IP = JSON.parse(IP)?.IP\n }\n\n // 3nd step: search geo_params - fallback\n if (!IP) {\n IP = storage.get('geo_params', { storageType: 'session' })?.ip\n }\n\n // 4nd step: search IP in sessionSotage\n if (!IP) {\n IP = sessionStorage.getItem('IP')\n\n if (IP) {\n IP = JSON.parse(IP)?.value\n }\n }\n\n // 5th step: can't find\n if (!IP) {\n return\n }\n\n return IP.toLowerCase()\n}\n\nexport default searchLocalIP\n", "import searchLocalCountryCode from 'global-entities/geo-tag/utils/searchLocalContryCode'\nimport searchLocalIP from 'global-entities/geo-tag/utils/searchLocalIP'\n\nconst searchLocalGeoTag = () => ({\n countryCode: searchLocalCountryCode(),\n IP: searchLocalIP(),\n})\n\nexport default searchLocalGeoTag\n", "// #region COUNTRY_CODE\nexport type CountryCodeType = string\n\nexport interface ICountryCodeStore {\n countryCode?: CountryCodeType\n}\n\nexport const SET_CONTRY_CODE = 'geo-tag/SET_CONTRY_CODE'\n// #endregion COUNTRY_CODE\n\n// #region IP\nexport type IPType = string\n\nexport interface IIPStore {\n IP?: IPType\n}\n\nexport const SET_IP = 'geo-tag/SET_IP'\n// #endregion IP\n\n// #region GeoTag\nexport type GeoTagStoreType = ICountryCodeStore & IIPStore\n\nexport interface IGeoTagStore {\n 'geo-tag': GeoTagStoreType\n}\n// #endregion GeoTag\n", "import { Reducer } from 'redux'\n\nimport searchLocalGeoTag from 'global-entities/geo-tag/utils/searchLocalGeoTag'\n\nimport queryString from 'utils/query-string'\n\nimport { KEY } from 'global-entities/geo-tag/constants'\nimport { E2E_KEY } from 'constants/query-params'\n\nimport * as types from 'global-entities/geo-tag/store/types'\n\nimport type { GeoTagActions } from 'global-entities/geo-tag/store/actions'\n\nconst E2E_ENABLE = queryString.getParam(E2E_KEY)\n\nconst initialState: types.GeoTagStoreType = searchLocalGeoTag()\n\nconst save = (state: types.GeoTagStoreType): types.GeoTagStoreType => {\n sessionStorage.setItem(KEY, JSON.stringify(state))\n\n return state\n}\n\nconst reducer: Reducer = (\n state: types.GeoTagStoreType = initialState,\n action: GeoTagActions,\n): types.GeoTagStoreType => {\n switch (action.type) {\n case types.SET_CONTRY_CODE:\n state = {\n ...state,\n countryCode: E2E_ENABLE ? 'us' : action.payload.toLowerCase(),\n }\n break\n case types.SET_IP:\n state = {\n ...state,\n IP: E2E_ENABLE ? '0.0.0.0' : action.payload.toLowerCase(),\n }\n break\n default:\n if (!sessionStorage.getItem(KEY)) {\n save(state)\n }\n return state\n }\n\n return save(state)\n}\n\nexport const geoTagReducers = {\n [KEY]: reducer\n}\n\nexport default reducer\n", "import localforage from 'localforage'\n\nconst instance = localforage.createInstance({\n name: '[MSH] Storage',\n driver: [\n // localforage.INDEXEDDB,\n // localforage.WEBSQL,\n localforage.LOCALSTORAGE,\n ],\n})\n\nexport default instance\n", "import type { CustomParamType } from '../types'\n\nconst extractCustomVaraibles = (params: Array = []) => {\n const LC_EXPERIMENT_CUSTOM_VARIABLES = typeof (window as any).LC_EXPERIMENT_CUSTOM_VARIABLES !== 'undefined'\n ? (window as any).LC_EXPERIMENT_CUSTOM_VARIABLES\n : []\n\n if (Array.isArray(LC_EXPERIMENT_CUSTOM_VARIABLES)) {\n return [...params, ...LC_EXPERIMENT_CUSTOM_VARIABLES]\n }\n\n return [...params]\n}\n\nexport default extractCustomVaraibles\n", "import { ILivechat } from '../types'\n\nexport enum Loaded {\n DISCONNECTED,\n CONNECTING,\n CONNECTED,\n}\n\nexport enum Interaction {\n NO = 'no',\n YES = 'yes',\n DISABLE_CHECK = 'disable_check',\n}\n\nexport type CustomParamType = {\n name: string\n value: string\n}\n\n// #region Livechat\nexport interface ILiveChatStore {\n 'live-chat': {\n ref: ILivechat | null\n options: {\n license?: number\n group?: number\n chat_between_groups?: boolean\n /**\n * The available options are:\n * ga \u2013 Universal Analytics;\n * gtm \u2013 Google Tag Manager;\n * gtag \u2013 Global Site Tag (gtag.js);\n * gaq \u2013 traditional asynchronous code for Google Analytics.\n */\n ga_version?: 'ga' | 'gtm' | 'gtag' | 'gaq'\n visitor?: {\n name: string\n email: string\n }\n params?: Array\n }\n loaded: {\n flag: Loaded\n }\n open: boolean\n interactionWithUser: Interaction\n }\n}\n// #endregion Livechat\n", "import _get from 'lodash/get'\n\nimport getFromConfigs from 'helpers/configs/get-from-configs'\n\nimport { LIVECHAT_OPTIONS } from 'constants/configs'\n\nimport extractCustomVaraibles from './utils/extractCustomVaraibles'\n\nimport {\n ILiveChatStore,\n Interaction,\n Loaded,\n} from '@qwerty.software/live-chat/src/store/types'\n\nconst initialState: ILiveChatStore['live-chat'] = {\n loaded: {\n flag: Loaded.DISCONNECTED,\n },\n options: {\n chat_between_groups: false,\n visitor: {},\n params: extractCustomVaraibles([]),\n ...getFromConfigs(LIVECHAT_OPTIONS),\n ...(window as any)[LIVECHAT_OPTIONS],\n },\n ref: null,\n open: false,\n interactionWithUser: Interaction.NO,\n}\n\nexport default initialState\n", "export const LOADING = 'live-chat/LOADING'\n\nexport const SET_CUSTOM_VARIABLES = 'live-chat/SET_CUSTOM_VARIABLES'\nexport const UPDATE_CUSTOM_VARIABLES = 'live-chat/UPDATE_CUSTOM_VARIABLES'\n\nexport const REF_SET = 'live-chat/ref/SET'\n\nexport const OPEN = 'live-chat/OPEN'\n\nexport const INTERACTION = 'live-chat/USER_INTERACTION'\nexport const INTERACTION_SAGA = 'live-chat/saga/USER_INTERACTION'\n", "import _get from 'lodash/get'\nimport { set } from 'monolite'\nimport { Reducer } from 'redux'\n\nimport initialState from './initialState'\n\nimport {\n LOADING,\n SET_CUSTOM_VARIABLES,\n UPDATE_CUSTOM_VARIABLES,\n REF_SET,\n OPEN,\n INTERACTION,\n} from './constants'\n\nimport { ILivechat } from '../types'\nimport { ILiveChatStore, Loaded, Interaction, CustomParamType } from './types'\n\nimport { IAction as Action } from '@qwerty.software/store-manager/types'\n\ntype Actions = Action\n | Action>\n | Action>\n | Action\n | Action\n | Action\n\nconst reducer: Reducer = (state = initialState, action) => {\n switch (action.type) {\n case LOADING:\n return set(state, _ => _.loaded.flag, action.payload)\n\n case SET_CUSTOM_VARIABLES:\n return set(state, _ => _.options.params, [...action.payload])\n case UPDATE_CUSTOM_VARIABLES:\n return set(state, _ => _.options.params, (params) => [...(params || []), ...action.payload])\n\n case REF_SET:\n return set(state, _ => _.ref, action.payload)\n\n case OPEN:\n return set(state, _ => _.open, action.payload)\n\n case INTERACTION:\n return set(state, _ => _.interactionWithUser, action.payload)\n\n default:\n return state\n }\n}\n\nexport default reducer\n", "export const msName = 'live-chat'\n\nexport const GLOBAL_VISIBILITY_STATE = 'LIVE_CHAT__GLOBAL_VISIBILITY_STATE'\n", "import type { ILiveChatStore, Loaded, Interaction } from './types'\n\nimport { msName } from '../constants'\nimport { ILivechat } from '../types'\n\nexport const LOADED = (state: ILiveChatStore): Loaded => state[msName].loaded.flag\n\nexport const OPTIONS = (state: ILiveChatStore): ILiveChatStore['live-chat']['options'] => state[msName].options\n\nexport const REF = (state: ILiveChatStore): ILivechat | null => state[msName].ref\n\nexport const OPEN = (state: ILiveChatStore): boolean => state[msName].open\n\nexport const INTERACTION_WITH_USER = (state: ILiveChatStore): Interaction => state[msName].interactionWithUser\n", "export const LIVECHAT_OPEN = 'livechat/OPEN'\n", "import { put, select, takeEvery } from 'redux-saga/effects'\nimport { SagaIterator } from '@redux-saga/types'\n\nimport { REF, LOADED } from '../../store/selectors'\n\nimport { LOADING, OPEN } from '../../store/constants'\nimport { LIVECHAT_OPEN } from '../constants'\n\nimport { Loaded } from '../../store/types'\n\nfunction* open(): SagaIterator {\n const loaded: ReturnType = yield select(LOADED)\n\n if (loaded === Loaded.DISCONNECTED) {\n yield put({ type: LOADING, payload: Loaded.CONNECTING })\n yield put({ type: OPEN, payload: true })\n }\n\n const ref = yield select(REF)\n if (ref) {\n ref.open_chat_window()\n }\n}\n\nexport default function* () {\n yield takeEvery(LIVECHAT_OPEN, open)\n}\n", "import { put, select, takeEvery } from 'redux-saga/effects'\nimport { SagaIterator } from '@redux-saga/types'\n\n// import { INTERACTION_WITH_USER } from '../selectors'\n\nimport { INTERACTION, INTERACTION_SAGA } from '../constants'\n\nimport { Interaction } from '../types'\n\nfunction* interactionWithUser(): SagaIterator {\n // const interactionWithUser: Interaction = yield select(INTERACTION_WITH_USER)\n\n // if (interactionWithUser === Interaction.DISABLE_CHECK) {\n // return\n // }\n\n yield put({ type: INTERACTION, payload: Interaction.YES })\n\n // yield put({ type: INTERACTION, payload: Interaction.DISABLE_CHECK })\n}\n\nexport default function* () {\n yield takeEvery(INTERACTION_SAGA, interactionWithUser)\n}\n", "import _get from 'lodash/get'\nimport { persistReducer } from 'redux-persist'\n\nimport localforage from '@qwerty.software/store-manager/localforage'\n\nimport reducer from './reducer'\n\nimport { msName as NAME } from '../constants'\n\nexport const liveChatReducers = {\n [NAME]: persistReducer({\n key: NAME,\n storage: localforage,\n blacklist: [\n 'ref',\n 'options',\n 'loaded',\n ],\n }, reducer),\n}\n\nexport { default as livechatOpenWatcher } from '../methods/open/saga'\nexport { default as livechatInteractionWithUserWatcher } from './sagas/interactionWithUser'", "import axios from 'axios'\n\n/* utils general */\nimport storage from 'utils/storage'\nimport notify from 'utils/notify'\n\nimport { ENV } from 'env'\nimport { CookieStorage } from 'cookie-storage'\n\nexport const axiosTool = ({ options, cb }) => {\n options.withCredentials = true\n options.timeout = 9e4 // 1.5m\n\n const reqSource = axios.CancelToken.source()\n options.cancelToken = options.cancelToken || reqSource.token\n\n const reqInstance = axios.create(options)\n\n const createAxiosResponseInterceptor = () => {\n const interceptor = reqInstance.interceptors.response.use(\n response => {\n if (cb && typeof cb === 'function') {\n return cb(response.data)\n }\n\n return response\n },\n error => {\n console.log(error)\n if (axios.isCancel(error)) {\n // eslint-disable-next-line no-console\n console.warn('Request canceled')\n }\n\n if (error?.response?.status === 401) {\n reqInstance.interceptors.response.eject(interceptor)\n\n return reqInstance.post('/api/v2/auth/refresh')\n .then(response => {\n if (ENV === 'local') {\n error.response.config.params.token = response.data.access_token\n }\n\n if (response.data.expires_in) {\n storage.set('jwt', response.data.access_token, { expires: response.data.expires_in })\n } else {\n storage.set('jwt', response.data.access_token)\n }\n\n error.response.config.headers.Authorization = `Bearer ${response.data.access_token}`\n reqInstance.defaults.headers.common.Authorization = `Bearer ${response.data.access_token}`\n\n return axios(error.response.config)\n })\n .catch(err => {\n delete reqInstance.defaults.headers.common.Authorization\n delete error.response.config.headers.Authorization\n const cookieStorage = new CookieStorage()\n cookieStorage.removeItem('access_token')\n storage.remove('jwt')\n notify.error('Your session has expired. Please login again.')\n\n // setTimeout(() => {\n // window.location.href = '/signin'\n // }, 3000)\n\n return axios(error.response.config)\n })\n .finally(createAxiosResponseInterceptor)\n }\n\n if (cb && typeof cb === 'function') {\n return cb(null, error)\n }\n\n return Promise.reject(error)\n },\n )\n }\n\n createAxiosResponseInterceptor()\n\n return {\n instance: reqInstance(),\n source: !options.cancelToken ? reqSource : null,\n }\n}\n", "const trigger = (name, detail = {}) => {\n const event = new CustomEvent(name, { detail })\n document.dispatchEvent(event)\n}\n\nconst on = (name, handler) => {\n document.addEventListener(name, handler)\n}\n\nconst off = (name, handler) => {\n document.removeEventListener(name, handler, false)\n}\n\nexport default {\n on,\n off,\n trigger,\n}\n", "/* inner */\nexport const USER_AUTHORIZED = 'USER_AUTHORIZED' // overall event when authorized\nexport const USER_SIGNED_IN = 'USER_SIGNED_IN'\nexport const USER_SIGNED_UP = 'USER_SIGNED_UP'\n\nexport const USER_AUTHORIZED_VIA_SOCIAL_ACCOUNT = 'USER_AUTHORIZED_VIA_SOCIAL_ACCOUNT' // overall event when authorized via social account\nexport const USER_AUTHORIZED_VIA_FACEBOOK = 'USER_AUTHORIZED_VIA_FACEBOOK'\n\nexport const USER_UNAUTHORIZED = 'USER_UNAUTHORIZED' // overall event when unauthorized\n\nexport const USER_CHECKED = 'USER_CHECKED'\nexport const AUTH_TYPE_CHANGED = 'AUTH_TYPE_CHANGED'\n\nexport const AUTH_MODAL_OPENED = 'AUTH_MODAL_OPENED'\nexport const REQUEST_CALL_MODAL_OPENED = 'REQUEST_CALL_MODAL_OPENED'\n\nexport const VALIDATE_DISCOUNT_FOR_UNAUTHORIZED = 'VALIDATE_DISCOUNT_FOR_UNAUTHORIZED'\n\nexport const TIPS_MODAL_OPENED = 'TIPS_MODAL_OPENED'\nexport const TIPS_MODAL_CLOSED = 'TIPS_MODAL_CLOSED'\n\nexport const SPECIAL_DISCOUNT_MODAL_OPENED = 'SPECIAL_DISCOUNT_MODAL_OPENED'\nexport const SPECIAL_DISCOUNT_MODAL_CLOSED = 'SPECIAL_DISCOUNT_MODAL_CLOSED'\n\nexport const REVISION_MODAL_OPENED = 'REVISION_MODAL_OPENED'\nexport const REVISION_MODAL_CLOSED = 'REVISION_MODAL_CLOSED'\n\nexport const PRICE_CALCULATED = 'PRICE_CALCULATED'\n\nexport const FIELD_VALIDATED = 'FIELD_VALIDATED__'\n\nexport const VALIDATE_FIELD = 'VALIDATE_FIELD__'\n\nexport const UNIVERSAL_ANIMATION = 'UNIVERSAL_ANIMATION__'\n\nexport const IS_MICROSERVICE_READY = 'IS_MICROSERVICE_READY__'\n\nexport const INQUIRY_FORM_SHOULD_BE_SUBMITTED = 'INQUIRY_FORM_SHOULD_BE_SUBMITTED'\n\nexport const INQUIRY_FORM_REMOTE_SUCCESS = 'INQUIRY_FORM_REMOTE_SUCCESS'\nexport const PHONE_COLLECTOR_REMOTE_SUCCESS = 'PHONE_COLLECTOR_REMOTE_SUCCESS'\n\nexport const TOGGLE_SPINNER_VISIBILITY = 'TOGGLE_SPINNER_VISIBILITY'\nexport const TOGGLE_LIVECHAT_VISIBILITY = 'TOGGLE_LIVECHAT_VISIBILITY'\n\nexport const ORDER_DATA_CHANGED_FROM_CALCULATOR = 'ORDER_DATA_CHANGED_FROM_CALCULATOR'\nexport const ORDER_DATA_CHANGED_FROM_FORM = 'ORDER_DATA_CHANGED_FROM_FORM'\nexport const ORDER_DATA_CHANGED_FROM_DASHBOARD_EDIT = 'ORDER_DATA_CHANGED_FROM_DASHBOARD_EDIT'\n\nexport const COOKIE_POLICY_ACCEPTED = 'COOKIE_POLICY_ACCEPTED'\n\nexport const LIVE_CHAT_APPEARED = 'LIVE_CHAT_APPEARED'\n\nexport const FIELD_VALUE_UPDATED = 'FIELD_VALUE_UPDATED__'\n\nexport const MESSAGE_RECEIVED = 'MESSAGE_RECEIVED'\n\nexport const REFERRALS_PAGE_OPENED = 'REFERRALS_PAGE_OPENED'\nexport const REFERRALS_PAGE_CLOSED = 'REFERRALS_PAGE_CLOSED'\n\nexport const SUBMIT_ORDER_FORM_AFTER_AUTH = 'SUBMIT_ORDER_FORM_AFTER_AUTH'\n", "export const SHOW = 'show'\nexport const HIDE = 'hide'\n", "/* utils general */\nimport customEvent from 'utils/custom-event'\n\n/* constants general */\nimport { TOGGLE_SPINNER_VISIBILITY } from 'constants/custom-events'\nimport { SHOW, HIDE } from 'constants/visibility-actions'\n\nconst toggle = (action) => {\n customEvent.trigger(TOGGLE_SPINNER_VISIBILITY, { action })\n}\n\nconst show = () => {\n toggle(SHOW)\n}\n\nconst hide = () => {\n toggle(HIDE)\n}\n\nexport default {\n show,\n hide,\n toggle,\n}\n", "import FormData from 'form-data'\nimport isPlainObject from 'lodash/isPlainObject'\nimport isBoolean from 'lodash/isBoolean'\nimport QS from 'utils/query-string'\n// import { get as getFingerprint } from 'utils/fingerprint'\nimport { CookieStorage } from 'cookie-storage'\n\n/* env */\nimport {\n ENV,\n API_URL,\n API_PROXY_URL,\n} from 'env'\n\nimport searchLocalGeoTag from 'global-entities/geo-tag/utils/searchLocalGeoTag'\n\n/* tools local */\nimport { axiosTool } from 'utils/http-client/tools/axios'\n\n/* utils general */\nimport globalSpinner from 'utils/global-spinner'\nimport storage from 'utils/storage'\n\n/* helpers general */\nimport getFromConfigs from 'helpers/configs/get-from-configs'\n\n/* constants general */\nimport {\n PROJECT_DOMAIN,\n PROJECT_ID,\n SHOULD_USE_SPECIFIC_API,\n SPECIFIC_API_URL,\n IS_ALIAS_DOMAIN,\n DASHBOARD_SUBDOMAIN,\n} from 'constants/configs'\n\nconst reqH = (options = {}, cb) => {\n const cookieStorage = new CookieStorage()\n\n const requiredDataParams = {\n app_id: getFromConfigs(PROJECT_ID),\n pname: getFromConfigs(PROJECT_DOMAIN),\n }\n const advancedDataParams = {\n ...requiredDataParams,\n timezone: -(new Date()).getTimezoneOffset(),\n url: window.location.origin + window.location.pathname,\n }\n\n if (getFromConfigs(IS_ALIAS_DOMAIN)) {\n advancedDataParams.from_alias_domain = true\n advancedDataParams.alias_domain = window.location.origin\n }\n\n const { IP } = searchLocalGeoTag()\n if (IP) {\n advancedDataParams._ip = IP\n }\n\n const queryJwt = QS.getParam('jwt')\n\n if (queryJwt) {\n storage.set('jwt', queryJwt)\n }\n\n const requestOptions = {}\n\n if (typeof options.shouldUseSpecificApi === 'undefined') {\n options.shouldUseSpecificApi = false\n }\n\n if (typeof options.urlPrefix === 'undefined') {\n options.urlPrefix = 'client'\n }\n if (options.urlPrefix) {\n options.url = `${options.urlPrefix}/${options.url}`\n }\n\n if (options.shouldUseSpecificApi || getFromConfigs(SHOULD_USE_SPECIFIC_API)) {\n const specificApiUrl = options.specificApiUrl || getFromConfigs(SPECIFIC_API_URL)\n requestOptions.url = specificApiUrl + options.url\n } else {\n if (typeof options.useProxy === 'undefined') {\n options.useProxy = true\n }\n\n if (ENV === 'test') {\n options.useProxy = false\n }\n\n if (options.useProxy) {\n if (ENV === 'production' && getFromConfigs(IS_ALIAS_DOMAIN)) {\n const aliasedDomain = getFromConfigs(PROJECT_DOMAIN)\n requestOptions.url = `https://${aliasedDomain}${API_PROXY_URL}${options.url}`\n } else {\n requestOptions.url = API_PROXY_URL + options.url\n }\n } else {\n requestOptions.url = API_URL + options.url\n }\n }\n\n if (typeof options.method === 'undefined') {\n options.method = 'GET'\n }\n if (typeof options.params === 'undefined') {\n options.params = {}\n }\n\n if (!options.params.k && options.params.k !== false) {\n // Random parameter for API requests,\n // so that the exact address does not match\n // and the Cloudflare cache does not work\n options.params.k = Math.random()\n }\n options.params = { ...options.params, ...requiredDataParams }\n requestOptions.params = options.params\n\n if (options.method !== 'GET' && options.data) {\n if (typeof options.sendMethod === 'undefined') {\n options.sendMethod = 'form-data'\n }\n if (options.method === 'PUT') {\n options.sendMethod = 'urlencoded'\n }\n\n options.data = { ...options.data, ...advancedDataParams }\n\n if (options.sendMethod === 'json') {\n requestOptions.data = JSON.stringify(options.data)\n } else if (options.sendMethod === 'urlencoded') {\n requestOptions.data = Object.keys(options.data).map((key) => {\n const value = options.data[key]\n const encodedKey = encodeURIComponent(key)\n\n if (Array.isArray(value)) {\n return value.map((item) => `${encodedKey}[]=${encodeURIComponent(item)}`).join('&')\n }\n\n if (isPlainObject(value) && !(value instanceof File)) {\n const encodedObject = []\n for (const innerKey in value) {\n encodedObject.push(`${encodedKey}[${innerKey}]=${encodeURIComponent(value[innerKey])}`)\n }\n return encodedObject.join('&')\n }\n\n return `${encodedKey}=${encodeURIComponent(value)}`\n }).join('&')\n } else {\n const formData = new FormData()\n Object.keys(options.data).forEach((key) => {\n const value = options.data[key]\n if (Array.isArray(value)) { // if value is array - add each key\n Object.keys(value).forEach((innerKey) => {\n formData.append(`${key}[]`, value[innerKey])\n })\n } else if (isPlainObject(value) && !(value instanceof File)) { // if value is object - add each key to the overall key\n for (const innerKey in value) {\n formData.append(`${key}[${innerKey}]`, value[innerKey])\n }\n } else {\n formData.append(key, value)\n }\n })\n requestOptions.data = formData\n }\n }\n\n requestOptions.method = options.method\n\n requestOptions.headers = {\n // Fingerprint: getFingerprint(),\n ...(options?.headers || {}),\n }\n\n let jwt = storage.get('jwt', { ignoreExpitesAt: true })\n\n const isCookieSessionFlow = !!getFromConfigs(DASHBOARD_SUBDOMAIN)\n const jwtCookieStorage = cookieStorage.getItem('access_token')\n\n if (isCookieSessionFlow && !jwtCookieStorage && !queryJwt) {\n storage.remove('jwt')\n jwt = null\n }\n\n if (isCookieSessionFlow && jwtCookieStorage && !jwt && !queryJwt) {\n storage.set('jwt', jwtCookieStorage)\n jwt = jwtCookieStorage\n }\n\n if (jwt) {\n if (ENV === 'local') {\n requestOptions.params.token = jwt\n requestOptions.headers.Authorization = `Bearer ${jwt}`\n } else {\n requestOptions.headers.Authorization = `Bearer ${jwt}`\n }\n }\n\n if (storage.get('Visitor')) {\n requestOptions.headers.Visitor = storage.get('Visitor')\n }\n\n requestOptions.mode = 'cors'\n\n if (options.cancelToken) {\n requestOptions.cancelToken = options.cancelToken\n }\n\n if (!options.skipGlobalSpinner) {\n globalSpinner.show()\n }\n\n if (options.onUploadProgress) {\n requestOptions.onUploadProgress = options.onUploadProgress\n }\n\n const requestToolOptions = {\n options: requestOptions,\n cb,\n }\n\n if (isBoolean(options.hideGlobalSpinnerAfterResponse)) {\n requestToolOptions.hideGlobalSpinner = options.hideGlobalSpinnerAfterResponse\n } else if (options.skipGlobalSpinner) {\n requestToolOptions.hideGlobalSpinner = false\n }\n\n return axiosTool(requestToolOptions)\n}\n\n/**\n * @type (options?: TOptions) => Promise\n */\nexport const reqHPromise = (options = {}) => new Promise((resolve, reject) => {\n\n reqH(options, (response, error) => {\n if (error) {\n reject(error)\n } else {\n resolve(response)\n }\n })\n})\n\nexport default reqH\n", "import { CookieStorage } from 'cookie-storage'\n\nconst REDESIGN_REFERRER = 'redesign-referrer'\nconst REDESIGN_REFERRER_FLAG = 'redesign-referrer-flag'\nconst REDESIGN_REFERRER_MARK = 'sended'\n\nexport const getRedesignReferrer = (): string | false => {\n const cookieStorage = new CookieStorage()\n\n // setted from cloudflare worker\n const redesignReferrer = cookieStorage.getItem(REDESIGN_REFERRER)\n const redesignReferrerFlag = localStorage[REDESIGN_REFERRER_FLAG] !== REDESIGN_REFERRER_MARK\n\n if (redesignReferrerFlag && redesignReferrer) {\n return redesignReferrer\n }\n\n return false\n}\n\nexport const setRedesignReferrer = (): boolean => {\n const cookieStorage = new CookieStorage()\n\n const redesignReferrer = cookieStorage.getItem(REDESIGN_REFERRER)\n const redesignReferrerFlag = localStorage[REDESIGN_REFERRER_FLAG] !== REDESIGN_REFERRER_MARK\n\n if (redesignReferrerFlag && redesignReferrer) {\n localStorage['redesign-referrer-flag'] = 'sended'\n\n return true\n }\n\n return false\n}\n", "import storage from 'utils/storage'\n\nimport { TEMP_QS_KEY } from 'constants/storage'\n\ntype TempQueryType = string[]\ntype QueryType = {\n [key: string]: any\n}\n\nexport const getTempQuery = () => {\n const tempQuery: TempQueryType = storage.get(TEMP_QS_KEY, { isOuterKey: true }) || []\n\n return tempQuery.reduce((accumulator, param) => {\n const [key, value] = param.split('=')\n\n if (key && value) {\n accumulator[key] = decodeURIComponent(value)\n }\n\n return accumulator\n }, {} as QueryType)\n}\n", "const AB_TEST_REFERRER = 'abTestReferrer'\n\nexport const getABTestReferrer = (): string | false => {\n if (localStorage.abTestReferrer) {\n setTimeout(() => {\n localStorage.removeItem(AB_TEST_REFERRER)\n }, 1000)\n\n return localStorage.abTestReferrer\n }\n\n return false\n}\n", "import storage from 'utils/storage'\n\nimport { getRedesignReferrer } from 'utils/from-url/redesign-referrer'\nimport { getTempQuery } from 'utils/from-url/temp-query'\nimport { getABTestReferrer } from 'utils/from-url/a-b-test-referrer'\n\nimport { REFERRER } from 'constants/storage'\n\nexport const getFromURL = () => {\n const redesignReferrer = getRedesignReferrer()\n if (redesignReferrer) {\n return redesignReferrer\n }\n\n const query = getTempQuery()\n if ('from_url' in query) {\n return query.from_url\n }\n\n const abTestReferrer = getABTestReferrer()\n if (abTestReferrer) {\n return abTestReferrer\n }\n\n if ('utm_referrer' in query && document.referrer === '') {\n return query.utm_referrer\n }\n\n const referrer = storage.get(REFERRER, { isOuterKey: true })\n if (referrer) {\n return referrer\n }\n\n return document.referrer\n}\n", "import storage from 'utils/storage'\n\nexport enum Visitor {\n OLD,\n NEW,\n}\n\nlet issetVisitorFlag = false\nlet issetVisitorIsNewFlag = false\n\nexport const getVisitor = (): number => storage.get('Visitor')\n\nexport const setVisitor = (visitorId: number): void => {\n // @ts-ignore\n storage.set('Visitor', visitorId, { share: true })\n issetVisitorFlag = true\n}\n\nexport const getIsNewVisitor = (): Visitor => (storage.get('is_new_visitor') ? Visitor.NEW : Visitor.OLD)\n\nexport const setIsNewVisitor = (isNew: Visitor): void => {\n // @ts-ignore\n storage.set('is_new_visitor', isNew ? Visitor.NEW : Visitor.OLD, { share: true })\n issetVisitorIsNewFlag = true\n}\n\nexport const issetVisitor = (): boolean => issetVisitorFlag && issetVisitorIsNewFlag\n", "import _size from 'lodash/size'\nimport Bugsnag from '@bugsnag/js'\nimport pluralize from 'pluralize'\n\nimport { reqHPromise } from 'utils/http-client/request-handler'\n\nimport { getFromURL } from 'utils/from-url'\nimport { getVisitor, getIsNewVisitor, setIsNewVisitor, Visitor } from 'utils/visitor'\n\nimport type { InteriorTrackDataType } from 'utils/action-tracker/interior-track/types'\nimport type { Action, Response } from 'utils/action-tracker/interior-track/store/sagas/track/types'\n\nconst request = async (payload: Action['payload']) => {\n const is_new = getIsNewVisitor()\n setIsNewVisitor(Visitor.OLD)\n\n try {\n const response: Response = await reqHPromise({\n method: 'POST',\n url: 'hj/TcKBd22fwu5TG',\n urlPrefix: false,\n data: {\n ...(payload.data || {}),\n event_name: payload.eventName,\n url_current: window.location.href,\n url_from: getFromURL(),\n visitor_id: getVisitor(),\n is_new,\n } as InteriorTrackDataType,\n })\n\n if (_size(response.errors) > 0) {\n setIsNewVisitor(is_new)\n throw new Error(`${pluralize('Reason', _size(response.errors))}: \"${response.errors.join('\", \"')}\".`)\n }\n\n return response\n } catch (error) {\n setIsNewVisitor(is_new)\n Bugsnag.notify(error as any)\n }\n}\n\nexport default request\n", "export const INTERIOR_TRACK = 'INTERIOR_TRACK'\n", "import { SagaIterator } from '@redux-saga/types'\nimport { call, takeEvery } from 'redux-saga/effects'\nimport _size from 'lodash/size'\n\nimport request from 'utils/action-tracker/interior-track/store/sagas/track/request'\n\nimport { INTERIOR_TRACK } from 'utils/action-tracker/interior-track/store/constants'\n\nimport type { Action } from 'utils/action-tracker/interior-track/store/sagas/track/types'\n\nfunction* track(action: Action): SagaIterator {\n try {\n if (!action.payload.eventName) {\n return\n }\n\n const response: Request = yield call(request, action.payload)\n\n if (action.payload.callback) {\n action.payload.callback(null, response)\n }\n } catch (error) {\n let errorMessage = \"Unknown error\"\n if (error instanceof Error) {\n errorMessage = error.message\n }\n console.error('[Track failure]', errorMessage)\n\n if (action.payload.callback) {\n action.payload.callback(error, null)\n }\n }\n}\n\nexport default function* () {\n yield takeEvery(INTERIOR_TRACK, track)\n}\n", "import loadImage from 'blueimp-load-image'\n\ninterface ReorientImageMiddleware {\n (file: FileList | File[]): Promise\n}\n\nexport const reorientImagesMiddleware: ReorientImageMiddleware = async (files: FileList | File[]) => {\n const result: Array = await Promise.all(Array.from(files).map(async (file) => {\n return await loadImage(\n file,\n { orientation: true, meta: true, canvas: true }\n )\n .then(data => {\n if (!data?.imageHead) throw new Error()\n loadImage.writeExifData(data.imageHead, data, 'Orientation', 1)\n return new Promise(resolve => {\n data.image.toBlob(blob => {\n data.blob = blob\n resolve(data)\n }, file.type)\n })\n })\n .then(data => loadImage.replaceHead(data.blob, data.imageHead))\n .then(blob => {\n return new File([blob], file.name)\n })\n .catch(() => file)\n }))\n\n return result\n}", "import { put, call, take, race } from 'redux-saga/effects'\nimport axios from 'axios'\n\nimport md5 from 'md5'\n\nimport StoreManager from '@qwerty.software/store-manager'\n\nimport { reqHPromise } from 'utils/http-client/request-handler'\n\nimport { slice } from '../../slice'\n\nimport { reorientImagesMiddleware } from '../../middlewares/reorient-image'\n\nimport validatorRegister from '../../validators'\n\nimport {\n cancelFileUpload,\n\n CANCEL_UPLOAD_FILES,\n\n UploadFileResponse,\n\n FileMeta,\n} from '../../definitions'\nimport { PreloadState } from 'global-entities/files-uploader/definitions'\n\ntype UpdateFile = (file: Parameters[0]['file']) => ReturnType\ntype Pending = () => ReturnType\ntype Fulfilled = () => ReturnType\ntype Rejected = (error: string) => ReturnType\ntype Progress = (progress: number) => ReturnType\n\nconst createUploadFile = (namespace: string) => {\n const getValidator = validatorRegister()\n\n return function* uploadFile(file: File) {\n file = (yield call(reorientImagesMiddleware, [file]))[0]\n\n const hash = `${md5(file.name)}${Math.random()}`\n\n const update: UpdateFile = file => slice.actions.updateFile({ namespace, hash, file })\n\n const pending: Pending = () => update({ preload: { state: PreloadState.PENDING, progress: 0, error: null } })\n const progress: Progress = progress => update({ preload: { state: PreloadState.PROGRESS, progress, error: null } })\n const fulfilled: Fulfilled = () => update({ preload: { state: PreloadState.FULFILLED, progress: 100, error: null } })\n const rejected: Rejected = error => update({ preload: { state: PreloadState.REJECTED, error } })\n\n const fileMeta: FileMeta = {\n id: null,\n file: {\n name: file.name,\n size: file.size,\n },\n\n hash,\n }\n\n yield put(slice.actions.addFile({ namespace, files: fileMeta }))\n\n const validators = getValidator(namespace, fileMeta)\n\n const errors = validators.reduce((acc, validator) => {\n try {\n validator(fileMeta)\n } catch (error) {\n return [...acc, error]\n }\n\n return acc\n }, [] as Array)\n\n if (errors.length > 0) {\n return\n }\n\n let errorMessage = 'Something went wrong'\n try {\n const { token, cancel } = axios.CancelToken.source()\n function* request() {\n let result: UploadFileResponse | null = null\n try {\n yield put(pending())\n result = yield call(reqHPromise, {\n method: 'POST',\n url: 'preload-files',\n data: { file },\n cancelToken: token,\n onUploadProgress: (progressEvent: ProgressEvent) => {\n const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)\n\n StoreManager.getInstance().store.dispatch(progress(percentCompleted))\n },\n })\n yield put(fulfilled())\n } catch (error) {\n yield put(rejected(error.message))\n }\n\n return result\n }\n\n const result: {\n response?: UploadFileResponse\n cancelation?: ReturnType\n removeFile?: ReturnType\n } = yield race({\n response: call(request),\n cancelation: take(`${CANCEL_UPLOAD_FILES}/${fileMeta.hash}`),\n removeFile: call(function* () {\n while (true) {\n const removeFileAction: ReturnType = yield take(slice.actions.removeFile.type)\n\n if (namespace === removeFileAction.payload.namespace) {\n return removeFileAction\n }\n }\n }),\n })\n\n if (result.removeFile) {\n cancel('File removed.')\n\n return\n }\n\n if (result.cancelation) {\n errorMessage = 'Canceled'\n\n cancel(errorMessage)\n yield put(rejected(errorMessage))\n }\n\n const { data, errors } = (result.response || {}) as UploadFileResponse\n\n if (!data) {\n if (errors?.length > 0) {\n throw new ResponseError(errors[0])\n }\n\n throw new EmptyResponseError()\n }\n\n yield put(update({\n id: data.uploaded_file_id,\n }))\n } catch (error) {\n if (error instanceof ResponseError) {\n errorMessage = error.message\n }\n\n yield put(update({\n preload: {\n error: errorMessage,\n }\n }))\n }\n }\n}\n\nexport default createUploadFile\n\nexport class ResponseError extends Error { }\nexport class EmptyResponseError extends Error { }", "import { takeEvery, fork } from 'redux-saga/effects'\n\nimport createUploadFile from './single-file'\n\nimport {\n UPLOAD_FILES_SAGA,\n\n UploadFilesSagaAction,\n} from '../../definitions'\n\nfunction* uploadFilesSaga(action: UploadFilesSagaAction) {\n const { namespace } = action.payload\n const files = Array.isArray(action.payload.files)\n ? action.payload.files\n : [action.payload.files]\n\n const upload = createUploadFile(namespace)\n\n for (const file of files) {\n yield fork(upload, file)\n }\n}\n\nexport function* uploadFilesSagaWatcher() {\n yield takeEvery(UPLOAD_FILES_SAGA, uploadFilesSaga)\n}", "export enum CurrencyIds {\n USD = 1,\n EUR = 2,\n GBP = 3,\n AUD = 4,\n CAD = 6,\n AED = 7,\n SGD = 9,\n HKD = 10,\n}\n\nexport interface ICurrency {\n id: number,\n name: string,\n symbol: string | undefined\n rate: number\n}\n\nexport const DEFAULT_CURRENCY: ICurrency = { id: CurrencyIds.USD, name: 'USD', symbol: '$', rate: 1 }\n\nexport const NAME = 'currency'\n", "import localforage from 'localforage'\n\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { DEFAULT_CURRENCY, ICurrency, NAME } from './constants'\n\nimport getFromConfigs from 'helpers/configs/get-from-configs'\nimport { PROJECT_DOMAIN } from 'constants/configs'\n\ninterface ICurrencyState {\n currency: ICurrency\n}\n\nconst INITIAL_STATE: ICurrencyState = {\n currency: DEFAULT_CURRENCY\n}\n\nconst domain: string = getFromConfigs(PROJECT_DOMAIN)\n\nexport const currencySlice = createSlice({\n name: `slice://${NAME}/`,\n initialState: INITIAL_STATE,\n reducers: {\n change(state: ICurrencyState, action: PayloadAction<{ currency: ICurrency }>) {\n state.currency = action.payload.currency\n },\n },\n})\n\nexport const CURRENCY_SLICE_PERSIST_CONFIG = {\n keyPrefix: '',\n key: currencySlice.name,\n storage: localforage.createInstance({\n name: '[MSH] Storage',\n storeName: `${NAME}:${domain}`,\n driver: [\n // localforage.INDEXEDDB,\n localforage.LOCALSTORAGE,\n ]\n }),\n}\n\n\ninterface State {\n [currencySlice.name]: ICurrencyState\n}\n\n// @ts-ignore\nexport const HYDRATED = (state: State): boolean => Boolean(state?.[currencySlice.name]?._persist?.rehydrated)\nexport const CURRENCY = (state: State): ICurrencyState['currency'] => state[currencySlice.name]['currency']\n", "import type { BootstrapData } from 'types/BootstrapData'\n\nconst GLOBAL_BOOTSTRAP_DATA_FIELDS = ['livechatGroupsIDs'] as const\n\nenum PickedBdFields {\n paperTypes = 'paperTypes',\n paperTypeGroups = 'paperTypeGroups',\n subjects = 'subjects',\n academicLevels = 'academicLevels',\n paperFormats = 'paperFormats',\n workTypes = 'workTypes',\n deadlines = 'deadlines',\n spacings = 'spacings',\n writerCategories = 'writerCategories',\n additionalFeatures = 'additionalFeatures',\n softwares = 'softwares',\n softcopies = 'softcopies',\n speakerNotes = 'speakerNotes',\n prices = 'prices',\n currencies = 'currencies'\n}\n\nexport const KEY = 'MICROSERVICES_BOOTSTRAP_DATA' as const\n\ndeclare global {\n interface Window {\n [KEY]?: BootstrapData.ICore\n }\n}\n\nexport const initBootstrapData = (...args: Array) => {\n const prevBootstrapData = window[KEY] || {}\n\n const bootstrapData = Object.assign({}, prevBootstrapData, ...args) as BootstrapData.ICore\n\n // transform for price calculator\n // @ts-ignore\n bootstrapData.priceCalculatorAdapted = {\n bdPrices: bootstrapData[PickedBdFields.prices],\n bdPaperTypeGroups: bootstrapData[PickedBdFields.paperTypeGroups],\n bdPaperTypes: bootstrapData[PickedBdFields.paperTypes],\n bdAcademicLevels: bootstrapData[PickedBdFields.academicLevels],\n bdSpacings: bootstrapData[PickedBdFields.spacings],\n bdSubjects: bootstrapData[PickedBdFields.subjects],\n bdSoftwares: bootstrapData[PickedBdFields.softwares],\n bdWriterCategories: bootstrapData[PickedBdFields.writerCategories],\n bdAdditionalFeatures: bootstrapData[PickedBdFields.additionalFeatures],\n bdSoftcopies: bootstrapData[PickedBdFields.softcopies],\n bdSpeakerNotes: bootstrapData[PickedBdFields.speakerNotes],\n bdCurrencies: bootstrapData[PickedBdFields.currencies],\n }\n\n for (const key of GLOBAL_BOOTSTRAP_DATA_FIELDS) {\n window[key] = bootstrapData[key]\n }\n\n window[KEY] = bootstrapData\n\n return bootstrapData\n}\n\nexport type { BootstrapData } from 'types/BootstrapData'\n", "import { KEY } from './init'\n\nexport const getBootstrapData = () => {\n if (!window[KEY]) {\n throw new Error('Bootstrap data is not initialized')\n }\n\n return window[KEY]\n}", "export enum Entity {\n MAIN = 'main',\n CALCULATOR = 'calculator',\n BOT = 'bot',\n INQUIRY = 'inquiry',\n DASHBOARD = 'dashboard'\n}", "import notify from 'utils/notify'\nimport storage from \"utils/storage\"\n\ninterface ISessionNotify {\n text: string\n timeOut?: number\n extendedTimeOut?: number\n method?: 'success' | 'warning'\n key: string\n}\n\nexport const sessionNotify = ({\n text,\n method = 'success',\n timeOut = 8000,\n extendedTimeOut = 3000,\n key\n}: ISessionNotify) => {\n if (!storage.get(key, { storageType: 'session' })) {\n\n notify[method](text, {\n autoHideDuration: timeOut,\n },\n )\n\n storage.set(key, true, { storageType: 'session' })\n }\n}\n", "import { SAGAS_SCHEMA } from 'constants/sagas'\nimport { NAME } from '@qwerty.software/ui-order-form/src/constants'\n\nexport const SAGAS_PREFIX = `${SAGAS_SCHEMA}${NAME}/` as const\n\nexport enum FieldNames {\n PAPER_TYPE = 'paperType',\n SUBJECT = 'subject',\n TOPIC = 'topic',\n PAPER_DETAILS = 'paperDetails',\n PAPER_FORMAT = 'paperFormat',\n\n ACADEMIC_LEVEL = 'academicLevel',\n WORK_TYPE = 'workType',\n DEADLINE = 'deadline',\n\n QUANTITY_KEY = 'quantityKey',\n QUANTITY = 'quantity',\n WORDS = 'words',\n\n PAGES_WORDS_SWITCHER = 'pagesWordsSwitcher',\n SPACING = 'spacing',\n SLIDES = 'slides',\n SPEAKER_NOTES = 'speakerNotes',\n SOURCES = 'sources',\n SOFT_COPIES = 'softCopies',\n\n WRITER_CATEGORY = 'writerCategory',\n PREFERRED_ORDER = 'preferredOrder',\n ADDITIONAL_FEATURES = 'additionalFeatures',\n SOFTWARE = 'software',\n}\n\nexport enum QuantityKeys {\n PAGES = 'pages',\n WORDS = 'words',\n PROBLEMS = 'problems',\n QUESTIONS = 'questions',\n}\n\nexport enum SpacingIds {\n DOUBLE = 118,\n ONE_AND_HALF = 186,\n SINGLE = 117,\n}\n\nexport const DEFAULT_NUMBER_MAX_VALUE = 9999\nexport const DEFAULT_WORDS_PER_PAGE = 275\n\nexport enum WorkTypeIds {\n MULTIPLY_CHOISE_QUESTIONS = 201,\n PROBLEM_SOLVING = 22,\n WRITING_FROM_SCRATCH = 20,\n PARAPHRASING_REWRITING = 175,\n EDITING_PROOFREADING = 21,\n QUESTIONS_AND_ANSWERS_DEP = 212,\n GRADING_MARKING_DEP = 172,\n}\n\nexport enum PaperTypeIds {\n MULTIPLY_CHOISE_QUESTIONS = 200,\n PROBLEM_SOLVING = 110,\n ESSAY = 90,\n QUESTIONS_AND_ANSWERS_DEP = 211,\n QUESTIONS_AND_ANSWERS = 219,\n REPORT = 94,\n COURSE_WORK = 87,\n CASE_STUDY = 86,\n RESEARCH_PAPER = 95,\n CV_WRITING__COVER_LETTER__FOLLOW_UP = 166,\n RESUME_WRITING__COVER_LETTER__FOLLOW_UP = 168,\n}\n\nexport enum UpsaleIds {\n PLAGIARISM_REPORT = 4,\n PROGRESSIVE_DELIVERY = 5,\n FOLLOW_UP = 6,\n LINKED_IN = 7,\n SOFT_COPIES = 8,\n SUMMARY = 9,\n DRAFT = 10,\n ABSTRACT = 12,\n GRAMMARLY_REPORT = 13,\n SPEAKER_NOTES = 14,\n SECOND_VERSION_ORDER = 15,\n TURNITIN_REPORT = 16,\n AI_CHECK_REPORT = 17,\n VIP_SERVICE = 18,\n}\n\nexport enum AcademicLevelIds {\n HIGH_SCHOOL = 10,\n UNDERGRADUATE = 11,\n PHD = 13,\n}\n\nexport enum DeadlineIds {\n FOUR_HOURS = 215,\n SIX_HOURS = 1,\n TWELVE_HOURS = 2,\n TWENTY_FOUR_HOURS = 3,\n TWO_DAYS = 4,\n THREE_DAYS = 5,\n FIVE_DAYS = 6,\n SEVEN_DAYS = 7,\n NINE_DAYS = 8,\n FOURTEEN_DAYS = 9,\n TWENTY_DAYS = 190,\n}\n\nexport enum WriterCategoryIds {\n BEST_AVAILIBLE = 1,\n PRO = 2,\n TOP = 3,\n PREFERRED = 11,\n}\n\nexport enum PaperFormatIds {\n APA = 26,\n}\n\nexport enum SubjectIds {\n OTHER = 78,\n NURSING = 63,\n BUSINESS = 35,\n ENGLISH = 45,\n PSYCHOLOGY = 68,\n MANAGEMENT = 58,\n}\n\nexport enum SoftwareIds {\n AUTO_CAD = 1,\n MATLAB = 2,\n SPSS = 3,\n MS_ACCESS = 4,\n STATA = 5,\n DATABASE = 6,\n PROGRAMMING_LANGUAGE = 7,\n OTHER = 8,\n WRITERS_CHOICE = 9,\n JAVA_SCRIPT = 10,\n HTML_CSS = 11,\n R_STUDIO = 12,\n PYTHON = 13,\n CISCO_PACKET_TRACER = 14,\n}\n", "import { PAGES_INDEX } from 'constants/pagesWordsSwitcher'\n\nimport getFromConfigs from 'helpers/configs/get-from-configs'\nimport { PROJECT_DOMAIN } from 'constants/configs'\n\nimport { ORDER_DATA_DEFAULTS } from 'constants/configs'\n\nimport type {\n OrderDataLists,\n OrderValues,\n OrderState,\n} from './types'\n\nimport { SAGAS_SCHEMA } from 'constants/sagas'\nimport {\n FieldNames,\n PaperTypeIds,\n WriterCategoryIds,\n SubjectIds,\n PaperFormatIds,\n DeadlineIds,\n AcademicLevelIds,\n WorkTypeIds,\n QuantityKeys,\n SpacingIds,\n DEFAULT_NUMBER_MAX_VALUE,\n} from '@qwerty.software/ui-order-form/src/store/constants'\n\nconst domain: string = getFromConfigs(PROJECT_DOMAIN)\n\nexport const NAME = `order.form:${domain}` as const\n\nexport const SAGAS_PREFIX = `${SAGAS_SCHEMA}${NAME}/` as const\n\nexport const PAGES_SWITCHER_KEY = 0 as const\nexport const WORDS_SWITCHER_KEY = 1 as const\n\nexport enum PickedBdFields {\n paperTypes = 'paperTypes',\n paperTypeGroups = 'paperTypeGroups',\n subjects = 'subjects',\n academicLevels = 'academicLevels',\n paperFormats = 'paperFormats',\n workTypes = 'workTypes',\n deadlines = 'deadlines',\n spacings = 'spacings',\n writerCategories = 'writerCategories',\n additionalFeatures = 'additionalFeatures',\n softwares = 'softwares',\n softcopies = 'softcopies',\n speakerNotes = 'speakerNotes',\n prices = 'prices',\n currencies = 'currencies'\n}\n\nexport const MAX_QUANTITY_KEY = 'maxQuantity'\nexport const MAX_SLIDES_KEY = 'maxSlides'\n\nexport const INITIAL_LISTS: OrderDataLists = {\n paperFormats: [],\n paperTypes: [],\n subjects: [],\n academicLevels: [],\n workTypes: [],\n deadlines: [],\n spacings: [],\n writerCategories: [],\n additionalFeatures: [],\n softwares: [],\n currencies: [],\n}\nconst orderDataDefaults = getFromConfigs(ORDER_DATA_DEFAULTS)\n\nexport const INITIAL_VALUES: OrderValues = {\n [FieldNames.PAPER_TYPE]: (orderDataDefaults && orderDataDefaults.paperType) || PaperTypeIds.ESSAY,\n [FieldNames.SUBJECT]: (orderDataDefaults && orderDataDefaults.subject) || SubjectIds.OTHER,\n [FieldNames.TOPIC]: (orderDataDefaults && orderDataDefaults.topic) || '',\n [FieldNames.PAPER_DETAILS]: (orderDataDefaults && orderDataDefaults.paperDetails) || '',\n [FieldNames.PAPER_FORMAT]: (orderDataDefaults && orderDataDefaults.paperFormat) || PaperFormatIds.APA,\n\n [FieldNames.ACADEMIC_LEVEL]: (orderDataDefaults && orderDataDefaults.academicLevel) || AcademicLevelIds.HIGH_SCHOOL,\n [FieldNames.WORK_TYPE]: (orderDataDefaults && orderDataDefaults.workType) || WorkTypeIds.WRITING_FROM_SCRATCH,\n [FieldNames.DEADLINE]: (orderDataDefaults && orderDataDefaults.deadline) || DeadlineIds.FOURTEEN_DAYS,\n [FieldNames.QUANTITY_KEY]: QuantityKeys.PAGES,\n [FieldNames.QUANTITY]: (orderDataDefaults && orderDataDefaults.pages) || (orderDataDefaults && orderDataDefaults.pages) === 0 ? orderDataDefaults.pages : 1,\n [FieldNames.WORDS]: (orderDataDefaults && orderDataDefaults.words) || (orderDataDefaults && orderDataDefaults.words) === 0 ? orderDataDefaults.words : 275,\n [FieldNames.PAGES_WORDS_SWITCHER]: (orderDataDefaults && orderDataDefaults.pagesWordsSwitcher) || (orderDataDefaults && orderDataDefaults.pagesWordsSwitcher) === 0 ? orderDataDefaults.pagesWordsSwitcher : PAGES_INDEX,\n [FieldNames.SPACING]: SpacingIds.DOUBLE,\n [FieldNames.SLIDES]: (orderDataDefaults && orderDataDefaults.slides) || 0,\n [FieldNames.SPEAKER_NOTES]: false,\n [FieldNames.SOURCES]: (orderDataDefaults && orderDataDefaults.sources) || 0,\n [FieldNames.SOFT_COPIES]: false,\n\n [FieldNames.WRITER_CATEGORY]: (orderDataDefaults && orderDataDefaults.writerCategory) || WriterCategoryIds.BEST_AVAILIBLE,\n [FieldNames.PREFERRED_ORDER]: {\n value: '',\n sended: false,\n\n errors: [],\n data: undefined,\n isLoading: false,\n },\n [FieldNames.ADDITIONAL_FEATURES]: (orderDataDefaults && orderDataDefaults.additionalFeatures) || [],\n [FieldNames.SOFTWARE]: {\n checked: false,\n value: (orderDataDefaults && orderDataDefaults.software) || 9,\n },\n\n validation: {},\n\n placeOrderPending: false,\n\n orderChanged: false,\n showReminder: false,\n\n lastChangedAt: undefined,\n\n [MAX_QUANTITY_KEY]: DEFAULT_NUMBER_MAX_VALUE,\n [MAX_SLIDES_KEY]: DEFAULT_NUMBER_MAX_VALUE,\n}\n\nexport const INITIAL_STATE: OrderState = {\n ...INITIAL_VALUES,\n}\n\nexport const COMMON_PERSIST_BLACKLIST = [\n 'preferredOrder.isLoading',\n 'discount.isLoading',\n 'validation',\n 'placeOrderPending',\n]\n\nexport const ORDER_SLICE_NAME = `slice://${NAME}/`\n", "import { UpsaleIds, DeadlineIds, QuantityKeys, WorkTypeIds, SpacingIds, FieldNames, AcademicLevelIds } from '@qwerty.software/ui-order-form/src/store/constants'\n\nexport const MIN_DEADLINE_WRITING_FROM_SCRATCH = DeadlineIds.FOUR_HOURS\nexport const MIN_DEADLINE_BY_WORKTYPE = DeadlineIds.SIX_HOURS\n\nexport const subjectFlagToDisableDeadline = 'isTechnical'\n\nexport const disabledAdditionalFeaturesByMultiplyChoiseQuestions = [\n UpsaleIds.PLAGIARISM_REPORT,\n UpsaleIds.SUMMARY,\n UpsaleIds.DRAFT,\n UpsaleIds.ABSTRACT,\n UpsaleIds.GRAMMARLY_REPORT,\n]\n\nexport const disabledAdditionalFeaturesByPaperType = [\n UpsaleIds.FOLLOW_UP,\n]\n\nexport const disabledDeadlinesByWorkType = {\n [WorkTypeIds.MULTIPLY_CHOISE_QUESTIONS]: [\n DeadlineIds.FOUR_HOURS,\n ],\n [WorkTypeIds.PROBLEM_SOLVING]: [\n DeadlineIds.FOUR_HOURS,\n ],\n [WorkTypeIds.PARAPHRASING_REWRITING]: [\n DeadlineIds.FOUR_HOURS,\n ],\n [WorkTypeIds.EDITING_PROOFREADING]: [\n DeadlineIds.FOUR_HOURS,\n ],\n}\n\nexport const disabledDeadlinesByAcademicLevel = {\n [AcademicLevelIds.PHD]: [\n DeadlineIds.FOUR_HOURS,\n ],\n}\n\nexport const MAX_PROBLEMS_AND_QUESTIONS_CONFIG = {\n [QuantityKeys.PROBLEMS]: {\n [DeadlineIds.FOUR_HOURS]: 4, // deadlineId: problems or questions\n [DeadlineIds.SIX_HOURS]: 5,\n [DeadlineIds.TWELVE_HOURS]: 10,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 20,\n },\n [QuantityKeys.QUESTIONS]: {\n [DeadlineIds.FOUR_HOURS]: 20,\n [DeadlineIds.SIX_HOURS]: 35,\n [DeadlineIds.TWELVE_HOURS]: 70,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 140,\n },\n}\n\nexport const MAX_SLIDES_AND_PAGES_CONFIG = {\n [WorkTypeIds.EDITING_PROOFREADING]: {\n [SpacingIds.DOUBLE]: {\n [DeadlineIds.FOUR_HOURS]: 6, // deadlineId: pages + slides\n [DeadlineIds.SIX_HOURS]: 8,\n [DeadlineIds.TWELVE_HOURS]: 16,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 32,\n },\n [SpacingIds.ONE_AND_HALF]: {\n [DeadlineIds.FOUR_HOURS]: 4,\n [DeadlineIds.SIX_HOURS]: 5,\n [DeadlineIds.TWELVE_HOURS]: 10,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 21,\n },\n [SpacingIds.SINGLE]: {\n [DeadlineIds.FOUR_HOURS]: 3,\n [DeadlineIds.SIX_HOURS]: 4,\n [DeadlineIds.TWELVE_HOURS]: 8,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 16,\n },\n },\n other: {\n [SpacingIds.DOUBLE]: {\n [DeadlineIds.FOUR_HOURS]: 4,\n [DeadlineIds.SIX_HOURS]: 5,\n [DeadlineIds.TWELVE_HOURS]: 10,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 20,\n },\n [SpacingIds.ONE_AND_HALF]: {\n [DeadlineIds.FOUR_HOURS]: 3,\n [DeadlineIds.SIX_HOURS]: 4,\n [DeadlineIds.TWELVE_HOURS]: 8,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 15,\n },\n [SpacingIds.SINGLE]: {\n [DeadlineIds.FOUR_HOURS]: 2,\n [DeadlineIds.SIX_HOURS]: 3,\n [DeadlineIds.TWELVE_HOURS]: 5,\n [DeadlineIds.TWENTY_FOUR_HOURS]: 10,\n },\n },\n}\n\nexport const AFFECTING_TO_MAX_VALUE_FIELDS = [\n FieldNames.PAPER_TYPE,\n FieldNames.WORK_TYPE,\n FieldNames.DEADLINE,\n FieldNames.SPACING,\n FieldNames.PAGES_WORDS_SWITCHER,\n FieldNames.QUANTITY,\n FieldNames.WORDS,\n FieldNames.SLIDES,\n]\n\nexport const MULTIPLY_QUESTIONS_NOTIFICATION_KEY = 'SHOW_MULTIPLY_QUESTIONS_NOTIF'\n", "import _difference from 'lodash/difference'\nimport { OrderValues } from \"../types\"\n\nimport { sessionNotify } from '@qwerty.software/ui-order-form/src/utils/helpers/session-notify'\n\nimport { FieldNames, PaperTypeIds, QuantityKeys, WorkTypeIds } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { PAGES_SWITCHER_KEY } from '@qwerty.software/ui-order-form/src/store/slices/order/constants'\nimport { MIN_DEADLINE_BY_WORKTYPE, disabledAdditionalFeaturesByMultiplyChoiseQuestions, disabledDeadlinesByWorkType } from './constants'\nimport { PayloadAction } from '@reduxjs/toolkit'\n\nexport const workTypePaperTypeMirrorRelations = (state, action: PayloadAction<{ key: K, value: OrderValues[K] }>) => {\n const FieldIds = action.payload.key === FieldNames.PAPER_TYPE ? PaperTypeIds : WorkTypeIds\n const RelatedFieldIds = action.payload.key === FieldNames.PAPER_TYPE ? WorkTypeIds : PaperTypeIds\n const RelatedFieldName = action.payload.key === FieldNames.PAPER_TYPE ? FieldNames.WORK_TYPE : FieldNames.PAPER_TYPE\n const defaultValue = RelatedFieldName === FieldNames.PAPER_TYPE ? PaperTypeIds.ESSAY : WorkTypeIds.WRITING_FROM_SCRATCH\n\n switch (action.payload.value) {\n case FieldIds.PROBLEM_SOLVING:\n state[RelatedFieldName] = RelatedFieldIds.PROBLEM_SOLVING\n state[FieldNames.QUANTITY_KEY] = QuantityKeys.PROBLEMS\n disabledDeadlinesByWorkType[WorkTypeIds.PROBLEM_SOLVING].includes(state[FieldNames.DEADLINE]) && (state[FieldNames.DEADLINE] = MIN_DEADLINE_BY_WORKTYPE)\n break\n\n case FieldIds.MULTIPLY_CHOISE_QUESTIONS:\n state[RelatedFieldName] = RelatedFieldIds.MULTIPLY_CHOISE_QUESTIONS\n state[FieldNames.QUANTITY_KEY] = QuantityKeys.QUESTIONS\n state[FieldNames.ADDITIONAL_FEATURES] = _difference(state[FieldNames.ADDITIONAL_FEATURES], disabledAdditionalFeaturesByMultiplyChoiseQuestions)\n disabledDeadlinesByWorkType[WorkTypeIds.MULTIPLY_CHOISE_QUESTIONS].includes(state[FieldNames.DEADLINE]) && (state[FieldNames.DEADLINE] = MIN_DEADLINE_BY_WORKTYPE)\n\n sessionNotify({\n text: 'Please note that we do not accept online tests with limited attempts and a deadline',\n key: 'SHOW_MULTIPLY_QUESTIONS_NOTIF',\n })\n break\n\n default:\n if (\n state[RelatedFieldName] === RelatedFieldIds.PROBLEM_SOLVING ||\n state[RelatedFieldName] === RelatedFieldIds.MULTIPLY_CHOISE_QUESTIONS ||\n state[RelatedFieldName] === RelatedFieldIds.QUESTIONS_AND_ANSWERS_DEP\n ) {\n state[RelatedFieldName] = defaultValue // change to default\n state[FieldNames.QUANTITY_KEY] = state[FieldNames.PAGES_WORDS_SWITCHER] === PAGES_SWITCHER_KEY ? QuantityKeys.PAGES : QuantityKeys.WORDS\n }\n break\n }\n\n}\n", "import { OrderValues } from \"../types\"\n\nimport { FieldNames, WorkTypeIds } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { MIN_DEADLINE_BY_WORKTYPE, disabledDeadlinesByWorkType } from './constants'\n\nexport const workTypeRelations = (state, value: OrderValues[K]) => {\n const disabledDeadlines = disabledDeadlinesByWorkType[value as WorkTypeIds]\n\n if (disabledDeadlines && disabledDeadlines.includes(state[FieldNames.DEADLINE])) {\n state[FieldNames.DEADLINE] = MIN_DEADLINE_BY_WORKTYPE\n }\n}\n", "import _difference from 'lodash/difference'\n\nimport { OrderValues } from \"../types\"\n\nimport { FieldNames, PaperTypeIds } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { disabledAdditionalFeaturesByPaperType } from './constants'\n\nexport const paperTypeRelations = (state, value: OrderValues[K]) => {\n switch (value) {\n case PaperTypeIds.CV_WRITING__COVER_LETTER__FOLLOW_UP:\n case PaperTypeIds.RESUME_WRITING__COVER_LETTER__FOLLOW_UP:\n state[FieldNames.ADDITIONAL_FEATURES] = _difference(state[FieldNames.ADDITIONAL_FEATURES], disabledAdditionalFeaturesByPaperType)\n break\n\n default:\n break\n }\n}\n", "import { FieldNames, DeadlineIds, WriterCategoryIds } from '@qwerty.software/ui-order-form/src/store/constants'\n\nexport const deadlineRelations = (state, value: number) => {\n if (\n state[FieldNames.WRITER_CATEGORY] === WriterCategoryIds.PREFERRED &&\n (value < DeadlineIds.TWO_DAYS || value === DeadlineIds.FOUR_HOURS)\n ) {\n state[FieldNames.WRITER_CATEGORY] = WriterCategoryIds.BEST_AVAILIBLE\n }\n}\n", "import { OrderValues } from \"../types\"\n\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { WORDS_SWITCHER_KEY, PAGES_SWITCHER_KEY } from '@qwerty.software/ui-order-form/src/store/slices/order/constants'\n\nexport const pagesWordsSwitcherRelations = (state, value: OrderValues[K]) => {\n switch (value) {\n case WORDS_SWITCHER_KEY:\n state[FieldNames.QUANTITY_KEY] = QuantityKeys.WORDS\n break\n\n case PAGES_SWITCHER_KEY:\n state[FieldNames.QUANTITY_KEY] = QuantityKeys.PAGES\n break\n\n default:\n break\n }\n}\n", "import { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { BootstrapData } from 'store/types'\n\nexport const spacingRelations = (state, currentSpacing: BootstrapData.ISpacing) => {\n switch (state[FieldNames.QUANTITY_KEY]) {\n case QuantityKeys.PAGES:\n state[FieldNames.WORDS] = Math.ceil(state[FieldNames.QUANTITY] * currentSpacing.wordsCount)\n break\n\n case QuantityKeys.WORDS:\n state[FieldNames.QUANTITY] = Math.ceil(state[FieldNames.WORDS] / currentSpacing.wordsCount)\n break\n }\n}\n", "import _difference from 'lodash/difference'\n\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\n\nimport { FieldNames, QuantityKeys, UpsaleIds, WorkTypeIds } from '@qwerty.software/ui-order-form/src/store/constants'\n\nimport type { OrderState as State } from '../../types'\nimport type { DisabledChecker } from './types'\n\nconst AI_CHECK_REPORT_DISABLED_TOOLTIP = 'AI writing detection tool is unavailable for less than 400 words or more than 15000'\n\nconst checker: DisabledChecker = (state: State) => {\n const spacingValue = getSpacingValue(state)\n\n const quantity = parseFloat(`${state[FieldNames.QUANTITY]}`)\n const quantityKey = state[FieldNames.QUANTITY_KEY]\n const words = parseFloat(`${state[FieldNames.WORDS]}`)\n const workType = parseFloat(`${state[FieldNames.WORK_TYPE]}`)\n\n const disabled = {}\n\n switch (true) {\n case Boolean(quantityKey === QuantityKeys.PAGES && quantity === 1 && spacingValue === 2): // 1 page double spacing\n case Boolean(quantityKey === QuantityKeys.WORDS && words !== 0 && words < 400): // lt 400 words\n case Boolean(quantityKey === QuantityKeys.PAGES && quantity > 54 && spacingValue === 2): // gt 54 pages with double spacing\n case Boolean(quantityKey === QuantityKeys.PAGES && quantity > 37 && spacingValue === 1.5): // gt 37 pages with 1.5 spacing\n case Boolean(quantityKey === QuantityKeys.PAGES && quantity > 27 && spacingValue === 1): // gt 27 pages with single spacing\n case Boolean(quantityKey === QuantityKeys.WORDS && words > 15000): // gt 15_000 words\n case Boolean(workType === WorkTypeIds.MULTIPLY_CHOISE_QUESTIONS): // Multiple choice questions\n case Boolean(workType === WorkTypeIds.PROBLEM_SOLVING): // Problem solving\n disabled[UpsaleIds.AI_CHECK_REPORT] = AI_CHECK_REPORT_DISABLED_TOOLTIP\n break\n }\n\n return disabled\n}\n\nexport const additionalFeaturesAIreport = (state: State) => {\n const features = Object.keys(checker(state)).map(Number)\n\n state[FieldNames.ADDITIONAL_FEATURES] = _difference(state[FieldNames.ADDITIONAL_FEATURES], features)\n}\n\nexport const aiCheckReport = checker\n\nfunction getSpacingValue(state: State) {\n const { spacings } = getBootstrapData()\n const spacing = spacings.find((item) => item.id === state[FieldNames.SPACING])\n\n if (!spacing) {\n return null\n }\n\n return spacing.value\n}", "import { FieldNames, QuantityKeys, WorkTypeIds, DEFAULT_NUMBER_MAX_VALUE } from \"@qwerty.software/ui-order-form/src/store/constants\";\nimport { MAX_QUANTITY_KEY, MAX_SLIDES_KEY } from \"@qwerty.software/ui-order-form/src/store/slices/order/constants\";\nimport { MAX_SLIDES_AND_PAGES_CONFIG } from \"../constants\";\n\nimport type { BootstrapData } from \"store/types\";\n\n// PAGES / SLIDES / DEADLINE / SPACING LOGIC (logic in task LR-4693 https://speedycompany.atlassian.net/browse/LR-4693)\n\nexport const setMaxPagesSlides = (state, currentSpacing: BootstrapData.ISpacing) => {\n // for editing/proofreading - 1 page cost equals 1 slide, for other worktypes - 1 page cost equals 2 slides\n const slidesMtl = state[FieldNames.WORK_TYPE] !== WorkTypeIds.EDITING_PROOFREADING ? 2 : 1\n\n const wordsMtl = state[FieldNames.QUANTITY_KEY] === QuantityKeys.WORDS ? currentSpacing.wordsCount : 1\n\n const maxSumFromConfig = state[FieldNames.WORK_TYPE] === WorkTypeIds.EDITING_PROOFREADING\n ? MAX_SLIDES_AND_PAGES_CONFIG[WorkTypeIds.EDITING_PROOFREADING][state[FieldNames.SPACING]][state[FieldNames.DEADLINE]]\n : MAX_SLIDES_AND_PAGES_CONFIG.other[state[FieldNames.SPACING]][state[FieldNames.DEADLINE]]\n\n const maxSumCurrent = state[FieldNames.QUANTITY] + Math.round(state[FieldNames.SLIDES] / slidesMtl)\n\n if (maxSumCurrent > maxSumFromConfig) {\n state[FieldNames.QUANTITY] = state[FieldNames.QUANTITY] >= maxSumFromConfig ? maxSumFromConfig : state[FieldNames.QUANTITY]\n state[FieldNames.WORDS] = state[FieldNames.QUANTITY] * currentSpacing.wordsCount\n state[FieldNames.SLIDES] = (maxSumFromConfig - state[FieldNames.QUANTITY]) * slidesMtl\n }\n\n if (!maxSumFromConfig) {\n state[MAX_QUANTITY_KEY] = DEFAULT_NUMBER_MAX_VALUE * wordsMtl\n state[MAX_SLIDES_KEY] = DEFAULT_NUMBER_MAX_VALUE\n } else {\n state[MAX_QUANTITY_KEY] = (maxSumFromConfig - Math.round(state[FieldNames.SLIDES] / slidesMtl)) * wordsMtl\n state[MAX_SLIDES_KEY] = (maxSumFromConfig - state[FieldNames.QUANTITY]) * slidesMtl\n }\n}\n", "import { FieldNames, DEFAULT_NUMBER_MAX_VALUE } from \"@qwerty.software/ui-order-form/src/store/constants\";\nimport { MAX_QUANTITY_KEY } from \"@qwerty.software/ui-order-form/src/store/slices/order/constants\";\nimport { MAX_PROBLEMS_AND_QUESTIONS_CONFIG } from \"../constants\";\n\nexport const setMaxProblemsQuestions = (state) => {\n if (Object.keys(MAX_PROBLEMS_AND_QUESTIONS_CONFIG).includes(state[FieldNames.QUANTITY_KEY])) {\n const maxValue = MAX_PROBLEMS_AND_QUESTIONS_CONFIG[state[FieldNames.QUANTITY_KEY]][state[FieldNames.DEADLINE]] || DEFAULT_NUMBER_MAX_VALUE\n if (state[FieldNames.QUANTITY] > maxValue) {\n state[FieldNames.QUANTITY] = maxValue\n }\n state[MAX_QUANTITY_KEY] = maxValue\n }\n}\n", "import { FieldNames, QuantityKeys} from \"@qwerty.software/ui-order-form/src/store/constants\";\nimport { BootstrapData } from \"store/types\";\nimport { setMaxPagesSlides } from './pages-slides-spacing-deadline';\nimport { setMaxProblemsQuestions } from './prodlems-questions-deadline';\n\nexport const maxValueRelations = (state, currentSpacing: BootstrapData.ISpacing) => {\n switch (state[FieldNames.QUANTITY_KEY]) {\n case QuantityKeys.PAGES:\n case QuantityKeys.WORDS:\n setMaxPagesSlides(state, currentSpacing)\n break\n\n case QuantityKeys.PROBLEMS:\n case QuantityKeys.QUESTIONS:\n setMaxProblemsQuestions(state)\n break\n\n default:\n break\n }\n}\n", "import notify from 'utils/notify'\nimport { FieldNames, DeadlineIds, AcademicLevelIds } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { disabledDeadlinesByAcademicLevel } from './constants'\n\nexport const academicLevelRelations = (state, value: AcademicLevelIds) => {\n const disabledDeadlines = disabledDeadlinesByAcademicLevel[value]\n if (disabledDeadlines && disabledDeadlines.includes(state[FieldNames.DEADLINE])) {\n state[FieldNames.DEADLINE] = DeadlineIds.SIX_HOURS\n notify.warning('The 4-hour deadline is not applicable to the Ph.D. academic level, so it has been changed to the closest available option.')\n }\n}\n", "import notify from 'utils/notify'\nimport { FieldNames, DeadlineIds } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\nimport { subjectFlagToDisableDeadline } from './constants'\n\n/**\n * RELATED! functional for chat-bot using in:\n * - packages/chat-bot/src/store/selectors/disabled-deadlines/errors/complex-subject.ts\n * - packages/chat-bot/src/components/inputs/deadline/index.tsx:59\n */\nexport const subjectRelations = (state, value) => {\n const { subjects } = getBootstrapData()\n const bdSubject = subjects.find((item) => item.id === value)\n\n if (bdSubject?.[subjectFlagToDisableDeadline] && state[FieldNames.DEADLINE] === DeadlineIds.FOUR_HOURS) {\n state[FieldNames.DEADLINE] = DeadlineIds.SIX_HOURS\n notify.warning('The 4-hour deadline is not applicable to the selected subject, so it has been changed to the closest available option.')\n }\n}\n", "import { OrderValues } from \"../types\"\n\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { WORDS_SWITCHER_KEY, PAGES_SWITCHER_KEY } from '@qwerty.software/ui-order-form/src/store/slices/order/constants'\n\nexport const quantityKeyRelations = (state, value: OrderValues[K]) => {\n switch (value) {\n case QuantityKeys.PAGES:\n state[FieldNames.PAGES_WORDS_SWITCHER] = PAGES_SWITCHER_KEY\n break\n\n case QuantityKeys.WORDS:\n state[FieldNames.PAGES_WORDS_SWITCHER] = WORDS_SWITCHER_KEY\n break\n\n default:\n break\n }\n}\n", "import { PayloadAction } from \"@reduxjs/toolkit\";\n\nimport { getBootstrapData } from \"global-entities/bootstrap-data/utils/get\";\n\nimport { workTypePaperTypeMirrorRelations } from \"./work-type-paper-type\";\nimport { workTypeRelations } from \"./work-type\";\nimport { paperTypeRelations } from './paper-type'\nimport { deadlineRelations } from \"./deadline\";\nimport { pagesWordsSwitcherRelations } from \"./pages-words-switcher\";\nimport { spacingRelations } from \"./spacing\";\nimport { additionalFeaturesAIreport } from './additional-features/ai-check-report'\n\nimport { maxValueRelations } from \"./max-value\";\n\nimport { FieldNames, AcademicLevelIds, WorkTypeIds } from '@qwerty.software/ui-order-form/src/store/constants';\nimport { AFFECTING_TO_MAX_VALUE_FIELDS } from \"./constants\";\n\nimport type { OrderValues } from \"../types\";\nimport { academicLevelRelations } from \"./academic-level\";\nimport { subjectRelations } from \"./subject\";\nimport { quantityKeyRelations } from \"./quantity-key\";\n\nexport const fieldsRelations = (state, action: PayloadAction<{ key: K, value: OrderValues[K] }>) => {\n const { spacings } = getBootstrapData()\n const currentSpacing = spacings.find((item) => item.id === state[FieldNames.SPACING])\n\n // TODO: added 29.05.2024 - teprorary relation for deleted worktype - remove it after 2 months\n // because persisted orders with this worktype can be with 0 price\n if (state[FieldNames.WORK_TYPE] === WorkTypeIds.GRADING_MARKING_DEP) {\n state[FieldNames.WORK_TYPE] = WorkTypeIds.WRITING_FROM_SCRATCH\n }\n // END TODO\n\n switch (action.payload.key) {\n case FieldNames.SUBJECT:\n subjectRelations(state, action.payload.value)\n break\n\n case FieldNames.ACADEMIC_LEVEL:\n academicLevelRelations(state, action.payload.value as AcademicLevelIds)\n break\n\n case FieldNames.PAPER_TYPE:\n workTypePaperTypeMirrorRelations(state, action)\n paperTypeRelations(state, action.payload.value)\n additionalFeaturesAIreport(state)\n break\n\n case FieldNames.WORK_TYPE:\n workTypePaperTypeMirrorRelations(state, action)\n workTypeRelations(state, action.payload.value as WorkTypeIds)\n additionalFeaturesAIreport(state)\n break\n\n case FieldNames.DEADLINE:\n deadlineRelations(state, action.payload.value as OrderValues[FieldNames.DEADLINE])\n break\n\n case FieldNames.SPACING:\n spacingRelations(state, currentSpacing)\n additionalFeaturesAIreport(state)\n break\n\n case FieldNames.PAGES_WORDS_SWITCHER:\n pagesWordsSwitcherRelations(state, action.payload.value)\n additionalFeaturesAIreport(state)\n break\n\n case FieldNames.QUANTITY_KEY:\n quantityKeyRelations(state, action.payload.value)\n additionalFeaturesAIreport(state)\n break\n\n case FieldNames.QUANTITY:\n state[FieldNames.WORDS] = Math.ceil(action.payload.value as OrderValues[FieldNames.QUANTITY] * currentSpacing.wordsCount)\n additionalFeaturesAIreport(state)\n break\n\n case FieldNames.WORDS:\n state[FieldNames.QUANTITY] = Math.ceil(action.payload.value as OrderValues[FieldNames.WORDS] / currentSpacing.wordsCount)\n additionalFeaturesAIreport(state)\n break\n\n default:\n break\n }\n\n // !!! this order is important - maxValueRelations should be the last\n AFFECTING_TO_MAX_VALUE_FIELDS.includes(action.payload.key) && maxValueRelations(state, currentSpacing)\n}\n", "import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport localforage from 'localforage'\n\nimport type { PreferredOrderData } from './types/preferred-order'\nimport type { OrderState, OrderValues, Validation } from './types'\n\nimport { Entity } from '@qwerty.software/ui-order-form/src/contexts/constants'\n\nimport { fieldsRelations } from './fields-relations'\n\nimport {\n NAME,\n INITIAL_STATE,\n COMMON_PERSIST_BLACKLIST,\n\n MAX_QUANTITY_KEY,\n MAX_SLIDES_KEY,\n ORDER_SLICE_NAME,\n} from './constants'\nimport { FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\n\nexport const orderSlice = createSlice({\n name: ORDER_SLICE_NAME,\n initialState: INITIAL_STATE,\n reducers: {\n init(state, action: PayloadAction) {\n return {...state, ...action.payload}\n },\n change(state, action: PayloadAction<{ key: K, value: OrderValues[K], entity?: Entity }>) {\n state[action.payload.key] = action.payload.value\n\n // !!! this order is important - fieldsRelations should be after change value\n fieldsRelations(state, action)\n state.orderChanged = true\n state.lastChangedAt = Date.now()\n\n if (!state.showReminder && action.payload.entity && action.payload.entity === Entity.MAIN) {\n state.showReminder = true\n }\n },\n validation(state, action: PayloadAction<{ key: TKey, validation: Validation }>) {\n if (action.payload.validation.valid) {\n delete state.validation[action.payload.key]\n return\n }\n\n state.validation[action.payload.key] = action.payload.validation\n },\n reset(state, action: PayloadAction<{ key?: K | K[] }>) {\n if (!action.payload?.key) {\n return { ...INITIAL_STATE }\n } else {\n const keys = Array.isArray(action.payload.key) ? action.payload.key : [action.payload.key]\n\n keys.forEach(key => {\n state[key] = INITIAL_STATE[key]\n })\n }\n\n state.orderChanged = false\n state.showReminder = false\n },\n\n // preferred order\n loadingPreferredOrderStart(state) {\n state.preferredOrder.isLoading = true\n },\n fetchPreferredOrderError(state, action: PayloadAction) {\n state.preferredOrder.isLoading = false\n state.preferredOrder.sended = false\n state.preferredOrder.errors = action.payload\n state.preferredOrder.data = undefined\n },\n checkPreferredOrder(state, action: PayloadAction) {\n state.preferredOrder.isLoading = false\n state.preferredOrder.data = action.payload\n state.preferredOrder.errors = undefined\n },\n cancelPreferredOrderData(state, action: PayloadAction<{shouldClearOnCancel?: boolean}>) {\n state.preferredOrder.data = undefined\n state.preferredOrder.errors = undefined\n state.preferredOrder.sended = false\n\n if (action.payload.shouldClearOnCancel) {\n state.preferredOrder.value = ''\n }\n },\n\n // place order pending\n placeOrderLoadingStart(state) {\n state.placeOrderPending = true\n },\n placeOrderLoadingStop(state) {\n state.placeOrderPending = false\n },\n },\n})\n\nexport const HYDRATED = (state: State): boolean => Boolean(state?.[orderSlice.name]?._persist?.rehydrated)\n\ninterface State {\n //@ts-ignore\n [orderSlice.name]: OrderState\n}\n\nexport const value = (name: Name) => (state: State): OrderValues[Name] => state[orderSlice.name][name]\nexport const validation = (name: Name) => (state: State): Validation => state[orderSlice.name].validation[name] ?? { valid: true }\nexport const ORDER = (state: State): OrderValues => state[orderSlice.name]\n\nexport const PLACE_ORDER_PENDING = (state: State) => state[orderSlice.name].placeOrderPending\nexport const SHOW_REMINDER = (state: State) => state[orderSlice.name].showReminder\nexport const ORDER_CHANGED = (state: State) => state[orderSlice.name].orderChanged\n\nexport const ORDER_LAST_CHANGED_AT = (state: State) => state[orderSlice.name].lastChangedAt\n\nexport const MAX_QUANTITY = (state: State) => state[orderSlice.name][MAX_QUANTITY_KEY]\nexport const MAX_SLIDES = (state: State) => state[orderSlice.name][MAX_SLIDES_KEY]\n\nexport * from './constants'\n\nexport const COMMON_PERSIST_CONFIG = {\n keyPrefix: '',\n key: orderSlice.name,\n // TODO: Disable serialization.\n // serialize: false,\n storage: localforage.createInstance({\n name: '[MSH] Storage',\n storeName: NAME,\n driver: [\n // localforage.INDEXEDDB,\n localforage.LOCALSTORAGE,\n ]\n }),\n blacklist: COMMON_PERSIST_BLACKLIST,\n}\n\nexport function GET_STATE(state: any) {\n return state[orderSlice.name] as OrderState\n}", "import { DEFAULT_WORDS_PER_PAGE, FieldNames, QuantityKeys, SpacingIds, WorkTypeIds } from \"@qwerty.software/ui-order-form/src/store/constants\"\nimport type { Values } from \"global-entities/price-data/hooks/useCalculator\"\n\nimport type { DiscountMeta } from 'global-entities/discount/definitions'\nimport { isDiscountData } from 'global-entities/discount/selectors'\n\nimport { OrderState } from '../order/types'\nimport { NAME as CURRENCY_FIELD_NAME, ICurrency } from \"@qwerty.software/currency-switcher/src/store/constants\"\n\nexport const ContextPDAdapter = (order: OrderState, currency: ICurrency, discount: Partial) => ({\n pages: 0,\n problems: 0,\n questions: 0,\n [FieldNames.WORDS]: 0,\n [`${order[FieldNames.QUANTITY_KEY]}`]: order.quantityKey === QuantityKeys.WORDS ? order.words : order.quantity,\n\n [FieldNames.SLIDES]: order.slides,\n [FieldNames.SPEAKER_NOTES]: order.speakerNotes,\n [FieldNames.DEADLINE]: order.deadline,\n [FieldNames.SPACING]: order.spacing,\n [FieldNames.WORK_TYPE]: order.workType,\n [FieldNames.PAPER_TYPE]: order.paperType,\n [FieldNames.ACADEMIC_LEVEL]: order.academicLevel,\n [FieldNames.WRITER_CATEGORY]: { chosenID: order.writerCategory },\n [FieldNames.ADDITIONAL_FEATURES]: order.additionalFeatures,\n [FieldNames.SOURCES]: order.sources,\n softcopies: order.softCopies,\n [FieldNames.SUBJECT]: order.subject,\n [CURRENCY_FIELD_NAME]: currency?.name,\n [FieldNames.SOFTWARE]: order.software.checked\n ? order.software.value\n : undefined,\n preferredOrderData: order.preferredOrder.sended && order.preferredOrder.data?.preferredWriterStatus\n ? { writerCategory: order.preferredOrder.data.preferredWriterStatus }\n : undefined,\n\n discountData: discount.applied && isDiscountData(discount?.data)\n ? discount.data.discount\n : undefined,\n\n ...((order[FieldNames.QUANTITY_KEY] === QuantityKeys.WORDS) ? {\n pages: Math.ceil(order.words / DEFAULT_WORDS_PER_PAGE),\n spacing: SpacingIds.DOUBLE,\n } : {}),\n\n\n ...((order[FieldNames.WORK_TYPE] === WorkTypeIds.MULTIPLY_CHOISE_QUESTIONS) ? {\n [FieldNames.SOFTWARE]: undefined,\n } : {}),\n\n ...((order[FieldNames.QUANTITY_KEY] === QuantityKeys.PROBLEMS || order[FieldNames.QUANTITY_KEY] === QuantityKeys.QUESTIONS) ? {\n spacing: SpacingIds.DOUBLE,\n slides: 0,\n speakerNotes: false,\n } : {}),\n\n ...((order[FieldNames.QUANTITY_KEY] === QuantityKeys.QUESTIONS) ? {\n sources: 0,\n softcopies: false,\n } : {}),\n\n} as Values)\n", "import { createSelector } from '@reduxjs/toolkit'\n\nimport calculator from '@qwerty.software/calc-of-price/adapters/microservices'\n\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\n\nimport { ORDER } from '../order'\nimport { ContextPDAdapter } from './ContextPDAdapter'\n\nimport { CURRENCY } from '@qwerty.software/currency-switcher/src/store/slice'\nimport { DEFAULT_CURRENCY } from '@qwerty.software/currency-switcher/src/store/constants'\nimport { DiscountMeta } from 'global-entities/discount/definitions'\n\ninterface Options {\n discountSelector: (state: any) => DiscountMeta\n}\n\nexport const createPriceDataSelector = (options: Options) => {\n const selector = createSelector(\n [ORDER, CURRENCY, options.discountSelector],\n (order, currency, discount) => {\n const adaptedOrderValues = ContextPDAdapter(order, currency, discount)\n\n const data = {\n fieldValues: adaptedOrderValues,\n bd: getBootstrapData().priceCalculatorAdapted,\n currency: currency.symbol,\n }\n\n const priceData = calculator({ ...data }, {\n currency: currency.name,\n rate: currency.rate\n })\n const priceDataBase = currency.name !== DEFAULT_CURRENCY.name\n ? calculator({ ...data }, {\n currency: DEFAULT_CURRENCY.name,\n rate: DEFAULT_CURRENCY.rate\n })\n : priceData\n\n return {\n priceData,\n values: adaptedOrderValues,\n priceDataBase,\n }\n },\n )\n\n return selector\n}\n\nexport const createPriceDataValuesSelector = (options: Options) => {\n const PRICE_DATA = createPriceDataSelector(options)\n\n return createSelector([PRICE_DATA], ({ values }) => values)\n}\n\nexport const createCurrentPriceDataSelector = (options: Options) => {\n const PRICE_DATA = createPriceDataSelector(options)\n\n return createSelector([PRICE_DATA], ({ priceData }) => priceData)\n}\n\nexport const createBasePriceDataSelector = (options: Options) => {\n const PRICE_DATA = createPriceDataSelector(options)\n\n return createSelector([PRICE_DATA], ({ priceDataBase }) => priceDataBase)\n}\n\nfunction GET_STATE(state: any) {\n return state as any\n}", "import { PreloadState } from 'global-entities/discount/definitions'\n\nimport type { DiscountData } from '../discount.d'\n\nfunction adaptee(discount): AsyncField {\n return {\n data: discount?.data,\n errors: discount?.preload?.error ? [discount.preload.error] : [],\n isLoading: ([\n PreloadState.PENDING,\n PreloadState.PROGRESS,\n ] as PreloadState[]).includes(discount?.preload?.state),\n sended: Date.now(),\n value: discount?.code\n }\n}\n\nexport default adaptee", "import { createSelector } from '@reduxjs/toolkit'\n\nimport _get from 'lodash/get'\n\nimport { CURRENCY } from '@qwerty.software/currency-switcher/src/store/slice'\nimport type { ICurrency } from '@qwerty.software/currency-switcher/src/store/constants'\nimport * as orderForm from '@qwerty.software/ui-order-form/src/store/slices/price-data/selectors'\n\nimport asyncFieldAdapter from './adapters/async-field'\n\nimport {\n DiscountVariant,\n\n DISCOUNT_SLICE,\n\n NOOP_DISCOUNT,\n\n Namespace,\n DiscountState,\n\n PreloadState,\n} from './definitions'\n\nimport type { DiscountData, SuccessData } from './discount.d'\n\nexport const isDiscountData = (data: DiscountData | null): data is SuccessData => Boolean(data?.discount)\n\nexport const GET_STATE = (state: any) => state[DISCOUNT_SLICE] as DiscountState\n\n/**\n * class - for reduce code: namespace is used in all selectors\n */\nclass Discount {\n constructor(\n protected readonly namespace: Namespace,\n ) { }\n\n public NOOP_DISCOUNT = NOOP_DISCOUNT\n public DiscountVariant = DiscountVariant\n public PreloadState = PreloadState\n public adapters = {\n asyncField: asyncFieldAdapter,\n }\n\n public DISCOUNT = createSelector([GET_STATE], state => state?.discount?.[this.namespace] || NOOP_DISCOUNT)\n\n public PRICE_DATA = orderForm.createPriceDataSelector({\n discountSelector: this.DISCOUNT,\n })\n\n public PRICE_DATA_VALUES = orderForm.createPriceDataValuesSelector({\n discountSelector: this.DISCOUNT,\n })\n\n public CURRENT_PRICE_DATA = orderForm.createCurrentPriceDataSelector({\n discountSelector: this.DISCOUNT,\n })\n\n public BASE_PRICE_DATA = orderForm.createBasePriceDataSelector({\n discountSelector: this.DISCOUNT,\n })\n\n public IS_APPLIED = createSelector([this.DISCOUNT], discount => discount.applied)\n public TYPE = createSelector([this.DISCOUNT], discount => isDiscountData(discount.data) ? discount.data.discount.type : null)\n public LIMIT = createSelector([this.TYPE], discountType => discountType?.limit ?? null)\n public PERCENT = createSelector([this.TYPE], discountType => discountType?.discount_rate ?? null)\n public SUM = createSelector([this.TYPE], discountType => discountType?.discount_sum ?? null)\n public VARIANT = createSelector([this.PERCENT, this.SUM, this.LIMIT], this.getVariant)\n public VARIANT_TITLE = createSelector([this.VARIANT, this.LIMIT, this.PERCENT, this.CURRENT_PRICE_DATA, CURRENCY], this.getVariantTitle)\n public ID = createSelector([this.DISCOUNT], discount => isDiscountData(discount.data) ? discount.data.discount?.id || null : null)\n public TITLE = createSelector([this.TYPE], discountType => discountType?.title ?? null)\n public CODE = createSelector([this.DISCOUNT], discount => discount.code ?? null)\n public PRELOAD_STATE = createSelector([this.DISCOUNT], discount => discount.preload?.state)\n\n public PENDING = createSelector([this.PRELOAD_STATE], state => state === PreloadState.PENDING)\n public PROGRESS = createSelector([this.PRELOAD_STATE], state => state === PreloadState.PROGRESS)\n public FULFILLED = createSelector([this.PRELOAD_STATE], state => state === PreloadState.FULFILLED)\n public REJECTED = createSelector([this.PRELOAD_STATE], state => state === PreloadState.REJECTED)\n\n protected getVariant(percent: number, sum: number, limit: number) {\n if ((limit || 0) > 0) {\n return DiscountVariant.LIMIT\n }\n\n if ((percent || 0) > 0) {\n return DiscountVariant.PERCENT\n }\n\n if ((sum || 0) > 0) {\n return DiscountVariant.SUM\n }\n\n return null\n }\n\n protected getVariantTitle(variant: DiscountVariant, limit: number, percent: number, { discountAmount }: { discountAmount: number }, currency: ICurrency) {\n if (!variant) {\n return null\n }\n\n switch (variant) {\n case DiscountVariant.LIMIT:\n return `${limit}%`\n\n case DiscountVariant.PERCENT:\n return `${percent}%`\n\n case DiscountVariant.SUM:\n default:\n return `${currency?.symbol}${discountAmount}`\n }\n }\n}\n\nexport default function DiscountFacade(namespace: string) {\n return new Discount(namespace)\n}", "import { ContextPDAdapter } from './ContextPDAdapter'\nimport { IPriceDataState } from './types'\nimport { INITIAL_STATE as INITIAL_ORDER_STATE } from '../order/constants'\nimport { DEFAULT_CURRENCY } from '@qwerty.software/currency-switcher/src/store/constants'\nimport { NOOP_DISCOUNT } from 'global-entities/discount/definitions'\n\nexport const NAME = 'order.price-data' as const\nexport const SLICE_NAME = `slice://${NAME}/` as const\n\nexport const INITIAL_PRICE_DATA = {\n discountAmount: 0,\n priceAdditionals: {\n softcopies: 0,\n software: 0,\n speakerNotes: 0,\n writerCategory: {\n additional: 0,\n basic: 0,\n total: 0,\n },\n additionalFeatures: {\n 4: 0,\n 5: 0,\n 8: 0,\n 9: 0,\n 10: 0,\n 12: 0,\n 13: 0,\n 14: 0,\n total: 0\n }\n },\n priceBasic: 0,\n priceBasicWithoutDiscount: 0,\n priceFullWithoutDiscount: 0,\n priceForCalculatorItems: 0,\n priceForCock: 0,\n priceForUnits: {\n pages: 0,\n problems: 0,\n questions: 0,\n slides: 0,\n software: 0,\n },\n priceFull: 0,\n pricePerUnit: {\n default: 0,\n pages: 0,\n problems: 0,\n questions: 0,\n slides: 0,\n software: 0,\n },\n technicalSubjectPricePB: 0,\n}\n\nexport const INITIAL_STATE: IPriceDataState = {\n priceData: INITIAL_PRICE_DATA,\n priceDataBase: INITIAL_PRICE_DATA,\n\n values: ContextPDAdapter(INITIAL_ORDER_STATE, DEFAULT_CURRENCY, NOOP_DISCOUNT),\n}\n", "import { createSlice, createSelector, PayloadAction } from '@reduxjs/toolkit'\n\nimport {\n SLICE_NAME,\n INITIAL_STATE,\n} from './constants'\nimport type { Values } from 'global-entities/price-data/hooks/useCalculator'\nimport { IPriceDataState, IPriceData } from './types'\n\nconst slice = createSlice({\n name: SLICE_NAME,\n initialState: INITIAL_STATE,\n reducers: {\n change(state: IPriceDataState, action: PayloadAction<{\n priceData: IPriceData,\n priceDataBase: IPriceData,\n adaptedOrderValues: Values,\n }>) {\n state.priceData = action.payload.priceData\n state.priceDataBase = action.payload.priceDataBase\n state.values = action.payload.adaptedOrderValues\n },\n },\n})\n\nexport const priceDataSlice = slice\n\nexport const PRICE_DATA_USD = createSelector(GET_STATE, state => state.priceDataBase)\nexport const PRICE_DATA = createSelector(GET_STATE, state => state.priceData)\nexport const PD_VALUES = createSelector(GET_STATE, state => state.values)\n\nfunction GET_STATE(state: {\n [slice.name]: IPriceDataState\n}) {\n return state[slice.name] as IPriceDataState\n}\n", "import _replace from 'lodash/replace'\nimport _toNumber from 'lodash/toNumber'\nimport { ICurrency } from '../store/constants'\n\nexport interface IUseReplacePriceViaCurrency {\n currency: ICurrency\n textWithPrice: string\n}\n\nexport const replacePriceViaCurrency = ({\n currency,\n textWithPrice,\n}) => {\n if (currency?.name === 'USD') {\n return textWithPrice\n }\n\n const priceValuesFromCaption = textWithPrice.includes('$') ? textWithPrice.match(/\\$\\d+(\\.\\d+)?/g) : null\n\n if (priceValuesFromCaption && priceValuesFromCaption.length > 0) {\n let modifiedText = textWithPrice\n priceValuesFromCaption.forEach(priceValue => {\n const priceValueFromCaption = _toNumber(priceValue.replace(/[^\\d\\.]*/g, ''))\n modifiedText = _replace(modifiedText, priceValue, `${currency.symbol}${(priceValueFromCaption * currency.rate).toFixed(2)}`)\n })\n\n return modifiedText\n }\n\n return textWithPrice\n}\n", "import axios from 'axios'\n\nimport type { SagaIterator } from 'redux-saga'\nimport { call, put, take, race, select, takeLatest } from 'redux-saga/effects'\n\nimport StoreManager from '@qwerty.software/store-manager'\n\nimport { reqHPromise } from 'utils/http-client/request-handler'\n\nimport _size from 'lodash/size'\nimport _isEmpty from 'lodash/isEmpty'\n\nimport { slice } from '../slice'\n\nimport Discount from '../selectors'\n\nimport {\n APPLY_DISCOUNT_SAGA,\n ApplyDiscountAction,\n\n appliedDiscount,\n\n CANCEL_APPLY_DISCOUNT,\n CancelApplyDiscountAction,\n\n DiscountResponse,\n} from '../definitions'\nimport { PreloadState } from 'global-entities/discount/definitions'\nimport notify from 'utils/notify'\nimport { PRICE_DATA_USD } from '@qwerty.software/ui-order-form/src/store/slices/price-data'\nimport { replacePriceViaCurrency } from '@qwerty.software/currency-switcher/src/utils/replace-price-via-currency'\n\nimport { CURRENCY } from '@qwerty.software/currency-switcher/src/store/slice'\n\ntype UpdateAction = typeof slice.actions.updateDiscount\ntype UpdatePayload = Parameters[0]\n\ntype Update = (discount: Omit) => ReturnType\n\ntype Pending = () => ReturnType\ntype Fulfilled = () => ReturnType\ntype Rejected = (error: string) => ReturnType\ntype Progress = (progress: number) => ReturnType\n\nexport function* applyDiscount(action: ApplyDiscountAction): SagaIterator {\n const { namespace, disableNotify, useCheckRoute } = action.payload\n\n const discountMeta = yield select(Discount(namespace).DISCOUNT)\n\n const update: Update = (discount) => slice.actions.updateDiscount({ namespace, ...discount })\n\n const pending: Pending = () => update({ discount: { preload: { state: PreloadState.PENDING, progress: 0, error: null } } })\n const progress: Progress = progress => update({ discount: { preload: { state: PreloadState.PROGRESS, progress, error: null } } })\n const fulfilled: Fulfilled = () => update({ discount: { preload: { state: PreloadState.FULFILLED, progress: 100, error: null }, applied: true } })\n const rejected: Rejected = error => update({ discount: { preload: { state: PreloadState.REJECTED, error }, applied: false } })\n\n let errorMessage = 'Something went wrong.'\n try {\n const { token, cancel } = axios.CancelToken.source()\n function* request() {\n let response: DiscountResponse | null = null\n try {\n yield put(pending())\n response = yield call(reqHPromise, {\n method: 'GET',\n url: useCheckRoute ? 'discounts/check' : 'discounts/get-current',\n params: {\n price: 0,\n code: discountMeta.code,\n },\n cancelToken: token,\n onUploadProgress: (progressEvent: ProgressEvent) => {\n const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)\n\n StoreManager.getInstance().store.dispatch(progress(percentCompleted))\n },\n })\n yield put(fulfilled())\n } catch (error) {\n yield put(rejected(error.message))\n } finally {\n yield put(update({ response }))\n }\n\n return response\n }\n\n const result: {\n response?: DiscountResponse\n cancelation?: CancelApplyDiscountAction\n } = yield race({\n response: call(request),\n cancelation: take(`${CANCEL_APPLY_DISCOUNT}/${namespace}`)\n })\n\n if (result.cancelation) {\n cancel(errorMessage)\n\n return\n }\n\n const { data, errors } = result.response || {}\n\n if (!data || (Array.isArray(data) && data.length === 0)) {\n if ((errors?.length || 0) > 0) {\n throw new ResponseError(errors?.[0] || errorMessage)\n }\n\n throw new EmptyResponseError()\n }\n\n const price = yield select(PRICE_DATA_USD)\n const currency = yield select(CURRENCY)\n\n // @ts-ignore\n const priceActivationSum = data.discount?.type?.price_activation\n const modifiedText = replacePriceViaCurrency({ currency, textWithPrice: `Sorry, the code is valid for order over $${priceActivationSum}. Add pages or additional services on $${(priceActivationSum - price.priceFull).toFixed(2)} to activate the code` })\n\n if (data && priceActivationSum) {\n if (price.priceFull < priceActivationSum) {\n yield put(rejected(modifiedText))\n return\n }\n }\n\n yield put(update({\n discount: { applied: true },\n }))\n yield put(appliedDiscount(namespace))\n\n !disableNotify && notify.success('Your discount is applied.')\n } catch (error) {\n if (error instanceof ResponseError) {\n errorMessage = error.message\n }\n\n yield put(rejected(errorMessage))\n }\n}\n\nexport function* applyDiscontSagaWatcher() {\n yield takeLatest(APPLY_DISCOUNT_SAGA, applyDiscount)\n}\n\nexport class ResponseError extends Error { }\nexport class EmptyResponseError extends Error { }\n", "import AbstractStoreManager from './core'\nimport sagasManager from './sagas'\n\nclass StoreManager extends AbstractStoreManager {\n static async init(cb?: () => void): Promise {\n if (window.storeManager?.instance) {\n console.warn('Store already initialized')\n\n return\n }\n\n const instance = new StoreManager({})\n\n for await (const { } of instance.init(finish));\n\n function finish() {\n window.storeManager = { instance }\n\n cb?.()\n }\n }\n\n static getInstance(): StoreManager {\n if (!window.storeManager?.instance) {\n throw new Error('StoreManager not initialized')\n }\n\n return window.storeManager.instance\n }\n\n private async *init(cb?: () => void) {\n yield* this.initSyncSlices()\n yield* this.initSyncReducers()\n yield* this.initSyncSagas()\n\n yield* this.initAsyncSlices()\n yield* this.initAsyncReducers()\n yield* this.initAsyncSagas()\n\n cb?.()\n }\n\n private *initSyncSlices() {\n const slices = [\n require('global-entities/ref-to-interact-slice/store').slice,\n ]\n\n // @ts-ignore\n if (!window?.dev__disableDicountFilesSyncSLises) {\n const filesUploaderSlice = require('global-entities/files-uploader/slice').slice\n const filesUploaderPersistConfig = require('global-entities/files-uploader/slice').FILES_UPLOADER_PERSIST_CONFIG\n const discountSlice = require('global-entities/discount/slice').slice\n const discountPersistConfig = require('global-entities/discount/slice').DISCOUNT_PERSIST_CONFIG\n\n this.addSlice(filesUploaderSlice, filesUploaderPersistConfig)\n yield { slice: filesUploaderSlice }\n\n this.addSlice(discountSlice, discountPersistConfig)\n yield { slice: discountSlice }\n }\n\n for (const slice of slices) {\n this.addSlice(slice)\n\n yield { slice }\n }\n }\n\n private async *initAsyncSlices() {\n const slices = []\n\n for (const slice of slices) {\n await tick()\n\n this.addSlice(slice)\n\n yield { asyncSlice: slice }\n }\n }\n\n private *initSyncReducers() {\n const reducers = {\n 'userData': require('global-entities/user-data/reducer').default,\n ...require('global-entities/price-data').priceDataReducers,\n ...require('global-entities/geo-tag/store/reducer').geoTagReducers,\n ...require('@qwerty.software/live-chat/src/store').liveChatReducers,\n }\n\n for (const name in reducers) {\n this.addReducer(name, reducers[name])\n\n yield { reducer: reducers[name], name }\n }\n }\n\n private async *initAsyncReducers() {\n const reducers = {}\n\n for (const name in reducers) {\n await tick()\n\n this.addReducer(name, reducers[name])\n\n yield { asyncReducer: reducers[name], name }\n }\n }\n\n private *initSyncSagas() {\n const sagas = [\n require('utils/action-tracker/interior-track/store/sagas/track').default,\n ]\n\n for (const saga of sagas) {\n sagasManager.run(saga)\n\n yield { saga }\n }\n }\n\n private async *initAsyncSagas() {\n const liveChat = require('@qwerty.software/live-chat/src/store')\n const uploadFiles = require('global-entities/files-uploader/sagas/upload-files')\n const applyDiscount = require('global-entities/discount/sagas/apply-discount')\n\n const sagas = [\n liveChat.livechatOpenWatcher,\n liveChat.livechatInteractionWithUserWatcher,\n uploadFiles.uploadFilesSagaWatcher,\n applyDiscount.applyDiscontSagaWatcher,\n ]\n\n for (const saga of sagas) {\n await tick()\n\n sagasManager.run(saga)\n\n yield { asyncSaga: saga }\n }\n }\n}\n\nexport type StoreManagerClass = typeof StoreManager\nexport type StoreManagerInstance = StoreManager\n\nwindow.StoreManager = StoreManager\n\nexport default StoreManager\n\nfunction tick() {\n return new Promise((resolve) => setTimeout(resolve, 0))\n}", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport type { Gap, Align } from '../context/definitions'\n\nimport usePosition from 'hooks/use-position'\nimport useAnchor from '../hooks/use-anchor'\nimport useOpen from '../hooks/use-open'\nimport usePortal from '../hooks/use-portal'\nimport useRender from '../hooks/use-render'\n\nimport scssVariables from '../variables.module.scss'\nimport './styles.scss'\n\ninterface Options {\n open?: boolean\n\n gap: Partial\n align: Partial\n\n disabled?: boolean\n clickOnly?: boolean\n\n triggers?: Array<'click' | 'hover'>,\n}\n\n/**\n * Tooltip without parent react render tree.\n * More usefull for difficult cases.\n * (e.g. tooltip for button in table cell or target element rendered not by react)\n */\nexport default function useTooltip(\n tooltip: React.ReactNode,\n deps: React.DependencyList,\n options: Partial = {},\n) {\n //# options normalization start\n let openState = React.useState(false)\n openState = React.useMemo(() => [\n typeof options.open !== 'undefined' ? options.open : openState[0],\n openState[1],\n ], [options.open || openState?.[0]])\n const _options = React.useMemo(() => ({\n ...options,\n gap: {\n x: options.gap?.x ?? 0,\n y: options.gap?.y ?? 0,\n ...(options.gap || {}),\n },\n align: {\n x: options.align?.x ?? 'right',\n y: options.align?.y ?? 'middle',\n ...(options.align || {}),\n },\n }), [options.gap?.x, options.gap?.y, options.align?.x, options.align?.y])\n //# options normalization end\n\n const [open, setOpen] = openState\n\n const [anchor, anchorRef] = useAnchor()\n\n const portal = usePortal(open, {\n className: clsx(scssVariables.portal),\n gap: _options.gap,\n })\n\n const _tooltip = React.useMemo(() => {\n if (['string', 'number'].includes(typeof tooltip)) {\n return {tooltip}\n }\n\n return tooltip\n }, deps)\n\n\n useRender(portal, _tooltip, deps)\n\n usePosition(portal, anchor, open, {\n align: _options.align,\n })\n\n useOpen(\n { anchor, tooltip: portal.current },\n openState,\n options?.triggers || ['click'],\n 300,\n options.disabled,\n options.clickOnly,\n )\n\n return [anchorRef, anchor] as const\n}\n\nexport type { } from '../context/definitions'\n\nexport const buttonClasses = {\n root: scssVariables.root,\n portal: scssVariables.portal,\n tooltip: scssVariables.tooltip,\n} as const\n\n", "import * as React from 'react'\n\nimport coords from './coords'\n\nimport {\n Align,\n} from './definitions'\n\nfunction usePosition(\n portal: React.RefObject,\n anchor: HTMLElement,\n open: boolean,\n options: {\n align: Align\n }\n) {\n const handlePosition = React.useCallback(() => {\n if (!anchor) {\n return\n }\n\n const portalPoint = portal.current.getBoundingClientRect()\n const anchorPoint = anchor.getBoundingClientRect()\n\n const [x, y] = coords(portalPoint, anchorPoint, options.align)\n\n portal.current.style.setProperty('--x', `${x}px`)\n portal.current.style.setProperty('--y', `${y}px`)\n }, [anchor, open, options.align.x, options.align.y, portal])\n\n React.useEffect(() => {\n handlePosition()\n\n window.addEventListener('resize', handlePosition)\n window.addEventListener('scroll', handlePosition)\n\n return () => {\n window.removeEventListener('resize', handlePosition)\n window.removeEventListener('scroll', handlePosition)\n }\n }, [handlePosition])\n}\n\nexport default usePosition\n\n", "import type { Point, Align } from './definitions'\n\nfunction coords(portal: Point, anchor: Point, align: Align): [x: number, y: number] {\n return [\n xCoord(portal, anchor, align),\n yCoord(portal, anchor, align),\n ]\n}\n\nexport default coords\n\nfunction xCoord(portal: Point, anchor: Point, align: Align) {\n if (align.y === 'middle') {\n switch (align.x) {\n case 'left': {\n const x = anchor.x - portal.width\n\n if (x < 0) {\n return 0\n }\n\n return x\n }\n\n case 'right': {\n const x = anchor.x + anchor.width\n\n if (x + portal.width > window.innerWidth) {\n return window.innerWidth - portal.width\n }\n\n return x\n }\n\n default: break\n }\n }\n\n switch (align.x) {\n case 'left': {\n return anchor.x\n }\n\n case 'center': {\n return anchor.x + anchor.width / 2 - portal.width / 2\n }\n\n case 'right': {\n return anchor.x + anchor.width - portal.width\n }\n\n default: {\n return anchor.x\n }\n }\n}\n\nfunction yCoord(portal: Point, anchor: Point, align: Align) {\n switch (align.y) {\n case 'top': {\n const y = anchor.y - portal.height\n\n if (y < 0) {\n return 0\n }\n\n return y\n }\n\n case 'middle': {\n return anchor.y + anchor.height / 2 - portal.height / 2\n }\n\n case 'bottom': {\n const y = anchor.y + anchor.height\n\n if (y + portal.height > window.innerHeight) {\n return window.innerHeight - portal.height\n }\n\n return y\n }\n\n default: {\n return anchor.y\n }\n }\n}", "import * as React from 'react'\n\n/**\n * React ref, but with trigger re-rendering when ref changes.\n * \n * @returns ref-like function\n */\nfunction useAnchor<\n TElement extends HTMLElement = HTMLElement,\n>() {\n const [anchor, setAnchor] = React.useState(null)\n const ref = React.useCallback((node: TElement | null) => {\n setAnchor(prevAnchor => {\n if (node !== prevAnchor) {\n return node\n }\n\n return prevAnchor\n })\n }, [])\n\n return [anchor, ref] as const\n}\n\nexport default useAnchor", "import * as React from 'react'\n\nfunction useOpen(\n nodes: {\n anchor: HTMLElement | null,\n tooltip: HTMLElement | null,\n },\n openState: ReturnType>,\n triggers: Array<'click' | 'hover'>,\n closeDelay: number = 300,\n disabled: boolean = false,\n clickOnly: boolean = false,\n) {\n const mdDown = matchMedia(\"(max-width: 991px)\").matches\n const isMouseDevice = matchMedia('(pointer:fine)').matches\n const isTouchDevice = matchMedia('(pointer:coarse)').matches\n\n let _triggers = isMouseDevice && !mdDown ? triggers : ['click']\n\n const _nodes = React.useRef(nodes)\n\n React.useEffect(() => {\n _nodes.current = nodes\n }, [nodes.anchor, nodes.tooltip])\n\n const [open, setOpen] = openState\n const delayTimeout = React.useRef(null)\n\n React.useEffect(() => {\n if (!nodes.anchor || !nodes.tooltip || disabled) {\n return\n }\n\n const { anchor, tooltip } = nodes\n\n const handleOpen = (e) => {\n e.stopPropagation()\n\n if (delayTimeout.current) {\n clearTimeout(delayTimeout.current)\n }\n\n delayTimeout.current = setTimeout(setOpen, 0, true)\n }\n const handleClose = () => {\n if (delayTimeout.current) {\n clearTimeout(delayTimeout.current)\n }\n\n delayTimeout.current = setTimeout(setOpen, closeDelay, false)\n }\n\n const handleCloseImidiate = () => {\n setOpen(false)\n\n if (delayTimeout.current) {\n clearTimeout(delayTimeout.current)\n }\n }\n\n const handleResetTimeout = (e: MouseEvent) => {\n for (let target = e.target as HTMLElement; target; target = target.parentElement) {\n if ((target === tooltip || target === anchor) && delayTimeout.current) {\n return clearTimeout(delayTimeout.current)\n }\n }\n\n delayTimeout.current = setTimeout(setOpen, 50, false) // fallback\n }\n\n const handleOutsideClick = (e) => {\n if (tooltip && !tooltip.contains(e.currentTarget)) {\n handleCloseImidiate()\n }\n\n if (e.target.dataset.closeTooltip) {\n handleCloseImidiate()\n }\n }\n\n if (open) {\n document.addEventListener('scroll', handleCloseImidiate)\n\n if (isMouseDevice && !clickOnly) {\n document.addEventListener('mouseenter', handleResetTimeout)\n document.addEventListener('mousemove', handleResetTimeout)\n document.addEventListener('mouseover', handleResetTimeout)\n }\n\n for (const trigger of _triggers) {\n switch (trigger) {\n case 'click':\n document.addEventListener('click', handleOutsideClick)\n\n anchor.addEventListener('click', handleCloseImidiate)\n\n if (!clickOnly) {\n anchor.addEventListener('blur', handleCloseImidiate)\n\n if (isTouchDevice) {\n anchor.addEventListener('mouseleave', handleCloseImidiate)\n } else {\n anchor.addEventListener('mouseleave', handleClose)\n }\n }\n\n tooltip.addEventListener('mouseleave', handleCloseImidiate)\n break\n case 'hover':\n anchor.addEventListener('mouseleave', handleClose)\n tooltip.addEventListener('mouseleave', handleCloseImidiate)\n break\n default:\n break\n }\n }\n\n return () => {\n document.removeEventListener('scroll', handleCloseImidiate)\n\n if (isMouseDevice && !clickOnly) {\n document.removeEventListener('mouseenter', handleResetTimeout)\n document.removeEventListener('mousemove', handleResetTimeout)\n document.removeEventListener('mouseover', handleResetTimeout)\n }\n\n for (const trigger of _triggers) {\n switch (trigger) {\n case 'click':\n document.removeEventListener('click', handleOutsideClick)\n\n anchor.removeEventListener('click', handleCloseImidiate)\n\n if (!clickOnly) {\n anchor.removeEventListener('blur', handleCloseImidiate)\n\n if (isTouchDevice) {\n anchor.removeEventListener('mouseleave', handleCloseImidiate)\n } else {\n anchor.removeEventListener('mouseleave', handleClose)\n }\n }\n\n tooltip.removeEventListener('mouseleave', handleCloseImidiate)\n break\n\n case 'hover':\n anchor.removeEventListener('mouseleave', handleClose)\n tooltip.removeEventListener('mouseleave', handleCloseImidiate)\n break\n default:\n break\n }\n }\n }\n } else {\n for (const trigger of _triggers) {\n switch (trigger) {\n case 'click':\n anchor.addEventListener('click', handleOpen)\n break\n case 'hover':\n anchor.addEventListener('mouseenter', handleOpen)\n break\n default:\n break\n }\n }\n\n return () => {\n for (const trigger of _triggers) {\n switch (trigger) {\n case 'click':\n anchor.removeEventListener('click', handleOpen)\n break\n case 'hover':\n anchor.removeEventListener('mouseenter', handleOpen)\n break\n default:\n break\n }\n }\n }\n }\n }, [open, nodes.anchor, nodes.tooltip, _triggers, disabled, isMouseDevice, isTouchDevice, delayTimeout?.current, clickOnly])\n}\n\nexport default useOpen", "import * as React from 'react'\nimport { Gap } from './use-position/definitions'\n\ninterface Options {\n className?: string\n\n gap?: Partial\n}\n\n/**\n * Create HTML element and insert it into body, when \"open\".\n */\nfunction usePortal(open: boolean, options: Options = {}) {\n options = {\n ...options,\n gap: {\n x: 0,\n y: 0,\n ...options.gap,\n },\n }\n\n const portal = React.useRef(document.createElement('div'))\n\n if (options.className) {\n portal.current.classList.toggle(options.className, true)\n }\n\n // portal.current.style['margin'] = `${options.gap.y * -1}px ${options.gap.x * -1}px`\n portal.current.style['padding'] = `${options.gap.y}px ${options.gap.x}px`\n\n const timeout = React.useRef(null)\n\n React.useEffect(() => {\n if (open) {\n if (timeout.current) {\n clearTimeout(timeout.current)\n }\n\n document.body.appendChild(portal.current)\n\n timeout.current = setTimeout(() => {\n portal.current.classList.add('opened')\n }, 0)\n\n return () => {\n if (timeout.current) {\n clearTimeout(timeout.current)\n }\n\n onTransition(portal.current, () => {\n if (portal.current.parentNode === document.body) {\n document.body.removeChild(portal.current)\n }\n })\n\n portal.current.classList.remove('opened')\n }\n }\n }, [open])\n\n return portal\n}\n\nexport default usePortal\n\nasync function onTransition(portal: HTMLElement, callback: (() => void), timeout: number = 100) {\n const result = await Promise.race([\n new Promise(resolve => {\n portal.addEventListener('transitionstart', done1)\n\n function done1() {\n resolve(true)\n\n portal.removeEventListener('transitionstart', done1)\n }\n }),\n new Promise(resolve => {\n setTimeout(resolve, timeout, false)\n }),\n ])\n\n if (!result) {\n callback()\n\n return\n }\n\n portal.addEventListener('transitionend', done2)\n\n function done2() {\n callback()\n\n portal.removeEventListener('transitionend', done2)\n }\n}", "import * as React from 'react'\nimport ReactDOM from 'react-dom/client'\n\n/**\n * Create react subrenderer and render children into portal.\n * Need for using as hook without return to default render functon.\n */\nfunction useRender<\n TElement extends HTMLElement = HTMLElement,\n>(portal: React.RefObject, children: React.ReactNode, deps: React.DependencyList) {\n const [root] = React.useState(() => ReactDOM.createRoot(portal.current))\n\n React.useEffect(() => {\n root.render(children)\n\n // return () => {\n // root.unmount()\n // }\n }, deps)\n}\n\nexport default useRender", "import 'css-chunk:src/variables.module.scss';export default {\n \"domain\": \"mono-ui_tooltip\",\n \"same-width\": \"same-width\",\n \"root\": \"mono-ui_tooltip__root\",\n \"portal\": \"mono-ui_tooltip__portal\",\n \"tooltip\": \"mono-ui_tooltip__tooltip\"\n};", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport withSelectContext, { SelectProviderProps } from '../context/hoc'\n\nimport BaseSelect, { SelectProps as BaseSelectProps } from '../components/select'\n\nimport scssVariables from '../variables.module.scss'\nimport './_themes/default.scss'\nimport './styles.scss'\n\ninterface Props extends Omit {\n fullWidth?: boolean\n readOnly?: boolean\n\n _overrideVariant?: string\n}\n\nexport default withSelectContext(React.forwardRef(\n function Select({\n children,\n\n fullWidth,\n readOnly,\n\n _overrideVariant = 'default',\n\n ...props\n }, ref) {\n return (\n \n {children}\n \n )\n }\n))\n\nexport type SelectProps = Props & SelectProviderProps\n\nexport type { HandleChange as ChangeHandler } from '../context/definitions'\n\nexport { default as Option } from '../components/option'\nexport type { OptionProps } from '../components/option'\n\nexport { default as OptGroup } from '../components/optgroup'\nexport type { OptGroupProps } from '../components/optgroup'\n\nexport const buttonClasses = {\n root: scssVariables.root,\n select: scssVariables.select,\n option: scssVariables.option,\n optgroup: scssVariables.optgroup,\n\n fullWidth: scssVariables['full-width'],\n readOnly: scssVariables['read-only'],\n} as const", "import * as React from 'react'\n\nimport SelectProvider, { SelectProviderProps as ProviderProps } from '.'\n\nconst withSelect = (\n Component: React.ComponentType>\n) => React.forwardRef(({\n name,\n\n form,\n\n value,\n onChange,\n\n ...props\n}, ref) => (\n \n \n \n))\n\nexport type { ProviderProps as SelectProviderProps }\n\nexport default withSelect", "import * as React from 'react'\n\nimport {\n HandleChange,\n} from './definitions'\n\nexport interface SelectProviderProps {\n name: string\n\n form?: string\n\n value: string | number\n onChange?: HandleChange\n}\n\ninterface Children {\n children: React.ReactNode\n}\n\ninterface SelectContext extends Omit {\n onChange: React.ChangeEventHandler\n}\n\nconst context = React.createContext({} as SelectContext)\nconst { Provider } = context\n\nexport const useSelect = () => React.useContext(context)\n\nconst SelectProvider: React.FC = ({\n children,\n\n ...props\n}) => {\n const _n = React.useRef(props.name)\n const _v = React.useRef(props.value)\n\n _n.current = props.name\n _v.current = props.value\n\n const handleChange = React.useCallback(e => {\n props.onChange?.(e, e.target.value, _n.current)\n }, [])\n\n const context = React.useMemo(() => ({\n name: props.name,\n\n form: props.form,\n\n value: props.value,\n onChange: handleChange,\n }), [\n props.name,\n props.form,\n props.value,\n handleChange,\n ])\n\n return (\n \n {children}\n \n )\n}\n\nexport default SelectProvider", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport Option, { OptionProps } from './option'\nimport OptGroup, { OptGroupProps } from './optgroup'\n\nimport { useSelect } from '../context'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseSelectProps = React.DetailedHTMLProps, HTMLSelectElement>\ntype Child = React.ReactElement | React.ReactElement\n\nexport interface SelectProps extends Omit {\n children: Child | Child[]\n}\n\nexport default React.forwardRef(\n function Select({\n className,\n\n children,\n\n ...props\n }, ref) {\n const {\n name,\n\n form,\n\n value,\n onChange: handleChange,\n } = useSelect()\n\n // comment valiation because I need to use select with react fragments\n\n // React.useEffect(() => {\n // React.Children.forEach(children, child => {\n // if (React.isValidElement(child) && (child.type === Option || child.type === OptGroup)) {\n // return\n // }\n\n // throw new Error('\"Select\" component only accepts \"Option\" or \"OptGroup\" as children')\n // })\n // }, [children])\n\n return (\n \n {children}\n \n )\n }\n)", "import 'css-chunk:src/variables.module.scss';export default {\n \"domain\": \"mono-ui_select\",\n \"same-width\": \"same-width\",\n \"root\": \"mono-ui_select\",\n \"select\": \"mono-ui_select__select\",\n \"option\": \"mono-ui_select__option\",\n \"optgroup\": \"mono-ui_select__optgroup\",\n \"full-width\": \"full-width\",\n \"read-only\": \"read-only\"\n};", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseOptionProps = React.DetailedHTMLProps, HTMLOptionElement>\n\nexport interface OptionProps extends Omit {\n children: string\n}\n\nexport default React.forwardRef(\n function Option({\n className,\n\n children,\n\n ...props\n }, ref) {\n return (\n \n )\n }\n)", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport Option, { OptionProps } from './option'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseOptGroupProps = React.DetailedHTMLProps, HTMLOptGroupElement>\ntype Child = React.ReactElement\n\nexport interface OptGroupProps extends Omit {\n children: Child | Child[]\n}\n\nexport default React.forwardRef(\n function OptGroup({\n className,\n\n children,\n\n ...props\n }, ref) {\n React.useEffect(() => React.Children.forEach(children, child => {\n if (React.isValidElement(child) && (child.type === Option)) {\n return\n }\n\n throw new Error('\"OptGroup\" component only accepts \"Option\"')\n }), [children])\n\n return (\n \n {children}\n \n )\n }\n)", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport withNumberInputContext, { NumberInputProviderProps } from '../context/hoc'\n\nimport DecreaseButton from '../components/decrease'\nimport BaseInput from '../components/input'\nimport IncreaseButton from '../components/increase'\n\nimport scssVariables from '../variables.module.scss'\nimport './_themes/default.scss'\nimport './styles.scss'\n\nexport type HTMLDivProps = React.DetailedHTMLProps, HTMLDivElement>\n\ninterface Props extends Omit {\n fullWidth?: boolean\n readOnly?: boolean\n svgButton?: boolean\n}\n\nexport default withNumberInputContext(React.forwardRef(\n function NumberInput({\n className,\n\n fullWidth = false,\n readOnly = false,\n\n svgButton = true,\n\n ...props\n }, ref) {\n return (\n
\n \n \n \n
\n )\n }\n))\n\nexport type NumberInputProps = Props & NumberInputProviderProps\n\nexport type { HandleChange as ChangeHandler } from '../context/definitions'\n\nexport const buttonClasses = {\n root: scssVariables.root,\n button: scssVariables.button,\n decrease: scssVariables.decrease,\n increase: scssVariables.increase,\n icon: scssVariables.icon,\n decreaseIcon: scssVariables.decreaseIcon,\n increaseIcon: scssVariables.increaseIcon,\n\n fullWidth: scssVariables['full-width'],\n readOnly: scssVariables['read-only'],\n} as const", "import * as React from 'react'\n\nimport NumberInputProvider, { NumberInputProviderProps as ProviderProps } from '.'\n\nconst withNumberInput = (\n Component: React.ComponentType>\n) => React.forwardRef(({\n name,\n\n form,\n\n value,\n onChange,\n\n decreaseButtonProps,\n inputProps,\n increaseButtonProps,\n\n allowFloat,\n\n min,\n max,\n\n stringify,\n parse,\n\n normalize,\n\n numberPattern,\n\n fontSizeTransform,\n\n ...props\n}, ref) => (\n \n \n \n))\n\nexport type { ProviderProps as NumberInputProviderProps }\n\nexport default withNumberInput", "import * as React from 'react'\n\nimport hashsum from 'hash-sum'\n\nimport _debounce from 'lodash/debounce'\n\nimport useAPI from '../hooks/use-api'\nimport useTempState from '../hooks/use-temp-state'\n\nimport { API, HandleChange } from './definitions'\n\nimport type { DecreaseButtonProps } from '../components/decrease'\nimport type { InputProps } from '../components/input'\nimport type { IncreaseButtonProps } from '../components/increase'\n\nexport interface NumberInputProviderProps extends Partial {\n name: string\n\n form?: string\n\n value: string\n onChange: HandleChange\n\n decreaseButtonProps?: DecreaseButtonProps\n inputProps?: InputProps\n increaseButtonProps?: IncreaseButtonProps\n\n allowFloat?: boolean\n\n fontSizeTransform?: (value: string, api: API) => React.CSSProperties['fontSize']\n}\n\ninterface Children {\n children: React.ReactNode\n}\n\ninterface NumberInputContext extends Omit {\n onChange: React.ChangeEventHandler\n onBlur: React.FocusEventHandler\n\n onIncrease: React.MouseEventHandler\n onKeyIncrease: React.KeyboardEventHandler\n onDecrease: React.MouseEventHandler\n onKeyDecrease: React.KeyboardEventHandler\n\n api: API\n\n fontSizeTransform?: () => React.CSSProperties['fontSize']\n}\n\nconst context = React.createContext({} as NumberInputContext)\nconst { Provider } = context\n\nexport const useNumberInput = () => React.useContext(context)\n\nconst CHARS_WHITELIST_PATTERN = /^[0-9\\b]+$/\nconst CHARS_WHITELIST_WITH_DOT_PATTERN = /^[0-9.\\b]+$/\n\nconst NumberInputProvider: React.FC = ({\n children,\n\n ...props\n}) => {\n const api = useAPI(props)\n\n const [_value, setValue] = useTempState(props.value ?? '')\n const _n = React.useRef(props.name)\n\n _n.current = props.name\n\n const pattern = React.useMemo(() => props.allowFloat ? CHARS_WHITELIST_WITH_DOT_PATTERN : CHARS_WHITELIST_PATTERN, [props.allowFloat])\n\n const save = React.useCallback((e, value) => {\n if (value === '' || pattern.test(`${value}`)) {\n value = value === '' ? 0 : value\n value = `${value}`.includes('.') && props.allowFloat ? parseFloat(value) : parseInt(value, 10)\n\n if (value > api.max) {\n value = `${api.max}`\n }\n\n setValue(value)\n\n if (props.onChange) {\n props.onChange(e, value, _n.current, api)\n }\n }\n }, [api, pattern, props.allowFloat, props.onChange])\n\n const handlers = React.useMemo(() => ({\n value: _value,\n\n onDecrease: e => save(e, api.normalize(api.parse(_value) - 1, api)),\n onChange: e => save(e, e.target.value),\n onBlur: e => save(e, api.normalize(api.parse(_value), api)),\n onIncrease: e => save(e, api.normalize(api.parse(_value) + 1, api)),\n\n onKeyDecrease: e => save(e, api.normalize(api.parse(e.target.value) - 1, api)),\n onKeyIncrease: e => save(e, api.normalize(api.parse(e.target.value) + 1, api)),\n }), [_value, api, props.onChange])\n\n const context = React.useMemo(() => ({\n ...handlers,\n\n api,\n\n name: props.name,\n\n form: props.form,\n\n decreaseButtonProps: props.decreaseButtonProps,\n inputProps: props.inputProps,\n increaseButtonProps: props.increaseButtonProps,\n\n fontSizeTransform: props.fontSizeTransform ? () => props.fontSizeTransform?.(_value, api) : undefined,\n }), [\n handlers,\n props.name,\n props.form,\n hashsum(props.decreaseButtonProps),\n hashsum(props.inputProps),\n hashsum(props.increaseButtonProps),\n props.fontSizeTransform,\n ])\n\n return (\n \n {children}\n \n )\n}\n\nexport default NumberInputProvider", "import * as React from 'react'\n\nimport baseStringify from '../tools/base-stringify'\nimport baseParse from '../tools/base-parse'\nimport baseNormalize from '../tools/base-normalize'\n\nimport { API } from '../context/definitions'\n\nfunction useAPI = Partial>(arg: TArg) {\n return React.useMemo(() => ({\n min: typeof arg.min !== 'undefined' ? arg.min : -Infinity,\n max: typeof arg.max !== 'undefined' ? arg.max : Infinity,\n\n stringify: typeof arg.stringify !== 'undefined' ? arg.stringify : baseStringify,\n parse: typeof arg.parse !== 'undefined' ? arg.parse : baseParse,\n\n normalize: typeof arg.normalize !== 'undefined' ? arg.normalize : baseNormalize,\n\n numberPattern: typeof arg.numberPattern !== 'undefined' ? arg.numberPattern : /^[+-]?\\d+\\.?\\d+/,\n }), [\n arg.min,\n arg.max,\n\n arg.stringify,\n arg.parse,\n\n arg.normalize,\n\n arg.numberPattern,\n ])\n}\n\nexport type UseAPI = typeof useAPI\n\nexport default useAPI", "function baseStringify(value: number): string {\n return value.toString()\n}\n\nexport type Stringify = typeof baseStringify\n\nexport default baseStringify", "function baseParse(value: string): number {\n const _v = parseFloat(value)\n\n return _v ? _v : 0\n}\n\nexport type Parse = typeof baseParse\n\nexport default baseParse", "import type { API } from '../context/definitions'\n\nfunction baseNormalize(\n value: string | number,\n api: API,\n): string {\n const _v = typeof value === 'string' ? api.parse(value === '' ? '0' : value) : value\n\n if (_v < api.min) {\n return api.stringify(api.min)\n }\n\n if (_v > api.max) {\n return api.stringify(api.max)\n }\n\n return api.stringify(_v)\n}\n\nexport type Normalize = typeof baseNormalize\n\nexport default baseNormalize", "import * as React from 'react'\n\nfunction useTempState(state: T): readonly [T, React.Dispatch>] {\n const [value, setValue] = React.useState(state)\n\n React.useEffect(() => {\n setValue(prevProps => {\n if (prevProps === state) {\n return prevProps\n }\n\n return state\n })\n }, [state])\n\n return [value, setValue] as const\n}\n\nexport type UseTempState = typeof useTempState\n\nexport default useTempState", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport { useNumberInput } from '../context'\n\nimport Button, { ButtonProps } from './button'\n\nimport MinusIcon from '../assets/minus.svg'\n\nimport scssVariables from '../variables.module.scss'\n\nexport interface DecreaseButtonProps extends ButtonProps {\n svgButton?: boolean\n }\n\nexport default React.forwardRef(\n function DecreaseButton({\n className,\n\n children = ,\n\n svgButton,\n\n ...props\n }, ref) {\n const {\n onDecrease: handleDecrease,\n } = useNumberInput()\n\n return (\n \n {svgButton ? children : '-'}\n \n )\n }\n)", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport useRipple from 'ui/_hooks/use-ripple'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseButtonProps = React.DetailedHTMLProps, HTMLButtonElement>\n\nexport interface ButtonProps extends BaseButtonProps { }\n\nexport default React.forwardRef(\n function Button({\n className,\n\n children,\n\n ...props\n }, ref) {\n const [rippleClass] = useRipple({})\n\n return (\n \n {children}\n \n )\n }\n)", "import * as React from 'react'\n\nimport ripple from 'ripple-effects'\nimport hashsum from 'hash-sum'\n\nexport type RippleOptions = Parameters[1]\n\ntype UseRippleOptions = RippleOptions & {\n disableRipple?: boolean\n}\n\ntype RippleDestroy = () => boolean\nconst NOOP_DESTROY: RippleDestroy = () => false\n\nconst useRipple = ({ disableRipple, ...rippleOptions }: UseRippleOptions) => {\n const id = React.useId()\n const rippleClass = React.useMemo(() => [id.replace(/:/g, ''), 'ripple'].join('-'), [id])\n\n const destroy = React.useRef(NOOP_DESTROY)\n\n React.useEffect(() => {\n if (!disableRipple) {\n const { destroy: rippleDestroy } = ripple(`.${rippleClass}`, {\n background: 'rgba(200, 200, 200, 0.75)',\n ...rippleOptions\n })\n\n destroy.current = () => {\n rippleDestroy()\n\n return true\n }\n\n return () => {\n rippleDestroy()\n }\n }\n }, [disableRipple, hashsum(rippleOptions)])\n\n return [rippleClass, destroy.current] as const\n}\n\nexport default useRipple", "import 'css-chunk:src/variables.module.scss';export default {\n \"domain\": \"mono-ui_number-input\",\n \"same-width\": \"same-width\",\n \"root\": \"mono-ui_number-input__root\",\n \"button\": \"mono-ui_number-input__button\",\n \"decrease\": \"mono-ui_number-input__button--decrease\",\n \"increase\": \"mono-ui_number-input__button--increase\",\n \"icon\": \"mono-ui_number-input__icon\",\n \"decreaseIcon\": \"mono-ui_number-input__icon--decrease\",\n \"increaseIcon\": \"mono-ui_number-input__icon--increase\",\n \"full-width\": \"full-width\",\n \"read-only\": \"read-only\"\n};", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseSvgProps = React.DetailedHTMLProps, SVGSVGElement>\n\nexport interface MinusSvgProps extends Omit { }\n\nconst MinusSvg: React.FC = ({\n className,\n\n ...props\n}) => (\n \n \n \n)\n\nexport default MinusSvg", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport { useNumberInput } from '../context'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseInputProps = React.DetailedHTMLProps, HTMLInputElement>\n\nexport interface InputProps extends Omit { }\n\nexport default React.forwardRef(\n function Input({\n className,\n\n ...props\n }, ref) {\n const {\n name,\n\n form,\n\n value,\n onChange: handleChange,\n onBlur: handleBlur,\n\n onKeyDecrease: handleKeyDecrease,\n onKeyIncrease: handleKeyIncrease,\n\n inputProps,\n\n fontSizeTransform,\n } = useNumberInput()\n\n const handleKeyDown = React.useCallback>(event => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n handleKeyDecrease(event)\n break\n case 'ArrowUp':\n event.preventDefault()\n handleKeyIncrease(event)\n break\n }\n }, [handleKeyDecrease, handleKeyIncrease])\n\n return (\n \n )\n }\n)", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport { useNumberInput } from '../context'\n\nimport Button, { ButtonProps } from './button'\n\nimport PlusIcon from '../assets/plus.svg'\n\nimport scssVariables from '../variables.module.scss'\n\nexport interface IncreaseButtonProps extends ButtonProps {\n svgButton?: boolean\n }\n\nexport default React.forwardRef(\n function IncreaseButton({\n className,\n\n children = ,\n\n svgButton,\n\n ...props\n }, ref) {\n const {\n onIncrease: handleIncrease,\n } = useNumberInput()\n\n return (\n \n {svgButton ? children : '+'}\n \n )\n }\n)", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseSvgProps = React.DetailedHTMLProps, SVGSVGElement>\n\nexport interface PlusSvgProps extends Omit { }\n\nconst PlusSvg: React.FC = ({\n className,\n\n ...props\n}) => (\n \n \n \n)\n\nexport default PlusSvg", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport { useSwitcher } from '../context'\nimport withSwitcherContext, { SwitchProviderProps } from '../context/hoc'\n\nimport Flag from '../components/flag'\nimport Label from '../components/label'\nimport Thumb from '../components/thumb'\n\nimport { LabelPosition } from '../context/definitions'\n\nimport scssVariables from '../variables.module.scss'\nimport './_themes/default.scss'\nimport './styles.scss'\n\ntype HTMLDivProps = React.DetailedHTMLProps, HTMLDivElement>\n\ninterface Props extends Omit { }\n\nexport default withSwitcherContext(React.forwardRef(\n function Switcher(props, ref) {\n const {\n labels = {},\n\n disableThumb,\n } = useSwitcher()\n\n const leftLabel = labels[LabelPosition.LEFT]\n const rightLabel = labels[LabelPosition.RIGHT]\n\n return (\n
\n \n {leftLabel ? : null}\n {!disableThumb ? : null}\n {rightLabel ? : null}\n
\n )\n }\n))\n\nexport type SwitcherProps = Props & SwitchProviderProps\n\nexport type { HandleChange as ChangeHandler } from '../context/definitions'\n\nexport const buttonClasses = {\n root: scssVariables.root,\n flag: scssVariables.flag,\n label: scssVariables.label,\n thumb: scssVariables.thumb,\n track: scssVariables.track,\n} as const", "import * as React from 'react'\n\nimport hashsum from 'hash-sum'\n\nimport { RippleOptions } from 'ui/_hooks/use-ripple'\n\nimport {\n HandleChange,\n\n LabelPosition,\n} from './definitions'\n\nexport interface SwitcherProviderProps {\n name: string\n\n form?: string\n\n labels?: [right?: string, left?: string] | readonly [right?: string, left?: string]\n\n checked: boolean\n onChange: HandleChange\n\n disableThumb?: boolean\n\n disableRipple?: boolean\n rippleOptions?: RippleOptions\n}\n\ninterface Children {\n children: React.ReactNode\n}\n\ninterface SwitcherContext extends Omit {\n flagId: string\n\n labels: {\n [LabelPosition.LEFT]?: string\n [LabelPosition.RIGHT]?: string\n }\n\n onChange: React.ChangeEventHandler\n}\n\nconst context = React.createContext({} as SwitcherContext)\nconst { Provider } = context\n\nexport const useSwitcher = () => React.useContext(context)\n\nconst SwitcherProvider: React.FC = ({\n children,\n\n ...props\n}) => {\n const flagId = React.useId()\n\n const _n = React.useRef(props.name)\n\n _n.current = props.name\n\n const context = React.useMemo(() => ({\n flagId,\n\n name: props.name,\n\n form: props.form,\n\n labels: {\n [LabelPosition.LEFT]: props.labels[LabelPosition.LEFT],\n [LabelPosition.RIGHT]: props.labels[LabelPosition.RIGHT],\n },\n\n checked: props.checked,\n onChange: e => props.onChange?.(e, e.target.checked, _n.current),\n\n disableThumb: props.disableThumb,\n\n disableRipple: props.disableRipple,\n rippleOptions: props.rippleOptions,\n }), [\n flagId,\n props.name,\n props.form,\n props.labels[LabelPosition.LEFT],\n props.labels[LabelPosition.RIGHT],\n props.checked,\n props.onChange,\n props.disableThumb,\n props.disableRipple,\n hashsum(props.rippleOptions),\n ])\n\n return (\n \n {children}\n \n )\n}\n\nexport default SwitcherProvider", "import * as React from 'react'\n\nimport SwitcherProvider, { SwitcherProviderProps as ProviderProps } from '.'\n\nconst withSwitcher = (\n Component: React.ComponentType>\n) => React.forwardRef(({\n name,\n\n form,\n\n labels,\n\n checked,\n onChange,\n\n disableThumb,\n\n disableRipple,\n rippleOptions,\n\n ...props\n}, ref) => (\n \n \n \n))\n\nexport type { ProviderProps as SwitchProviderProps }\n\nexport default withSwitcher", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport { useSwitcher } from '../context'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseInputProps = React.DetailedHTMLProps, HTMLInputElement>\n\nexport interface FlagProps extends Omit { }\n\nexport default React.forwardRef(\n function Flag({\n className,\n\n ...props\n }, ref) {\n const {\n flagId,\n\n name,\n\n form,\n\n checked,\n\n onChange: handleChange,\n } = useSwitcher()\n\n return (\n \n )\n }\n)", "import 'css-chunk:src/variables.module.scss';export default {\n \"domain\": \"mono-ui_switcher\",\n \"same-width\": \"same-width\",\n \"root\": \"mono-ui_switcher\",\n \"flag\": \"mono-ui_switcher__flag\",\n \"label\": \"mono-ui_switcher__label\",\n \"thumb\": \"mono-ui_switcher__thumb\",\n \"track\": \"mono-ui_switcher__track\"\n};", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport { useSwitcher } from '../context'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseLabelProps = React.DetailedHTMLProps, HTMLLabelElement>\n\nexport interface LabelProps extends Omit {\n children?: string\n}\n\nexport default React.forwardRef(\n function Label({\n className,\n\n children,\n\n ...props\n }, ref) {\n const { flagId } = useSwitcher()\n\n if (!children) {\n return null\n }\n\n return (\n \n {children}\n \n )\n }\n)", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport useRipple from 'ui/_hooks/use-ripple'\n\nimport { useSwitcher } from '../context'\n\nimport scssVariables from '../variables.module.scss'\n\ntype BaseLabelProps = React.DetailedHTMLProps, HTMLLabelElement>\n\nexport interface ThumbProps extends Omit { }\n\nexport default React.forwardRef(\n function Thumb({\n className,\n\n ...props\n }, ref) {\n const {\n flagId,\n\n disableThumb,\n\n disableRipple,\n rippleOptions,\n } = useSwitcher()\n\n const [rippleClass] = useRipple({\n disableRipple: disableRipple || disableThumb,\n ...rippleOptions\n })\n\n return (\n \n \n \n )\n }\n)", "import * as React from 'react'\n\nimport ripple from 'ripple-effects'\nimport hashsum from 'hash-sum'\n\nexport type RippleOptions = Parameters[1]\n\ntype UseRippleOptions = RippleOptions & {\n disableRipple?: boolean\n}\n\ntype RippleDestroy = () => boolean\nconst NOOP_DESTROY: RippleDestroy = () => false\n\nconst useRipple = ({ disableRipple, ...rippleOptions }: UseRippleOptions) => {\n const id = React.useId()\n const rippleClass = React.useMemo(() => [id.replace(/:/g, ''), 'ripple'].join('-'), [id])\n\n const destroy = React.useRef(NOOP_DESTROY)\n\n React.useEffect(() => {\n if (!disableRipple) {\n const { destroy: rippleDestroy } = ripple(`.${rippleClass}`, {\n background: 'rgba(200, 200, 200, 0.75)',\n ...rippleOptions\n })\n\n destroy.current = () => {\n rippleDestroy()\n\n return true\n }\n\n return () => {\n rippleDestroy()\n }\n }\n }, [disableRipple, hashsum(rippleOptions)])\n\n return [rippleClass, destroy.current] as const\n}\n\nexport default useRipple", "import * as React from 'react'\n\nimport { Entity } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\nimport Decorator, { DecoratorProps } from './../../_decorator'\n\nimport { getConfigs } from 'global-entities/configs/utils/get'\n\nimport { UIOrderForm } from './form'\n\nimport StoreManager from '@qwerty.software/store-manager'\nimport { ORDER_SLICE_NAME } from '@qwerty.software/ui-order-form/src/store/slices/order/constants'\nimport { getQuerySearchFromOrderValues } from '@qwerty.software/ui-order-form/src/hooks/use-copy-order-to-clipboard'\nimport { InnerConfigs } from '@qwerty.software/ui-order-form/src/templates/_decorator/configs-context'\n\nexport interface UIOrderFormProps extends Omit {\n discount?: InnerConfigs['discount']\n}\n\nexport default React.memo(({\n configs = {},\n\n dictionary,\n\n discount,\n\n ...props\n}) => {\n const { orderPagePath, shouldRedirectToParentSite, parentSiteUrl, calculatorQueryFlow } = getConfigs()\n\n const handleSubmit = React.useCallback((e: React.FormEvent) => {\n e.preventDefault()\n\n const url = new URL(window.location.href)\n const searchParams = new URLSearchParams(url.search)\n let searchParamsFromOrderValues: URLSearchParams | null = null\n\n if (calculatorQueryFlow) {\n const orderValues = StoreManager.getInstance().store.getState()?.[ORDER_SLICE_NAME]\n\n if (orderValues) {\n searchParamsFromOrderValues = getQuerySearchFromOrderValues(orderValues, true)\n }\n }\n\n if (discount?.code) {\n searchParams.set('discount', discount.code)\n }\n\n const combinedParams = new URLSearchParams({\n ...Object.fromEntries(searchParams),\n ...Object.fromEntries(searchParamsFromOrderValues || [])\n }).toString()\n\n if (shouldRedirectToParentSite && parentSiteUrl) {\n window.location.href = `${window.location.protocol}//${parentSiteUrl}/${orderPagePath}${combinedParams.length ? '?' + combinedParams : ''}${url.hash}`\n return\n }\n\n window.location.href = `/${orderPagePath}${combinedParams.length ? '?' + combinedParams : ''}${url.hash}`\n }, [orderPagePath, shouldRedirectToParentSite, parentSiteUrl, calculatorQueryFlow])\n\n return (\n \n \n \n )\n})\n", "import * as React from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport _merge from 'lodash/merge'\n\nimport { NAME } from '@qwerty.software/ui-order-form/src/constants'\n\nimport { Entity } from './definitions'\n\nimport type { loadingEntities } from '@qwerty.software/ui-order-form/src/templates/dashboard/constants'\n\nimport type { IRawFile, RawOrder } from '@qwerty.software/ui-order-form/src/templates/dashboard/types'\n\nexport { Entity } from './definitions'\n\nexport interface IFormContext extends Omit, HTMLFormElement>, 'children'> {\n entity: Entity\n formRef?: React.MutableRefObject\n\n rawOrder?: RawOrder // dashboard only\n hasAdditionalPayment?: boolean // dashboard only\n rawFiles?: IRawFile[] // dashboard only\n loadingEntity?: loadingEntities // dashboard only\n\n formDifference?: {\n ConnectPriceData?: React.FunctionComponent\n sidebar?: React.FunctionComponent\n summary?: {\n changablePriceItems?: boolean\n PriceItemUnitsList?: React.FunctionComponent\n },\n formBottomBlock?: React.FunctionComponent\n tooltip?: {\n triggers?: Array<'hover' | 'click'>\n },\n checkBoxIcons?: {\n checked: React.FunctionComponent\n unchecked: React.FunctionComponent\n },\n additionalFeatures?: {\n AdditionalFeatureSpecial: React.FunctionComponent\n useShortTitle?: boolean\n },\n WriterCategoryButton?: React.FunctionComponent\n upsalesSpecificOrder?: Array\n calculator?: {\n Footer?: React.FunctionComponent\n }\n MaterialsIcon?: React.FunctionComponent\n MaterialsRemoveIcon?: React.FunctionComponent\n withNumberInputSvgButton?: boolean\n\n priceCalculator?: any\n enabledSoftwares?: number[]\n }\n}\n\nexport const INITIAL_CONFIGS: Omit = {\n id: uuid(),\n name: NAME,\n method: 'GET',\n action: window.location.href,\n hidden: true,\n}\n\nexport const FormContext = React.createContext(INITIAL_CONFIGS as IFormContext)\n\nexport const FormProvider = React.memo<{\n entity: Entity\n formProps: Partial>\n formDifference?: IFormContext['formDifference']\n\n rawOrder?: RawOrder // dashboard only\n hasAdditionalPayment?: boolean // dashboard only\n rawFiles?: IRawFile[] // dashboard only\n loadingEntity?: loadingEntities // dashboard only\n\n children: React.ReactNode\n}>(({\n entity,\n formProps,\n\n formDifference,\n\n rawOrder,\n hasAdditionalPayment,\n loadingEntity,\n rawFiles,\n\n children,\n}) => {\n const formRef = React.useRef(null)\n\n const attrs = _merge({\n ...INITIAL_CONFIGS,\n }, formProps)\n\n return (\n \n
\n {children}\n \n )\n})\n\nexport const useFormContext = () => React.useContext(FormContext)\n", "import * as React from 'react'\nimport type { DeepPartial } from '@reduxjs/toolkit'\nimport { BrowserRouter } from 'react-router-dom'\nimport defaultCalculator from '@qwerty.software/calc-of-price/adapters/microservices'\n\nimport { ConfigsProvider, InnerConfigs } from './configs-context'\nimport { DictionaryProvider, IDictionaryContext } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\nimport { FormProvider, IFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\nimport { withDiscount } from 'global-entities/discount/with-discount'\nimport { withFileUploader } from 'global-entities/files-uploader/with-files-uploader'\n\nimport useSlices from '@qwerty.software/store-manager/hooks/use-slices'\n\nimport ConfigureNotify from 'utils/notify/configure-notify'\n\nimport StoreGate from 'common/store-gate'\n\nimport * as order from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport * as user from '@qwerty.software/ui-order-form/src/store/slices/user'\nimport * as priceData from '@qwerty.software/ui-order-form/src/store/slices/price-data'\n\nimport usePriceData from '@qwerty.software/ui-order-form/src/store/slices/price-data/usePriceData'\nimport useUserData from 'global-entities/user-data/hook'\nimport { useMarkOrderPageAsVisited } from 'hooks/use-mark-order-page-as-visited'\n\nimport GeoTag from 'global-entities/geo-tag'\nimport { CURRENCY_SLICE_PERSIST_CONFIG, currencySlice } from '@qwerty.software/currency-switcher/src/store/slice'\nimport { ORDER_NAMESPACE } from '@qwerty.software/ui-order-form/src/constants'\nimport { useClearAfterTime } from 'hooks/use-clear-after-time'\nimport { FORCE_HIDE_TURNITIN_UPSALE } from 'constants/configs'\n\nexport interface ProvidersProps {\n dictionary?: DeepPartial\n\n // TODO: @required\n configs?: DeepPartial\n // TODO: @required\n entity?: IFormContext['entity']\n formProps?: Partial>\n formDifference?: IFormContext['formDifference']\n}\n\nexport interface DecoratorProps extends ProvidersProps {\n withPriceData?: boolean\n withUserData?: boolean\n\n children?: React.ReactNode\n}\n\nconst ConnectPriceData = React.memo(() => {\n usePriceData({ calculator: defaultCalculator })\n\n return null\n})\n\nconst ConnectUserData = React.memo(() => {\n useUserData()\n\n return null\n})\n\n// we need to clear the order form 24 hours after the last change\nconst ClearDataViaExpire = React.memo(() => {\n useClearAfterTime()\n\n return null\n})\n\nconst MarkOrderPageAsVisited = React.memo(() => {\n useMarkOrderPageAsVisited()\n\n return null\n})\n\nconst Decorator = React.memo(({\n dictionary = {},\n configs = {},\n\n entity = null,\n formProps = {},\n\n // is important to be empty object because we don't need all form differences in each form\n // pass difference only for current difference needed form\n formDifference = {},\n\n children,\n}) => {\n\n // this is here because we need to hide turnitin for all projects without manually adding it to each one\n // just comment this when you need to show turnitin\n React.useEffect(() => {\n window.MICROSERVICES_CONFIGS = {\n ...window.MICROSERVICES_CONFIGS,\n [FORCE_HIDE_TURNITIN_UPSALE]: true,\n }\n }, [])\n\n useSlices([\n [order.orderSlice, order.COMMON_PERSIST_CONFIG],\n [currencySlice, CURRENCY_SLICE_PERSIST_CONFIG],\n [priceData.priceDataSlice],\n [user.userSlice],\n ])\n\n const ConnectPriceDataComponent = formDifference?.ConnectPriceData ? formDifference.ConnectPriceData : ConnectPriceData\n\n return (\n // Comment here because it makes additional render and order bot works wrong\n \n \n \n \n \n \n \n \n \n \n \n {children}\n \n \n \n \n \n // \n )\n})\n\nconst WithDiscountComponent = withDiscount({\n namespace: ORDER_NAMESPACE,\n Component: Decorator,\n options: { searchParam: ['discount', 'discountCode'] }\n})\nconst WithFileUploaderComponent = withFileUploader(ORDER_NAMESPACE, WithDiscountComponent)\n\nexport default WithFileUploaderComponent\n", "import * as React from 'react'\nimport type { DeepPartial } from '@reduxjs/toolkit'\n\nimport type { Configs } from 'common/configs/types'\n\nimport _merge from 'lodash/merge'\n\nexport interface InnerConfigs {\n cashback?: number\n discount?: {\n code: string\n percent?: number\n }\n\n disablePageWordsSwitcher?: boolean\n\n estimatedPriceBefore?: React.ReactNode\n\n summaryAfter?: React.ReactNode\n\n extender?: {\n show: boolean\n withLabel: boolean\n }\n}\n\nexport type { Configs } from 'common/configs/types'\n\nexport interface IConfigsContext extends InnerConfigs, Configs { }\n\nexport const INITIAL_CONFIGS: IConfigsContext = {\n disablePageWordsSwitcher: false,\n\n extender: {\n show: false,\n withLabel: false,\n }\n}\n\nconst ConfigsContext = React.createContext(INITIAL_CONFIGS)\n\nexport const ConfigsProvider = React.memo<{\n configs: DeepPartial\n children: React.ReactNode\n}>(({ configs = {}, children }) => (\n \n {children}\n \n))\n\nexport const useConfigsContext = () => React.useContext(ConfigsContext)\n", "import * as React from 'react'\nimport Template from 'utils/dictionary/t'\n\nimport _merge from 'lodash/merge'\nimport _get from 'lodash/get'\nimport { DeepPartial } from '@reduxjs/toolkit'\n\nimport INITIAL_DICTIONARY, {\n Diction,\n DictionaryContext as IDictionaryContext,\n PlaceholderMap,\n} from './dictionary'\n\nexport interface DictionaryProviderProps {\n dictionary: DeepPartial\n\n children: React.ReactNode\n}\n\ntype dArgs> = T extends keyof PlaceholderMap\n ? [path: T, data: PlaceholderMap[T] | null]\n : [path: T]\n\nconst DictionaryContext = React.createContext(INITIAL_DICTIONARY)\n\nexport const DictionaryProvider = React.memo(({\n dictionary = {},\n\n children,\n}) => (\n \n {children}\n \n))\n\nexport const useDictionary = () => {\n const dictionary = React.useContext(DictionaryContext)\n\n return React.useCallback(>(...args: dArgs) => {\n const [path, data] = args\n\n const diction: Diction = _get(dictionary, path)\n const reactKey = `key: ${diction}`\n\n if (data === null) {\n return typeof diction === 'string'\n }\n\n if (diction === false) {\n return null\n }\n\n if (!diction) {\n return ''\n }\n\n if (!data) {\n return diction\n }\n\n return new Template(reactKey).fill(diction, data)\n }, [dictionary])\n}\n\nexport default DictionaryContext\n\nexport { default as INITIAL_DICTIONARY } from './dictionary'\n\nexport type {\n Diction,\n DictionaryContext as IDictionaryContext,\n PlaceholderMap,\n} from './dictionary'", "import * as React from 'react'\n\nimport _every from 'lodash/every'\nimport _isString from 'lodash/isString'\n\ninterface ITranslateOptions {\n before?: string\n after?: string\n}\n\nclass Template {\n private BEFORE!: string\n private AFTER!: string\n\n constructor(private reactKey: string, {\n before = '[:',\n after = ']',\n }: ITranslateOptions = {}) {\n this.BEFORE = this.escape(before)\n this.AFTER = this.escape(after)\n }\n\n protected escape(str: string): string {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') // escape for RegExp\n }\n\n protected match(str: string) {\n return str.match(this.getPattern('g'))\n }\n\n private getPattern(flags: string): RegExp {\n return new RegExp(`(${this.BEFORE}(?.+?)${this.AFTER})`, flags)\n }\n\n public getToken(placeholder: string): string | null {\n const { groups = {} } = placeholder.match(this.getPattern('')) || {}\n\n return groups.placeholder ?? null\n }\n\n public fill(template: string, data?: Record): React.ReactNode[] | string {\n const placeholders = this.match(template)\n\n if (!placeholders) {\n return [template]\n }\n\n const res = placeholders.reduce((accumulator, placeholder) => {\n const placeholderToken = this.getToken(placeholder)\n\n if (!placeholderToken || !data || typeof data[placeholderToken] === 'undefined') {\n return accumulator\n }\n\n return accumulator.reduce((parts: React.ReactNode[], substr) => {\n if (typeof substr !== 'string') {\n parts.push(substr)\n\n return parts\n }\n\n const _parts: React.ReactNode[] = substr.split(placeholder)\n\n if (_parts.length > 1) {\n for (let i = _parts.length; i-- > 1;) {\n\n _parts.splice(i, 0, data[placeholderToken] ?? null)\n }\n }\n\n parts.push(..._parts)\n\n return parts\n }, [] as React.ReactNode[])\n }, [template] as React.ReactNode[]) as React.ReactNode[]\n\n if (_every(res, _isString)) {\n return res.join('')\n }\n\n return res.map((element, index) => (\n \n {element}\n \n ))\n }\n}\n\nexport default Template", "import { UpsaleIds } from '@qwerty.software/ui-order-form/src/store/constants'\n\nexport type Diction = string | false\n\nconst INITIAL_DICTIONARY: DictionaryContext = {\n title: 'Calculate the price',\n price: {\n caption: 'Total price:',\n bottomCaption: 'Current price:',\n amount: '[:currency][:price]',\n amountRightCurrency: '[:price][:currency]',\n\n summary: {\n complexAssignment: 'Complex Assignment',\n speakerNotes: 'Speaker Notes',\n writerCategory: {\n bestAvailable: 'Best available',\n proWriter: 'PRO writer',\n topWriter: 'TOP writer',\n preferredWriter: 'Preferred writer',\n },\n additionalFeature: {\n plagiarismReport: 'Plagiarism report',\n progressiveDelivery: 'Progressive delivery',\n summary: 'Summary',\n draft: 'Draft',\n abstractPage: 'Abstract',\n grammarlyReport: 'Grammarly Report',\n },\n softCopies: 'Soft Copies',\n software: 'Software',\n },\n },\n titles: {\n dashboard: {\n fieldsMain: 'Paper information',\n fieldsAdditional: 'Extra features',\n },\n inquiry: 'Get a Quote for Your Task',\n stepless: 'Write your order details here:',\n materials: {\n dragMessage: 'Upload files',\n },\n discount: {\n currencyDiscount: 'Bonus [:currency][:amount]',\n secondPageDiscount: '50% off every 2nd page',\n thirdPageDiscount: '50% off every 3rd page',\n },\n singleViewSteps: {\n details: 'Details',\n personalInformation: 'Personal information',\n },\n writerCategory: {\n bestAvailable: 'Regular',\n proWriter: 'Pro',\n topWriter: 'Top',\n preferredWriter: 'Preferred',\n }\n },\n subtitles: {\n inquiry: 'We will get back to you in 5 minutes or less',\n },\n labels: {\n extender: 'Switch to:',\n paperType: 'Type of paper',\n subject: 'Subject',\n topic: 'Topic',\n paperDetails: 'Paper details',\n paperRequirements: 'Paper requirements',\n materials: 'Materials',\n paperFormat: 'Paper format',\n academicLevel: 'Academic level',\n workType: 'Type of work',\n deadline: 'Deadline',\n quantity: 'Quantity',\n pagesWordsSwitcher: {\n pages: 'Pages',\n words: 'Words',\n },\n spacing: 'Spacing',\n slides: 'Number of slides',\n speakerNotes: 'Speaker notes',\n sources: 'Sources',\n softCopies: 'Soft copies',\n writerCategory: 'Choose your writer',\n preferredWriter: 'Writer from order ID[:description]',\n additionalFeatures: 'Additional features',\n software: 'Software',\n discount: 'Discount',\n\n auth: {\n email: 'Email [:required]',\n phone: 'Phone number [:required]',\n password: 'Password [:required]',\n\n tabs: {\n orderForm: {\n signin: 'I have an account',\n signup: 'I am new here',\n social: 'Social Account',\n },\n },\n },\n\n summary: {\n freeFeature: 'Free features',\n\n amendments: 'Amendments',\n bibliography: 'Bibliography',\n outline: 'Outline',\n titlePage: 'Title page',\n formatting: 'Formatting',\n chosenPackage: 'Chosen package',\n },\n },\n descriptions: {\n materials: {\n dragMessage: 'or drag your files here',\n },\n preferredWriter: '(for returning customers only)',\n },\n tooltips: {\n writerCategory: {\n bestAvailable: false,\n proWriter: false,\n topWriter: false,\n preferredWriter: false,\n },\n extender: 'Choose an Extended version if you have a lot of details for your paper, or switch to a Quick form for brief instructions',\n paperType: 'Please select the most appropriate type of paper needed. If the type of paper you need is not on the list, leave the default choice \"Essay\" and specify what you need in the \"Paper details\" field.',\n subject: 'Please select the most appropriate field of studies or the name of the class you have an assignment for. If the subject you need is not on the list, choose \"Other\" and specify what you need in the \"Paper details\" field.',\n topic: 'Please enter the specific title or topic for your paper, if you have one.',\n paperDetails: 'Please leave a detailed explanation of your requirements to make sure the writer is on the right track and decrease chances of revision in your order.',\n materials: 'You may upload useful materials to the writer now or after finishing this form.',\n paperFormat: 'Please specify the format of the paper if needed. Otherwise leave it as is.',\n academicLevel: 'Please select an appropriate academic level that corresponds to your level of writing.',\n workType: 'Please choose the service you are looking for. \"Writing from scratch\" means that you will get a custom written paper. \"Editing/proofreading\" means you will upload your own paper that the writer will revise. \"Problem solving\" suits assignments in Math or Economics, etc. Paraphrasing means re-writing the paper in other words with the same meaning and structure. \"Multiple choice questions\" means choosing one or several answers from offered options.',\n deadline: 'How soon do you want to receive your order? Please consider that it takes about 1 hour to complete 1 page of high quality text.',\n quantity: {\n pages: 'Please choose how many pages you need. 1 double spaced page is approximately 275 words, 1 single spaced page is approximately 550 words. Title and bibliography pages are included for free.',\n words: 'Please choose how many words you need. 275 words with double spacing or 550 words with single spacing is approximately 1 page. Title and bibliography are included for free.',\n problems: 'Please choose how many problems you want to solve.',\n },\n spacing: '1 double spaced page is approximately 275 words, 1 1.5 spaced page is approximately 400 words, 1 single spaced page is approximately 550 words.',\n slides: 'Impress your professors with a high-quality presentation. Choose how many slides it should have. Add speaker notes to present to the audience',\n speakerNotes: 'Additional notes written to accompany slides for the presenter to use during the presentation',\n disabledSpeakerNotes: 'Please choose the number of slides first, and then you will be able to select speaker notes',\n sources: 'The number of sources to be used in the paper. Bibliography page is included for free. Receive printable PDF/DOC sources cited in the paper as \"Soft copies\" for $4 per source.',\n softCopies: 'Digital versions of sources used by the writer that you can receive in electronic format',\n disabledSoftCopies: 'Please choose the number of sources first, and then you will be able to select softcopies',\n additionalFeatures: {\n appliedFetatureTooltipText: 'This feature is already applied to your order',\n disabled: {\n aiCheckReport: {\n default: 'AI writing detection tool is unavailable for less than 400 words or more than 15000',\n },\n resume101Org: {\n default: 'Follow-up/\"Thank You\" Letter is a part of the chosen Package',\n },\n multiplyChoiseQuestions: {\n default: 'This feature is not available for the Multiple choice questions work type',\n },\n },\n },\n preferredWriter: {\n noData: 'Please cancel the current order ID first to be able to enter a new one',\n },\n software: 'Specialized software work included (additional fees apply).',\n discount: 'Placed orders with us before? Check with support agent for a loyalty discount.',\n disabledSoftware: 'If you want to choose some software type you should enable field via checkbox',\n reset: 'For your convenience and security, we keep order form inputs if you navigate to another page accidentally, and automatically clear everything in 24 hours. This way you are protected from having to enter all the information again if anything goes wrong, and your privacy is still 100% secure.',\n },\n placeholders: {\n topic: 'Writer\u2019s choice',\n paperDetails: 'If you have any specific requirements, please add them here',\n preferredWriter: 'Order # ...',\n discount: 'Enter discount code',\n },\n hint: {\n materials: 'Maximum file size is 25 MB',\n deadline: 'Ready by [:time] [:date]',\n quantity: 'Approximately [:amount] [:quantity]',\n paperDetails: 'Please tell us a little more about your task [:minDetailsLenght] - [:maxDetailsLenght] characters)',\n paperRequirements: 'Max file size 25 MB (doc, docx, pdf, rtf, excel)',\n preferredWriter: {\n main: 'Copypaste order ID from Dashboard',\n login: {\n unauthorized: 'Please[:login]first',\n authorized: 'Please enter order ID or choose another writer category',\n noWriters: 'There are no orders with writers on your account.',\n noWritersFromSubmit: 'There are no orders with writers on your account. Please choose another writer category',\n unauthorizedFromSubmit: 'Please[:login]first and enter order ID or choose another writer category'\n },\n policy: 'You accept [:policy]',\n bestAvailable: 'Success!',\n pro: 'your preferred writer has a PRO category',\n top: 'your preferred writer has a TOP category',\n },\n\n auth: {\n email: 'We promise not to spam you',\n phone: 'We wont share phone number with third parties',\n //by creating account with us you agree to our Terms and Conditions, Money Back Guarantee, Privacy Policy and to be contacted regarding your orders\n socialAgreements: 'by creating account with us you agree to our [:terms-and-conditions], [:money-back-guarantee], [:privacy-policy] and to be contacted regarding your orders'\n },\n\n summary: {\n complexAssignment: 'Additional fee charged for completing an order that requires special knowledge and more advanced research skills',\n preferredWriter: 'Please note: your preferred writer has a [:title] category, you will pay [:percent]% more',\n software: 'Specialized software work included (additional fees apply).',\n },\n },\n marks: {\n additionalFeatures: {\n popular: 'Popular',\n },\n summary: {\n free: 'free',\n }\n },\n cashback: {\n oldPriceCaption: 'Standart price',\n oldPrice: '[:currency][:price]',\n priceCaption: '[:cashback]% CASHBACK',\n price: '[:currency][:price]',\n },\n buttons: {\n stepper: {\n step1: 'Paper information',\n step2: 'Price calculation',\n step3: 'Extra features',\n },\n calculator: {\n submit: 'Continue',\n },\n inquiry: {\n submit: 'Get help now',\n },\n preferredWriter: {\n cancel: 'Cancel',\n submit: 'Apply',\n },\n orderForm: {\n reset: 'Clear the order form',\n submit: 'Submit [:price] [:loader]',\n step1: {\n previous: 'Previous',\n next: 'Next',\n },\n step2: {\n previous: 'Previous',\n next: 'Next',\n },\n step3: {\n previous: 'Previous',\n next: 'Next',\n },\n },\n materials: \"Upload files\",\n dashboard: {\n favoriteWriterAddText: false,\n favoriteWriterRemoveText: false\n }\n },\n links: {\n login: 'login',\n auth: {\n forgotPassword: 'Forgot password ?',\n changeAccount: 'Change account',\n },\n preferredWriter: {\n login: 'login',\n policy: 'Preferred writer policy',\n },\n termsAndConditions: 'Terms and Conditions',\n moneyBackGuarantee: 'Money Back Guarantee',\n privacyPolicy: 'Privacy Policy',\n\n discounts: 'Find a valid discound code here',\n\n contacts: {\n whatsup: {\n formatted: false,\n link: false,\n },\n }\n },\n notifications: {\n discount: {\n cancel: 'Your discount is canceled. You have changed the conditions of use.',\n },\n },\n resetModal: 'Are you sure you want to clear the order form?',\n auth: {\n loggedTextFirstLine: 'You are logged in as [:email]',\n loggedTextSecondLine: 'Not you? [:link]',\n },\n moment: {\n deadline: {\n time: 'hh:mmA',\n date: 'MMMM DD, YYYY',\n },\n },\n}\n\nexport type PlaceholderMap = {\n 'titles.discount.currencyDiscount': Record<'currency' | 'amount', React.ReactNode>\n 'labels.preferredWriter': Record<'description', React.ReactNode>\n 'labels.auth.email': Record<'required', React.ReactNode>\n 'labels.auth.phone': Record<'required', React.ReactNode>\n 'labels.auth.password': Record<'required', React.ReactNode>\n 'hint.deadline': Record<'time' | 'date', React.ReactNode>\n 'hint.quantity': Record<'amount' | 'quantity', React.ReactNode>\n 'hint.paperDetails': Record<'minDetailsLenght' | 'maxDetailsLenght', React.ReactNode>\n 'hint.preferredWriter.login.unauthorized': Record<'login', React.ReactNode>\n 'hint.preferredWriter.login.unauthorizedFromSubmit': Record<'login', React.ReactNode>\n 'hint.preferredWriter.policy': Record<'policy', React.ReactNode>\n 'hint.auth.socialAgreements': Record<'terms-and-conditions' | 'money-back-guarantee' | 'privacy-policy', React.ReactNode>\n 'hint.summary.preferredWriter': Record<'title' | 'percent', React.ReactNode>\n 'cashback.priceCaption': Record<'cashback', React.ReactNode>\n 'cashback.oldPrice': Record<'price' | 'currency', React.ReactNode>\n 'cashback.price': Record<'price' | 'currency', React.ReactNode>\n 'price.amount': Record<'price' | 'currency', React.ReactNode>\n 'price.amountRightCurrency': Record<'price' | 'currency', React.ReactNode>\n 'buttons.orderForm.submit': Record<'price' | 'loader', React.ReactNode>\n 'auth.loggedTextFirstLine': Record<'email', React.ReactNode>\n 'auth.loggedTextSecondLine': Record<'link', React.ReactNode>\n}\n\nexport default INITIAL_DICTIONARY\n\nexport interface DictionaryContext {\n title: Diction\n price: {\n caption: Diction\n bottomCaption: Diction\n amount: Diction\n amountRightCurrency: Diction\n\n summary: {\n complexAssignment: Diction\n speakerNotes: Diction\n writerCategory: {\n bestAvailable: Diction\n proWriter: Diction\n topWriter: Diction\n preferredWriter: Diction\n }\n additionalFeature: {\n plagiarismReport: Diction\n progressiveDelivery: Diction\n summary: Diction\n draft: Diction\n abstractPage: Diction\n grammarlyReport: Diction\n }\n softCopies: Diction\n software: Diction\n }\n },\n cashback: {\n oldPriceCaption: Diction\n priceCaption: Diction\n oldPrice: Diction\n price: Diction\n }\n titles: {\n dashboard: {\n fieldsMain: Diction\n fieldsAdditional: Diction\n }\n inquiry: Diction\n stepless: Diction\n materials: {\n dragMessage: Diction\n }\n discount: {\n currencyDiscount: Diction\n secondPageDiscount: Diction\n thirdPageDiscount: Diction\n }\n singleViewSteps: {\n details: Diction\n personalInformation: Diction\n }\n writerCategory: {\n bestAvailable: Diction\n proWriter: Diction\n topWriter: Diction\n preferredWriter: Diction\n }\n }\n subtitles: {\n inquiry: Diction\n }\n labels: {\n extender: Diction\n paperType: Diction\n subject: Diction\n topic: Diction\n paperDetails: Diction\n paperRequirements: Diction\n materials: Diction\n paperFormat: Diction\n academicLevel: Diction\n workType: Diction\n deadline: Diction\n quantity: Diction\n pagesWordsSwitcher: {\n pages: Diction\n words: Diction\n }\n spacing: Diction\n slides: Diction\n speakerNotes: Diction\n sources: Diction\n softCopies: Diction\n writerCategory: Diction\n preferredWriter: Diction\n additionalFeatures: Diction\n software: Diction\n discount: Diction\n\n auth: {\n email: Diction\n phone: Diction\n password: Diction\n\n tabs: {\n orderForm: {\n signin: Diction\n signup: Diction\n social: Diction\n }\n }\n }\n\n summary: {\n freeFeature: Diction\n\n amendments: Diction\n bibliography: Diction\n outline: Diction\n titlePage: Diction\n formatting: Diction\n chosenPackage: Diction\n }\n }\n descriptions: {\n materials: {\n dragMessage: Diction\n }\n preferredWriter: Diction\n }\n tooltips: {\n extender: Diction\n paperType: Diction\n subject: Diction\n topic: Diction\n paperDetails: Diction\n materials: Diction\n paperFormat: Diction\n academicLevel: Diction\n workType: Diction\n writerCategory: {\n bestAvailable: Diction\n proWriter: Diction\n topWriter: Diction\n preferredWriter: Diction\n }\n deadline: Diction\n quantity: {\n pages: Diction\n words: Diction\n problems: Diction\n }\n spacing: Diction\n slides: Diction\n speakerNotes: Diction\n disabledSpeakerNotes: Diction\n sources: Diction\n softCopies: Diction\n disabledSoftCopies: Diction\n additionalFeatures: {\n appliedFetatureTooltipText: Diction\n disabled: {\n aiCheckReport: {\n [key in UpsaleIds]?: Diction\n } & { default: Diction }\n resume101Org: {\n [key in UpsaleIds]?: Diction\n } & { default: Diction }\n multiplyChoiseQuestions: {\n [key in UpsaleIds]?: Diction\n } & { default: Diction }\n }\n }\n preferredWriter: {\n noData: Diction\n }\n software: Diction\n discount: Diction\n disabledSoftware: Diction\n reset: Diction\n }\n placeholders: {\n topic: Diction\n paperDetails: Diction\n preferredWriter: Diction\n discount: Diction\n }\n hint: {\n materials: Diction\n deadline: Diction\n quantity: Diction\n paperDetails: Diction\n paperRequirements: Diction\n preferredWriter: {\n main: Diction\n login: {\n unauthorized: Diction\n authorized: Diction\n noWriters: Diction\n noWritersFromSubmit: Diction\n unauthorizedFromSubmit: Diction\n }\n policy: Diction\n bestAvailable: Diction\n pro: Diction\n top: Diction\n }\n\n auth: {\n email: Diction\n phone: Diction\n socialAgreements: Diction\n }\n\n summary: {\n complexAssignment: Diction\n preferredWriter: Diction\n software: Diction\n }\n }\n marks: {\n additionalFeatures: {\n popular: Diction\n }\n summary: {\n free: Diction\n }\n }\n buttons: {\n stepper: {\n step1: Diction\n step2: Diction\n step3: Diction\n }\n calculator: {\n submit: Diction\n }\n inquiry: {\n submit: Diction\n }\n preferredWriter: {\n cancel: Diction\n submit: Diction\n }\n orderForm: {\n reset: Diction\n submit: Diction\n step1: {\n previous: Diction\n next: Diction\n }\n step2: {\n previous: Diction\n next: Diction\n }\n step3: {\n previous: Diction\n next: Diction\n }\n }\n materials: Diction\n dashboard: {\n favoriteWriterAddText: Diction\n favoriteWriterRemoveText: Diction\n }\n }\n links: {\n login: Diction\n auth: {\n forgotPassword: Diction\n changeAccount: Diction\n }\n preferredWriter: {\n login: Diction\n policy: Diction\n }\n termsAndConditions: Diction\n moneyBackGuarantee: Diction\n privacyPolicy: Diction\n\n discounts: Diction\n\n contacts: {\n whatsup: {\n formatted: Diction\n link: Diction\n }\n }\n }\n notifications: {\n discount: {\n cancel: Diction\n }\n }\n resetModal: Diction\n auth: {\n loggedTextFirstLine: Diction\n loggedTextSecondLine: Diction\n }\n moment: {\n deadline: {\n time: Diction\n date: Diction\n }\n },\n}\n", "import * as React from 'react'\n\nimport StoreManager from '@qwerty.software/store-manager'\nimport StoreManagerInitializer from '@qwerty.software/store-manager/initializer'\n\nimport singleton from 'helpers/singleton'\n\nimport checkSearchParam, { normalizeSearchParam } from './side-effects/search-param'\n\nimport Discount from './selectors'\nimport { applyDiscount } from './definitions'\n\nconst NamespaceContext = React.createContext(null)\n\nconst storeInitializer = StoreManagerInitializer.getInstance()\n\nexport interface Options {\n /**\n * string or string array for redeclare search param\n * true for enable with default search param name\n */\n searchParam?: string | string[] | true\n useCheckRoute?: boolean\n disableAutoApply?: boolean\n disableApplyViaSearch?: boolean\n}\n\nexport const useNamespace = () => {\n const context = React.useContext(NamespaceContext)\n\n if (context === null) {\n throw new Error('\"useNamespace\" of \"discount\" must be used within a \"NamespaceProvider\"')\n }\n\n return context\n}\n\nconst onceSet = singleton('916c7bce-669b-4a7a-92d0-a4508c55775b', () => new Set())\n\ninterface WithDiscountProps {\n Component: React.ComponentType,\n namespace: string\n options?: Options\n}\n\nexport const withDiscount = ({\n Component,\n namespace,\n options,\n}: WithDiscountProps) => {\n const searchParam = normalizeSearchParam(options?.searchParam)\n\n const decorated = React.forwardRef((props, ref) => (\n \n \n \n ))\n\n if (onceSet.has(namespace)) {\n return decorated\n }\n onceSet.add(namespace)\n\n if (!options?.disableAutoApply) {\n storeInitializer.addEventListener('init', () => {\n const { store } = StoreManager.getInstance()\n\n const { sended } = Discount(namespace).DISCOUNT(store.getState())\n\n if (sended) {\n store.dispatch(applyDiscount(namespace, { disableNotify: true, useCheckRoute: options?.useCheckRoute }))\n }\n }, {\n once: true,\n })\n }\n\n if (!searchParam) {\n return decorated\n }\n\n storeInitializer.addEventListener('init', () => {\n const { store } = StoreManager.getInstance()\n\n store.dispatch(checkSearchParam({ namespace, searchParam }))\n }, {\n once: true,\n })\n\n return decorated\n}", "/**\n * An observer that can be used to monitor the initialization state of the storage manager\n */\ninterface IInitializer extends EventTarget {\n isInitialized(): boolean\n}\n\ninterface IInitEvent extends Event {\n /**\n * Flag which signal about synthetic call for callbacks or real clear init event\n */\n isFresh: boolean\n}\n\nabstract class Initializer extends EventTarget implements IInitializer {\n static FreshInitEvent = class extends Event implements IInitEvent {\n public isFresh: boolean = true\n\n constructor(eventInitDict?: EventInit) {\n super('init', eventInitDict)\n }\n }\n\n static InitEvent = class extends Event implements IInitEvent {\n public isFresh: boolean = false\n\n constructor(eventInitDict?: EventInit) {\n super('init', eventInitDict)\n }\n }\n\n private _isInitialized: boolean = false\n\n public isInitialized = (): boolean => {\n return this._isInitialized\n }\n\n /**\n * Overriding addEventListener for \"init\" event:\n * dispatching all callbacks immediately if assigned new listener after it initialized\n */\n public addEventListener(type: string, callback: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void {\n if (this._isInitialized && type === 'init') {\n const cb = typeof callback === 'function' ? callback : callback.handleEvent\n\n cb(new Initializer.InitEvent())\n }\n\n super.addEventListener(type, callback, options)\n }\n\n protected initialized = () => {\n if (this._isInitialized) {\n return\n }\n\n this._isInitialized = true\n\n this.dispatchEvent(new Initializer.FreshInitEvent())\n\n console.log('Store initialized')\n }\n}\n\nexport default Initializer", "import InitializerObserver from './absrtact-initializer'\n\nimport { ConfigsMapType } from 'global-entities/configs/utils/init'\nimport { BootstrapData } from 'global-entities/bootstrap-data/utils/init'\n\nimport type { StoreManagerClass } from '.'\n\nclass Initializer extends InitializerObserver {\n private constructor() { super() }\n\n static getInstance() {\n window.__storeManagerInitializer = window.__storeManagerInitializer || new Initializer()\n\n return window.__storeManagerInitializer\n }\n\n static async init(StoreManager: StoreManagerClass, configs: ConfigsMapType, bootstrapData: BootstrapData.ICore) {\n const instance = Initializer.getInstance()\n\n return new Promise((resolve) => {\n instance.addEventListener('init', handleInited)\n\n instance.init(StoreManager, configs, bootstrapData)\n\n function handleInited(e) {\n instance.removeEventListener('init', handleInited)\n\n resolve(true)\n }\n })\n }\n\n private init(StoreManager: StoreManagerClass, configs: ConfigsMapType, bootstrapData: BootstrapData.ICore) {\n if (this.isInitialized()) {\n console.warn('Store already initialized')\n\n return\n }\n\n require('global-entities/configs/utils/init')\n .initConfigs(configs)\n\n require('global-entities/bootstrap-data/utils/init')\n .initBootstrapData(bootstrapData)\n\n StoreManager.init(this.initialized)\n }\n}\n\nexport const storeManagerInitializer = Initializer.getInstance()\n\nexport { KEY as CONFIGS_KEY } from 'global-entities/configs/utils/init'\nexport { KEY as BOOTSTRAP_DATA_KEY } from 'global-entities/bootstrap-data/utils/init'\n\nexport default Initializer\n\ndeclare global {\n interface Window {\n __storeManagerInitializer?: Initializer\n }\n}", "import { createAction } from '@reduxjs/toolkit'\n\nimport { slice as discountSlice } from 'global-entities/discount/slice'\n\nimport { applyDiscount } from 'global-entities/discount/definitions'\n\nimport { discountListener } from '.'\n\nimport { CHECK_SEARCH_PARAM } from '../definitions'\n\nconst DEFAULT_SEARCH_PARAM = 'discount'\n\nexport const checkSearchParamAction = createAction<{\n namespace: string,\n searchParam: string[]\n}>(CHECK_SEARCH_PARAM)\n\ndiscountListener.startListening({\n actionCreator: checkSearchParamAction,\n\n effect(action, api) {\n const { namespace, searchParam } = action.payload\n\n const url = new URL(window.location.href)\n\n // search between all searchParam names\n const searchParamName = searchParam\n .find(param => Boolean(url.searchParams.get(param)))\n\n if (!searchParamName) {\n return\n }\n\n const code = url.searchParams.get(searchParamName) as string\n\n setTimeout((url, key) => {\n url.searchParams.delete(key)\n\n window.history.replaceState({}, document.title, url.toString())\n }, 0, url, searchParamName)\n\n api.dispatch(discountSlice.actions.setCode({ namespace, code }))\n api.dispatch(applyDiscount(namespace))\n },\n})\n\nexport function normalizeSearchParam(searchParam: string | string[] | boolean = true): string[] | null {\n switch (searchParam) {\n case false:\n return null\n\n case true:\n searchParam = DEFAULT_SEARCH_PARAM\n break\n\n default: break\n }\n\n return !Array.isArray(searchParam)\n ? [searchParam]\n : searchParam\n}\n\nexport default checkSearchParamAction", "import * as React from 'react'\n\nimport './side-effects/notifications'\n\nconst NamespaceContext = React.createContext(null)\n\nexport const useNamespace = () => {\n const context = React.useContext(NamespaceContext)\n\n if (context === null) {\n throw new Error('\"useNamespace\" of \"files-uploader\" must be used within a \"NamespaceProvider\"')\n }\n\n return context\n}\n\nexport const withFileUploader = (\n namespace: string,\n Component: React.ComponentType,\n) => React.forwardRef((props, ref) => (\n \n \n \n))", "import type { ValidationError } from '../validators/_error-interface'\n\nimport { slice as filesUploaderSlice } from 'global-entities/files-uploader/slice'\n\nimport { createFileSelector } from 'global-entities/files-uploader/selectors'\n\nimport { filesUploaderListener } from '.'\n\n/**\n * Check validation errors on adding file and notify user about them\n */\nfilesUploaderListener.startListening({\n actionCreator: filesUploaderSlice.actions.addFile,\n effect: (action, api) => {\n\n for (const file of [].concat(action.payload.files)) {\n const FILE = createFileSelector(action.payload.namespace, file.hash)\n const { validation } = FILE(api.getState())\n\n Object.values(validation).forEach((error: null | ValidationError) => {\n if (!error?.notify) {\n return\n }\n\n error.notify()\n })\n }\n }\n})", "import { createListenerMiddleware } from '@reduxjs/toolkit'\n\nimport singleton from 'helpers/singleton'\n\nconst SINGLETON_ID = '6a903a95-d1a1-46fc-9222-9b5adcbb4ae9'\n\nexport const filesUploaderListener = singleton(SINGLETON_ID, () => createListenerMiddleware())", "import * as React from 'react'\nimport StoreManager from '@qwerty.software/store-manager'\nimport { Slice } from '@reduxjs/toolkit'\nimport { PersistConfig } from 'redux-persist'\n\nconst storeManager = StoreManager.getInstance()\n\nconst useSlices = (\n slices: (Slice | [slice: Slice, persistConfig?: PersistConfig])[],\n deps: React.DependencyList = []\n) => {\n // useState invoked in component constuction moment, so it berofe any useEffects of this component\n const [, setSlices] = React.useState(() => {\n storeManager.addSlices(slices)\n\n return slices\n })\n\n React.useEffect(() => {\n setSlices(prevSlices => {\n // storeManager.removeSlices(prevSlices.map((slice) => (Array.isArray(slice) ? slice[0] : slice)))\n storeManager.addSlices(slices)\n\n return slices\n })\n }, deps)\n}\n\nexport default useSlices\n", "import * as React from 'react'\nimport { SnackbarProvider } from 'notistack'\nimport './styles.scss'\n\nconst ConfigureNotify = () => (\n \n)\n\nexport default ConfigureNotify\n", "import * as React from 'react'\nimport { Provider } from 'react-redux'\nimport { PersistGate } from 'redux-persist/integration/react'\n\nimport { REHYDRATE } from 'redux-persist/lib/constants'\n\nimport setDesignTypeToStorage from 'utils/set-design-type-to-storage'\n\nimport useStoreManager from 'hooks/use-store-manager'\n\ninterface StoreGateProps {\n children: React.ReactNode\n}\n\nconst StoreGate = React.memo(({ children }) => {\n const storeManager = useStoreManager()\n\n React.useEffect((): void => {\n if (storeManager) {\n // @ts-ignore\n storeManager.persistor.dispatch({ type: REHYDRATE })\n\n setDesignTypeToStorage()\n }\n }, [storeManager])\n\n if (!storeManager) {\n return null\n }\n\n const { store, persistor } = storeManager\n\n return (\n \n \n {children}\n \n \n )\n})\n\nexport default StoreGate\n", "import storage from 'utils/storage'\n\nimport getFromConfigs from 'helpers/configs/get-from-configs'\n\nimport { IS_NEW_SPEEDYPAPER_DESIGN, PROJECT_ID } from 'constants/configs'\nimport { DESIGN_TYPE } from 'constants/storage'\nimport { SPEEDYPAPER_ID } from 'constants/project-ids'\n\nexport default () => {\n const isSpeedyPaperId = (getFromConfigs(PROJECT_ID) === SPEEDYPAPER_ID)\n\n if (!storage.get(DESIGN_TYPE) && isSpeedyPaperId) {\n if (getFromConfigs(IS_NEW_SPEEDYPAPER_DESIGN)) {\n storage.set(DESIGN_TYPE, 'new')\n\n return\n }\n\n storage.set(DESIGN_TYPE, 'old')\n }\n}\n", "import * as React from 'react'\n\nimport StoreManagerInitializer from '@qwerty.software/store-manager/initializer'\nimport StoreManager from '@qwerty.software/store-manager'\n\nconst storeManagerInitializer = StoreManagerInitializer.getInstance()\n\nconst useStoreManager = () => {\n const [storeManager, setStoreManager] = React.useState(() => {\n if (storeManagerInitializer.isInitialized()) {\n return StoreManager.getInstance()\n }\n\n return null\n })\n\n const handleInit = React.useCallback(() => {\n setStoreManager(StoreManager.getInstance())\n }, [])\n\n React.useEffect(() => {\n if (!storeManager) {\n storeManagerInitializer.addEventListener('init', handleInit)\n\n return () => {\n storeManagerInitializer.removeEventListener('init', handleInit)\n }\n }\n }, [storeManager])\n\n return storeManager\n}\n\nexport default useStoreManager", "import { createSlice, PayloadAction } from '@reduxjs/toolkit'\nimport { persistReducer } from 'redux-persist'\nimport localforage from 'localforage'\n\nimport _omit from 'lodash/omit'\n\nimport {\n NAME,\n INITIAL_STATE,\n\n AuthFieldNames,\n} from './constants'\nimport { UserState, UserValues } from './types'\n\nconst BLACKLIST = [\n AuthFieldNames.PASSWORD,\n]\n\ntype ValidatedFields = AuthFieldNames.CLIENT_AGREEMENTS\n | AuthFieldNames.EMAIL\n | AuthFieldNames.PASSWORD\n | AuthFieldNames.PHONE\n\nconst slice = createSlice({\n name: `slice://${NAME}/`,\n initialState: INITIAL_STATE,\n reducers: {\n change(state, action: PayloadAction<{ key: K, value: UserValues[K] }>) {\n state[action.payload.key] = action.payload.value\n },\n validationOn(state, action: PayloadAction) {\n let { payload } = action\n\n if (payload && typeof payload === 'string') {\n payload = [payload]\n }\n\n if (!Array.isArray(payload)) {\n payload = Object.values(_omit(AuthFieldNames, ['AUTH_TYPE'])) as K[]\n }\n\n payload.forEach(key => (\n state[key] = { ...state[key], validationEnabled: true }\n ))\n },\n validationOff(state, action: PayloadAction) {\n let { payload } = action\n\n if (payload && typeof payload === 'string') {\n payload = [payload]\n }\n\n if (!Array.isArray(payload)) {\n payload = Object.values(_omit(AuthFieldNames, ['AUTH_TYPE'])) as K[]\n }\n\n payload.forEach(key => (\n state[key] = { ...state[key], validationEnabled: false }\n ))\n },\n reset(state) {\n Object.keys(state).forEach(key => {\n state[key] = INITIAL_STATE[key]\n })\n }\n },\n})\n\nslice.reducer = persistReducer({\n keyPrefix: '',\n key: slice.name,\n // TODO: Disable serialization.\n // serialize: false,\n storage: localforage.createInstance({\n name: '[MSH] Storage',\n storeName: NAME,\n driver: [\n // localforage.INDEXEDDB,\n localforage.LOCALSTORAGE,\n ]\n }),\n blacklist: BLACKLIST,\n}, slice.reducer)\n\n// @ts-ignore\nexport const HYDRATED = (state: State) => state[slice.name]?._persist?.rehydrated\n\nexport const userSlice = slice\n\ninterface State {\n //@ts-ignore\n [userSlice.name]: UserState\n}\n\nexport const value = (name: Name) => (state: State): UserValues[Name] => state[userSlice.name][name]\nexport const USER = (state: State): UserValues => state[userSlice.name]\n", "import getFromConfigs from 'helpers/configs/get-from-configs'\n\nimport { ORDER_DATA_DEFAULTS, PROJECT_DOMAIN } from 'constants/configs'\nimport { SIGNUP } from 'constants/auth'\n\nimport { KEY } from 'global-entities/geo-tag/constants'\nimport { UserValues, UserState } from './types'\n\nexport const DEFAULT_COUNTRY_CODE = 'US'\n\nexport enum Type {\n TEXT = 'text',\n PASSWORD = 'password',\n}\n\nexport enum AuthFieldNames {\n AUTH_TYPE = 'authType',\n EMAIL = 'email',\n PHONE = 'phone',\n PASSWORD = 'password',\n CLIENT_AGREEMENTS = 'clientAgreements',\n}\n\nconst domain = getFromConfigs(PROJECT_DOMAIN)\nexport const NAME = `auth.form/${domain}` as const\n\nconst orderDataDefaults = getFromConfigs(ORDER_DATA_DEFAULTS)\n\nconst getCountryCode = (fallbackCountryCode: string = DEFAULT_COUNTRY_CODE) => {\n try {\n return JSON.parse(sessionStorage.getItem(KEY))?.countryCode || fallbackCountryCode\n } catch (error) {\n return fallbackCountryCode\n }\n}\n\nexport const INITIAL_VALUES: UserValues = {\n [AuthFieldNames.AUTH_TYPE]: (orderDataDefaults && orderDataDefaults.authType) || SIGNUP.authType,\n [AuthFieldNames.EMAIL]: {\n value: '',\n validationEnabled: false,\n },\n [AuthFieldNames.PHONE]: {\n value: {\n number: '',\n countryCode: getCountryCode(),\n mask: '',\n },\n validationEnabled: false,\n },\n [AuthFieldNames.PASSWORD]: {\n type: Type.PASSWORD,\n value: '',\n validationEnabled: false,\n },\n [AuthFieldNames.CLIENT_AGREEMENTS]: {\n value: [],\n validationEnabled: false,\n },\n}\n\nexport const INITIAL_STATE: UserState = {\n ...INITIAL_VALUES,\n}\n", "import { useSelector } from 'react-redux'\n\nimport useAction from 'hooks/useAction'\nimport useDiscount from 'global-entities/discount/hooks/use-discount'\n\nimport { CURRENCY } from '@qwerty.software/currency-switcher/src/store/slice'\nimport { ORDER } from '../order'\n\nimport { priceDataSlice } from '.'\nimport { useCalculate } from './use-calculate'\n\nimport type { RawOrder } from '@qwerty.software/ui-order-form/src/templates/dashboard/types'\n\ninterface IUsePriceDataOptions {\n calculator: any\n showAltPrices?: boolean\n\n rawOrder?: RawOrder // for dashboard\n}\n\n// TODO: Replace to RTK side-effects\nconst usePriceData = (options: IUsePriceDataOptions) => {\n const order = useSelector(ORDER)\n const currency = useSelector(CURRENCY)\n const discount = useDiscount()\n\n const setPriceData = useAction(priceDataSlice.actions.change)\n\n useCalculate({\n calculator: options.calculator,\n\n showAltPrices: options.showAltPrices,\n\n rawOrder: options.rawOrder,\n orderValues: order,\n discount,\n currency,\n\n setPriceData,\n })\n}\n\nexport default usePriceData\n", "import * as React from 'react'\nimport { useDispatch } from 'react-redux'\n\nconst useAction = (action: Function, deps: React.DependencyList = []) => {\n const dispatch = useDispatch()\n\n return React.useCallback((...rest: any[]) => dispatch(action(...rest)), deps)\n}\n\nexport default useAction\n", "import * as React from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\n\nimport { slice as discountSlice } from 'global-entities/discount/slice'\n\nimport { useNamespace } from '../with-discount'\nimport { usePriceActivation } from './use-price-activation'\n\nimport Discount from '../selectors'\n\nimport { applyDiscount } from 'global-entities/discount/definitions'\n\ninterface Options {\n useCheckRoute?: boolean\n}\n\nfunction useDiscount(namespace: string = '', { useCheckRoute = false }: Options = {}) {\n const dispatch = useDispatch()\n const _namespace = useNamespace()\n\n if (!namespace) {\n namespace = _namespace\n }\n\n const api = React.useMemo(() => Discount(namespace), [namespace])\n\n let discount = useSelector(api.DISCOUNT)\n const _asyncField = React.useMemo(() => api.adapters.asyncField(discount), [discount])\n\n React.useEffect(() => {\n if (discount === api.NOOP_DISCOUNT) {\n dispatch(discountSlice.actions.setCode({ namespace, code: '' }))\n }\n }, [discount, api])\n\n const handleCodeChange = React.useCallback>(e => {\n const code = e.target.value\n\n dispatch(discountSlice.actions.setCode({ namespace, code }))\n }, [namespace])\n\n const send = React.useCallback(() => {\n dispatch(applyDiscount(namespace, { useCheckRoute }))\n }, [namespace])\n\n const cancel = React.useCallback(() => {\n dispatch(discountSlice.actions.cancelDiscount({ namespace }))\n }, [namespace])\n\n const reset = React.useCallback(() => {\n dispatch(discountSlice.actions.resetDiscount({ namespace }))\n }, [namespace])\n\n type Result = typeof discount & {\n handleCodeChange: typeof handleCodeChange,\n\n send: typeof send,\n cancel: typeof cancel,\n reset: typeof reset,\n\n api: typeof api,\n namespace: typeof namespace,\n\n // temporary\n _asyncField: typeof _asyncField,\n }\n\n const discountApi = React.useMemo(() => ({\n ...discount !== null ? discount : api.NOOP_DISCOUNT,\n handleCodeChange,\n\n send,\n cancel,\n reset,\n\n api,\n namespace,\n\n _asyncField,\n }), [\n namespace,\n discount,\n ])\n\n usePriceActivation({ discountApi })\n\n return discountApi\n}\n\nexport default useDiscount", "import * as React from 'react'\n\nimport { useDispatch, useSelector } from 'react-redux'\nimport { PRICE_DATA_USD } from '@qwerty.software/ui-order-form/src/store/slices/price-data'\n\nimport { slice as discountSlice } from 'global-entities/discount/slice'\nimport { PreloadState } from 'global-entities/discount/definitions'\nimport notify from 'utils/notify'\nimport { CURRENCY } from '@qwerty.software/currency-switcher/src/store/slice'\nimport { replacePriceViaCurrency } from '@qwerty.software/currency-switcher/src/utils/replace-price-via-currency'\n\nexport const usePriceActivation = ({ discountApi }) => {\n const dispatch = useDispatch()\n const { priceFullWithoutDiscount } = useSelector(PRICE_DATA_USD)\n const currency = useSelector(CURRENCY)\n\n const updateDiscount = (discount) => dispatch(discountSlice.actions.updateDiscount({ namespace: discountApi.namespace, discount }))\n const { data } = discountApi._asyncField\n\n React.useEffect(() => {\n if (data?.discount?.type?.price_activation && typeof priceFullWithoutDiscount === 'number') {\n if (priceFullWithoutDiscount < data.discount.type.price_activation) {\n const modifiedText = replacePriceViaCurrency({ currency, textWithPrice: `Sorry, the code is valid for order over $${data.discount.type.price_activation}. Add pages or additional services on $${(data.discount.type.price_activation - priceFullWithoutDiscount).toFixed(2)} to activate the code` })\n\n updateDiscount({\n preload: {\n state: PreloadState.REJECTED,\n error: modifiedText,\n },\n applied: false\n })\n\n discountApi.applied && notify.warning('Your discount is canceled. You have changed the conditions of use.')\n }\n\n if (priceFullWithoutDiscount >= data.discount.type.price_activation && !discountApi.applied) {\n discountApi.send()\n }\n }\n }, [data, priceFullWithoutDiscount, discountApi.applied, currency])\n}", "import { useCallback, useEffect, useMemo } from 'react'\n\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\n\nimport { ContextPDAdapter } from './ContextPDAdapter'\nimport { extractFreeFeaturesFromRawOrder } from './extract-free-features-from-raw-order'\n\nimport { DEFAULT_CURRENCY, ICurrency } from '@qwerty.software/currency-switcher/src/store/constants'\n\nimport type { OrderValues } from '../order/types'\nimport type { IPriceData } from './types'\nimport type { RawOrder } from '@qwerty.software/ui-order-form/src/templates/dashboard/types'\nimport type { DiscountMeta } from 'global-entities/discount/definitions'\nimport type { Values } from \"global-entities/price-data/hooks/useCalculator\"\n\nexport interface ISetterArgs {\n priceData: IPriceData\n adaptedOrderValues: Values\n priceDataBase: IPriceData\n}\n\ninterface IUseCalculatePriceOptions {\n calculator: any\n\n showAltPrices: boolean\n\n rawOrder: RawOrder\n orderValues: OrderValues\n discount: Partial\n currency: ICurrency\n\n setPriceData: ({ priceData, adaptedOrderValues, priceDataBase }: ISetterArgs) => void\n\n overrideValues?: Partial\n}\n\nexport const useCalculate = ({\n calculator,\n\n showAltPrices,\n\n rawOrder,\n orderValues,\n discount,\n currency,\n\n setPriceData,\n\n overrideValues\n}: IUseCalculatePriceOptions) => {\n const { priceCalculatorAdapted = undefined, prices_alt } = getBootstrapData()\n\n const withFreeFeaturesValues = useMemo(() => extractFreeFeaturesFromRawOrder({\n rawOrder,\n orderValues: {...orderValues, ...(overrideValues || {})}\n }), [\n orderValues,\n overrideValues?.academicLevel,\n JSON.stringify(overrideValues?.additionalFeatures),\n overrideValues?.deadline,\n overrideValues?.pagesWordsSwitcher,\n overrideValues?.paperDetails,\n overrideValues?.paperFormat,\n overrideValues?.paperType,\n overrideValues?.preferredOrder?.sended,\n overrideValues?.preferredOrder?.value,\n overrideValues?.quantity,\n overrideValues?.quantityKey,\n overrideValues?.slides,\n overrideValues?.softCopies,\n overrideValues?.software?.checked,\n overrideValues?.software?.value,\n overrideValues?.sources,\n overrideValues?.spacing,\n overrideValues?.speakerNotes,\n overrideValues?.subject,\n overrideValues?.topic,\n overrideValues?.words,\n overrideValues?.workType,\n overrideValues?.writerCategory,\n ])\n\n const writer = rawOrder?.active_writer?.mtl ? rawOrder.active_writer : null\n\n const adaptedOrderValues = useMemo(() => {\n const adapted = ContextPDAdapter({...orderValues, ...(overrideValues || {})}, currency, discount)\n\n return { ...adapted, ...withFreeFeaturesValues, writer }\n }, [orderValues, currency, discount, withFreeFeaturesValues, writer])\n\n const handleSetPriceData = useCallback(({ priceData, adaptedOrderValues, priceDataBase }) => {\n setPriceData({ priceData, adaptedOrderValues, priceDataBase })\n }, [setPriceData])\n\n useEffect(() => {\n if (priceCalculatorAdapted && !!calculator) {\n const prices = showAltPrices\n ? prices_alt\n : priceCalculatorAdapted.bdPrices\n\n const priceData = calculator(\n {\n fieldValues: adaptedOrderValues,\n bd: { ...priceCalculatorAdapted, bdPrices: prices},\n currency: currency.symbol,\n },\n {\n currency: currency.name,\n rate: currency.rate\n }\n )\n\n const priceDataBase = currency.name !== DEFAULT_CURRENCY.name\n ? calculator(\n {\n fieldValues: adaptedOrderValues,\n bd: { ...priceCalculatorAdapted, bdPrices: prices},\n currency: currency.symbol,\n },\n {\n currency: DEFAULT_CURRENCY.name,\n rate: DEFAULT_CURRENCY.rate\n }\n )\n : priceData\n\n handleSetPriceData({ priceData, adaptedOrderValues, priceDataBase })\n }\n }, [\n calculator,\n showAltPrices,\n currency?.name,\n currency?.rate,\n prices_alt,\n priceCalculatorAdapted,\n adaptedOrderValues.pages,\n adaptedOrderValues.words,\n adaptedOrderValues.slides,\n adaptedOrderValues.speakerNotes,\n adaptedOrderValues.problems,\n adaptedOrderValues.questions,\n adaptedOrderValues.deadline,\n adaptedOrderValues.spacing,\n adaptedOrderValues.workType,\n adaptedOrderValues.paperType,\n adaptedOrderValues.academicLevel,\n adaptedOrderValues.writerCategory,\n adaptedOrderValues.sources,\n adaptedOrderValues.softcopies,\n adaptedOrderValues.subject,\n adaptedOrderValues.software,\n\n adaptedOrderValues.additionalFeatures,\n adaptedOrderValues.discountData,\n // @ts-ignore\n adaptedOrderValues.preferredOrderData?.writerCategory?.chosenID,\n // @ts-ignore\n adaptedOrderValues.preferredOrderData?.writerCategory?.free,\n\n setPriceData,\n ])\n}\n", "import { RawOrder } from \"@qwerty.software/ui-order-form/src/templates/dashboard/types\"\nimport { FieldNames } from \"@qwerty.software/ui-order-form/src/store/constants\"\nimport { OrderValues } from \"../order/types\"\n\ninterface IExtractorProps {\n rawOrder: RawOrder\n orderValues: OrderValues\n}\n\ntype TResultKeys = FieldNames.WRITER_CATEGORY | FieldNames.ADDITIONAL_FEATURES | FieldNames.SPEAKER_NOTES\n\ntype TExtractor = (props: IExtractorProps) => Partial>\n\nexport const extractFreeFeaturesFromRawOrder: TExtractor = ({ rawOrder, orderValues }) => {\n if (!rawOrder) return {}\n\n const writerCategoryValue = {\n chosenID: orderValues.writerCategory,\n free: rawOrder.writer_category.free && rawOrder.writer_category.chosen_id === orderValues.writerCategory\n }\n\n const additionalFeaturesValue = orderValues.additionalFeatures.map((id => ({\n id,\n chosen: orderValues.additionalFeatures.includes(id),\n free: rawOrder.additional_features.some((feature) => feature.id === id && feature.free)\n })))\n\n const speakerNotesValue = rawOrder.speaker_notes.enabled && rawOrder.speaker_notes.free ? false : orderValues.speakerNotes\n\n return {\n [FieldNames.WRITER_CATEGORY]: writerCategoryValue,\n [FieldNames.ADDITIONAL_FEATURES]: additionalFeaturesValue,\n [FieldNames.SPEAKER_NOTES]: speakerNotesValue\n }\n}\n", "import * as React from 'react'\nimport { useSelector } from 'react-redux'\nimport useAction from 'hooks/useAction'\n\nimport checkAction from 'global-entities/user-data/actions/check'\n\nimport { getIsAuthorized, getIsChecked } from 'global-entities/user-data/selectors'\n\nconst useUserData = () => {\n const udIsAuthorized = useSelector(getIsAuthorized)\n const isChecked = useSelector(getIsChecked)\n\n const check = useAction(checkAction)\n\n React.useEffect(() => {\n if (!isChecked) {\n check()\n }\n }, [isChecked])\n\n return {\n check,\n udIsAuthorized,\n }\n}\n\nexport default useUserData\n", "import _size from 'lodash/size'\nimport _get from 'lodash/get'\nimport _toUpper from 'lodash/toUpper'\n\nimport StoreManager from '@qwerty.software/store-manager'\nimport { abTestsSlice } from '@qwerty.software/ab-test/src/component/store'\n\n/* adapters local */\nimport userDataAdapter from 'global-entities/user-data/adapter'\n\n/* utils general */\nimport { reqHPromise as reqH } from 'utils/http-client/request-handler'\nimport notify from 'utils/notify'\nimport storage from 'utils/storage'\nimport customEvent from 'utils/custom-event'\nimport queryString from 'utils/query-string'\nimport actionTracker from 'utils/action-tracker'\n\nimport { getFromURL } from 'utils/from-url'\nimport { setRedesignReferrer } from 'utils/from-url/redesign-referrer'\nimport { getTempQuery } from 'utils/from-url/temp-query'\nimport { getVisitor, setVisitor, setIsNewVisitor } from 'utils/visitor'\nimport { getRT } from 'utils/rt'\nimport { getFirstCheck, setFirstCheck } from 'utils/first-check-request'\nimport trackMainPage from 'utils/visited-pages/track-main-page'\nimport { setVisitedPage } from 'utils/visited-pages'\n\nimport { getFingerprint } from './fingerprint'\n\n/* helpers general */\nimport getFromConfigs from 'helpers/configs/get-from-configs'\n\n/* helpers global-entities */\nimport toggleAuthButtons from 'global-entities/user-data/helpers/toggle-auth-buttons'\n\n// import { SET_ALT_PRICES_FLAG } from 'global-entities/price-data/alt-prices/constants'\n\n/* redux-constants local */\nimport {\n USER_CHECK,\n REMOTE_SUCCESS,\n} from 'global-entities/user-data/constants'\n\n/* constants general */\nimport {\n AUTHORISATION_STATUSES,\n CHECK,\n CHECK_TRIGGERED,\n} from 'constants/auth'\nimport { TEMP_QS_KEY, REFERRER } from 'constants/storage'\nimport { USER_CHECKED } from 'constants/custom-events'\nimport { SHOULD_DISABLE_USER_CHECK_REQUEST } from 'constants/configs'\n\nconst DISABLE_CHECK_REQUEST = getFromConfigs(SHOULD_DISABLE_USER_CHECK_REQUEST)\n\nconst getParams = () => {\n window[CHECK_TRIGGERED] = true\n\n const params = {\n ...(queryString.getParams() || {}),\n ...getTempQuery(),\n from_url: getFromURL(),\n }\n\n const rt = getRT()\n if (rt) {\n params.rt = rt\n }\n\n return params\n}\n\nwindow.checkAuthData = window.checkAuthData || new Promise(resolve => {\n const fingerprint = getFingerprint()\n\n if (DISABLE_CHECK_REQUEST) {\n // eslint-disable-next-line no-console\n console.log('Check request disabled via configs.')\n return\n }\n\n (async (params) => {\n const res = await reqH({\n method: 'GET',\n url: CHECK.route,\n params: {\n ...params,\n first_check_request: getFirstCheck(),\n k: Math.random(),\n f: fingerprint,\n caller: window?.location?.pathname,\n },\n skipGlobalSpinner: true,\n })\n\n if (_size(res.errors) > 0) {\n notify.error(res.errors[0])\n return res\n }\n\n StoreManager.getInstance().store.dispatch(abTestsSlice.actions.hydrate(res.data.user))\n\n setVisitor(res.data.user.visitor_id)\n setIsNewVisitor(res.data.user.is_new_visitor)\n\n const userData = userDataAdapter(res.data.user)\n\n trackMainPage(userData)\n\n setFirstCheck()\n\n setRedesignReferrer()\n\n resolve(res)\n })(getParams())\n})\n\nexport default () => async (dispatch) => {\n if (getFromConfigs(SHOULD_DISABLE_USER_CHECK_REQUEST)) {\n return\n }\n\n try {\n const res = await window.checkAuthData\n\n if (_size(res.errors) > 0) {\n notify.error(res.errors[0])\n return res\n }\n\n const userData = userDataAdapter(res.data.user)\n\n dispatch({\n type: USER_CHECK + REMOTE_SUCCESS,\n payload: userData,\n })\n\n // let altPrice = null\n\n // switch (`${res.data.user.incPrices}`.toUpperCase()) {\n // case 'GROUP_A':\n // altPrice = false\n // break\n // case 'GROUP_B':\n // altPrice = true\n // break\n // default:\n // break\n // }\n\n // dispatch({\n // type: SET_ALT_PRICES_FLAG,\n // payload: altPrice,\n // })\n\n // TODO remove it from here, fix jinp LR-2808\n window._jinp_visitor_id = userData.visitorID\n window._jinp_referrer_id = userData.referrerID\n\n actionTracker.track({\n data: {\n user_status: 'unknown',\n visitor_id: userData.visitorID,\n referrer_id: userData.referrerID,\n },\n })\n\n toggleAuthButtons(userData.isAuthorized ? AUTHORISATION_STATUSES.authorized : AUTHORISATION_STATUSES.unauthorized)\n\n setVisitedPage()\n\n customEvent.trigger(USER_CHECKED, { isAuthorized: userData.isAuthorized })\n\n storage.remove(TEMP_QS_KEY, { isOuterKey: true })\n storage.remove(REFERRER, { isOuterKey: true })\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('[Check request failure]', error.message)\n return error\n }\n}\n", "/* constants general */\nimport { AUTHORISATION_STATUSES } from 'constants/auth'\n\nconst convert = (originalPropertyName, adaptedPropertyName, originalData, adaptedData) => {\n if (typeof originalData[originalPropertyName] !== 'undefined') {\n adaptedData[adaptedPropertyName] = originalData[originalPropertyName]\n }\n\n return adaptedData\n}\n\nexport default (originalData) => {\n if (!originalData) {\n return\n }\n\n const adaptedData = {}\n\n const propertiesForAdaptation = [\n { originalPropertyName: 'id', adaptedPropertyName: 'userID' },\n { originalPropertyName: 'visitor_id', adaptedPropertyName: 'visitorID' },\n { originalPropertyName: 'visitor', adaptedPropertyName: 'visitor' },\n { originalPropertyName: 'referrer_id', adaptedPropertyName: 'referrerID' },\n { originalPropertyName: 'referrer_type_id', adaptedPropertyName: 'referrerTypeID' },\n { originalPropertyName: 'link_id', adaptedPropertyName: 'linkID' },\n { originalPropertyName: 'email', adaptedPropertyName: 'email' },\n { originalPropertyName: 'phone', adaptedPropertyName: 'phone' },\n { originalPropertyName: 'first_name', adaptedPropertyName: 'firstName' },\n { originalPropertyName: 'last_name', adaptedPropertyName: 'lastName' },\n { originalPropertyName: 'subscribed', adaptedPropertyName: 'subscribed' },\n { originalPropertyName: 'paid_orders_count', adaptedPropertyName: 'paidOrdersCount' },\n { originalPropertyName: 'user_tags', adaptedPropertyName: 'tags' },\n { originalPropertyName: 'retentionDiscount', adaptedPropertyName: 'retentionDiscount' },\n { originalPropertyName: 'is_referral', adaptedPropertyName: 'isReferral' },\n { originalPropertyName: 'cashback', adaptedPropertyName: 'cashback' },\n { originalPropertyName: 'cashbackBalance', adaptedPropertyName: 'cashbackBalance' },\n { originalPropertyName: 'all_orders_count', adaptedPropertyName: 'allOrdersCount' },\n { originalPropertyName: 'loyalty_data', adaptedPropertyName: 'loyaltyData' },\n { originalPropertyName: 'profileType', adaptedPropertyName: 'profileType' },\n { originalPropertyName: 'typeOfWorkABTest', adaptedPropertyName: 'typeOfWorkABTest' },\n { originalPropertyName: 'lengthOrderForm', adaptedPropertyName: 'lengthOrderForm' },\n { originalPropertyName: 'notificationProWriter', adaptedPropertyName: 'notificationProWriter' },\n { originalPropertyName: 'chatbotOrderFormAlternative', adaptedPropertyName: 'chatbotOrderFormAlternative' },\n { originalPropertyName: 'showIphoneBanner', adaptedPropertyName: 'showIphoneBanner' },\n { originalPropertyName: 'currency_id', adaptedPropertyName: 'currencyId' },\n { originalPropertyName: 'last_paid_order_data', adaptedPropertyName: 'lastPaidOrderData' },\n { originalPropertyName: 'top_upsales', adaptedPropertyName: 'topUpsales' },\n { originalPropertyName: 'incPrices', adaptedPropertyName: 'incPrices' },\n ]\n\n propertiesForAdaptation.forEach((item) => {\n convert(item.originalPropertyName, item.adaptedPropertyName, originalData.user ? originalData.user : originalData, adaptedData)\n })\n\n adaptedData.authorizationStatus = AUTHORISATION_STATUSES.unauthorized\n adaptedData.isAuthorized = false\n\n if (adaptedData.userID) {\n adaptedData.authorizationStatus = AUTHORISATION_STATUSES.authorized\n adaptedData.isAuthorized = true\n }\n\n return adaptedData\n}\n", "import getFromConfigs from 'helpers/configs/get-from-configs'\nimport { TRACK_TOOL } from 'constants/configs'\n\nimport googleTrack from './google-track'\nimport interiorTrack from './interior-track'\n\nimport type { TrackerType, ITrackerParams } from './types'\n\nconst requiredArgument = (name: string) => {\n throw new Error(`${name} argument is required!`)\n}\n\nexport enum Tool {\n Google = 'google-track',\n Interior = 'interior-track',\n}\n\nconst trackAction: TrackerType = (params: ITrackerParams): void | false => {\n const tool: Tool = params.tool ? params.tool : getFromConfigs(TRACK_TOOL) || Tool.Interior\n\n switch (tool) {\n case (Tool.Google):\n return googleTrack(params)\n case (Tool.Interior):\n default:\n return interiorTrack(params)\n }\n}\n\nconst createSet = ({ name = requiredArgument('name') } = {}) => {\n let set = {}\n\n return {\n push: (params: Object) => {\n set = {\n ...set,\n ...params,\n }\n },\n track: (callback = () => { }) => trackAction({\n eventName: name,\n data: set,\n callback,\n }),\n }\n}\n\n// @ts-ignore\nwindow.microservicesActionTracker = {\n track: trackAction,\n createSet,\n}\n\nexport default {\n track: trackAction,\n createSet,\n}\n", "import type { TrackerType, ITrackerParams } from 'utils/action-tracker/types'\n\nconst checkTrackerEnabled = () => {\n if (typeof (window as any).dataLayer === 'undefined') {\n // eslint-disable-next-line no-console\n console.warn('No \"dataLayer\" variable found!')\n return false\n }\n\n return true\n}\n\nconst trackAction: TrackerType = ({\n eventName = '',\n data = {},\n callback = () => { },\n}: ITrackerParams = {}): void | false => {\n if (!checkTrackerEnabled()) {\n callback() // if tracker is blocked or disabled just call callback for best app safety\n return false\n }\n\n const params: {\n event?: string\n eventCallback: Function\n eventTimeout: number\n [key: string]: any\n } = { ...data, eventCallback: callback, eventTimeout: 500 }\n\n if (eventName) {\n params.event = eventName\n }\n\n if ((window as any)?.dataLayer && !!(window as any)?.dataLayer?.push) {\n (window as any).dataLayer.push(params)\n setTimeout(callback, 350)\n }\n}\n\nexport default trackAction\n", "import StoreManager from '@qwerty.software/store-manager'\n\nimport { INTERIOR_TRACK } from 'utils/action-tracker/interior-track/store/constants'\n\nimport type { TrackerType, ITrackerParams } from 'utils/action-tracker/types'\n\nimport type { Action } from 'utils/action-tracker/interior-track/store/sagas/track/types'\n\nconst trackAction = ({ eventName, callback, data }: {\n eventName: string\n callback: Function\n data: any\n}): Action => ({\n type: INTERIOR_TRACK,\n payload: { eventName, callback, data },\n})\n\nconst interiorTrack: TrackerType = ({\n eventName = '',\n callback = () => { },\n data\n \n}: ITrackerParams = {}) => {\n StoreManager.getInstance().store.dispatch(trackAction({\n eventName,\n callback,\n data\n }))\n}\n\nexport default interiorTrack\n", "import getFromConfigs from 'helpers/configs/get-from-configs'\n\nimport { ADDITIONAL_QUERY_PARAMS_TO_PARENT_SITE } from 'constants/configs'\n\nexport const getRT = () => {\n const additionalQueryParamsToParentSite = getFromConfigs(ADDITIONAL_QUERY_PARAMS_TO_PARENT_SITE)\n if (additionalQueryParamsToParentSite?.rt) {\n return additionalQueryParamsToParentSite.rt\n }\n}\n", "import storage from 'utils/storage'\n\nconst IS_NOT_THE_FIRST_CHECK_REQUEST = 'is-not-the-first-check-request'\n\nexport const getFirstCheck = () => !storage.get(IS_NOT_THE_FIRST_CHECK_REQUEST, { storageType: 'session' })\n\nexport const setFirstCheck = () => storage.set(IS_NOT_THE_FIRST_CHECK_REQUEST, true, { storageType: 'session' })\n", "import _size from 'lodash/size'\nimport _get from 'lodash/get'\n\nimport storage from 'utils/storage'\nimport actionTracker from 'utils/action-tracker'\n\nimport { getVisitedPages } from 'utils/visited-pages'\nimport getUserTraficFields from 'utils/action-tracker/getUserTraficFields'\n\nimport { DESIGN_TYPE } from 'constants/storage'\n\nconst trackMainPage = (userData: any) => {\n // setTimeout(() => {\n if (!_get(getVisitedPages(), `[${document.location.pathname}]`, false)) {\n actionTracker.track({\n eventName: 'main_page_open',\n data: {\n url_from: document.referrer.length ? document.referrer : 'first input',\n url_current: document.location.pathname,\n current_full_url: window.location,\n design_type: storage.get(DESIGN_TYPE),\n ...getUserTraficFields(userData),\n\n ...(userData.isAuthorized\n ? {\n user_id: userData.userID,\n paidOrdersCount: userData.paidOrdersCount,\n allOrdersCount: userData.allOrdersCount,\n }\n : {\n visitor_id: userData.visitorID,\n }\n ),\n },\n })\n }\n // }, 2000)\n}\n\nexport default trackMainPage\n", "import storage from 'utils/storage'\n\nexport const getVisitedPages = () => storage.get('visited_pages', { storageType: 'session' })\n\nexport const setVisitedPage = () => {\n storage.set('visited_pages', {\n ...getVisitedPages(),\n [document.location.pathname]: true,\n }, { storageType: 'session' })\n}\n", "const REVIEWS_RANGE = [38557, 141078, 139112, 89177, 139112, 9233, 30232, 38557]\nconst WHITE_DOORS_RANGE = [149486]\nconst PPC_RANGE = [15474, 141228]\nconst SEO_RANGE = [49692, 149487, 22459, 17474]\nconst SMM_RANGE = [49871, 242, 141405]\nconst DOORS_RANGE = [146402]\nconst ORGANIC_RANGE = [0, 52130]\nconst PUSH_RANGE = [146091]\n\nconst APP_RANGE = [87430, 89941]\n\nconst REFFERAL_RANGE = [4]\n\n// eslint-disable-next-line camelcase\nconst channelFindOut = ({ referrer_id, link_id, referrer_type_id }) => {\n switch (true) {\n case REVIEWS_RANGE.includes(referrer_id):\n return 'reviews'\n case WHITE_DOORS_RANGE.includes(referrer_id):\n return 'white_doors'\n case PPC_RANGE.includes(referrer_id):\n return 'ppc'\n case SEO_RANGE.includes(referrer_id):\n return 'seo'\n case SMM_RANGE.includes(referrer_id):\n return 'smm'\n case DOORS_RANGE.includes(referrer_id):\n return 'doors'\n case ORGANIC_RANGE.includes(referrer_id):\n return 'organic'\n case PUSH_RANGE.includes(referrer_id):\n return 'push'\n case APP_RANGE.includes(link_id):\n return 'app'\n case REFFERAL_RANGE.includes(referrer_type_id):\n return 'refferal'\n default:\n return 'webmasters'\n }\n}\n\nconst getUserTraficFields = (userData) => {\n // eslint-disable-next-line camelcase\n const link_id = userData?.visitor?.link_id || userData?.linkID || 0\n // eslint-disable-next-line camelcase\n const referrer_id = userData?.visitor?.referrer_id || userData?.referrerID || 0\n // eslint-disable-next-line camelcase\n const referrer_type_id = userData?.referrerTypeID || 0\n\n const fields = {\n link_id,\n referrer_id,\n referrer_type_id,\n }\n\n return {\n ...fields,\n channel: channelFindOut(fields),\n }\n}\n\nexport default getUserTraficFields\n", "import getBrowserFingerprint from 'sctk-new-get-browser-fingerprint'\n\nimport getFromConfigs from 'helpers/configs/get-from-configs'\nimport {\n PROJECT_DOMAIN,\n IS_ALIAS_DOMAIN,\n} from 'constants/configs'\nimport { toBinary } from './toBinary'\n\nexport const getFingerprint = () => {\n const fingerprint = getBrowserFingerprint({ enableWebgl: true })\n const isAliasDomain = getFromConfigs(IS_ALIAS_DOMAIN)\n const configsDomain = getFromConfigs(PROJECT_DOMAIN) || window.location.hostname\n\n const domain = isAliasDomain ? configsDomain : window.location.hostname\n\n return toBinary(`${fingerprint}${domain}`)\n}", "export const toBinary = (source: string): string => {\n const codeUnits = new Uint16Array(source.length)\n\n for (let i = 0; i < codeUnits.length; i++) {\n codeUnits[i] = source.charCodeAt(i)\n }\n\n return btoa(String.fromCharCode(...Array.from(new Uint8Array(codeUnits.buffer))))\n}", "/* constants general */\nimport {\n AUTHORISATION_STATUSES,\n DASHBOARD,\n SIGNOUT,\n} from 'constants/auth'\nimport {\n DATA_ATTR_OPEN_AUTH_MODAL,\n DATA_ATTR_EXISTING_USER_ACTION,\n} from 'constants/data-attrs'\n\nexport default (userAuthorizationStatus) => {\n let openAuthModalBtns = document.querySelectorAll(`[${DATA_ATTR_OPEN_AUTH_MODAL}=true]`)\n let dashboardBtns = document.querySelectorAll(`[${DATA_ATTR_EXISTING_USER_ACTION}=${DASHBOARD.action}]`)\n let signoutBtns = document.querySelectorAll(`[${DATA_ATTR_EXISTING_USER_ACTION}=${SIGNOUT.action}]`)\n\n openAuthModalBtns = [...openAuthModalBtns]\n dashboardBtns = [...dashboardBtns]\n signoutBtns = [...signoutBtns]\n\n switch (userAuthorizationStatus) {\n\n case AUTHORISATION_STATUSES.authorized:\n openAuthModalBtns.forEach((btn) => btn.classList.add('hidden'))\n\n dashboardBtns.forEach((btn) => btn.classList.remove('hidden'))\n\n signoutBtns.forEach((btn) => btn.classList.remove('hidden'))\n break\n\n case AUTHORISATION_STATUSES.unauthorized:\n openAuthModalBtns.forEach((btn) => btn.classList.remove('hidden'))\n\n dashboardBtns.forEach((btn) => btn.classList.add('hidden'))\n\n signoutBtns.forEach((btn) => btn.classList.add('hidden'))\n break\n\n default:\n break\n }\n\n}\n", "export const DATA_ATTR_OPEN_AUTH_MODAL = 'data-open-auth-modal'\n\nexport const DATA_ATTR_OPEN_AUTH_MODAL_NEW = 'data-open-auth-modal-new'\n\nexport const DATA_ATTR_AUTH_TYPE = 'data-auth-type'\n\nexport const DATA_ATTR_EXISTING_USER_ACTION = 'data-existing-user-action'\n\nexport const DATA_ATTR_REQUEST_CALL_MODAL = 'data-open-request-call-modal'\n\nexport const DATA_ATTR_CUSTOM_PATH_FOR_REDIRECT = 'data-custom-path-for-redirect'\n", "export const getUserData = (state) => state?.userData\n\nexport const getAuthorizationStatus = (state) => state?.userData?.authorizationStatus\nexport const getIsAuthorized = (state) => state?.userData?.isAuthorized\n\nexport const getUserID = (state) => state?.userData?.userID\nexport const getVisitorID = (state) => state?.userData?.visitorID\nexport const getReferrerID = (state) => state?.userData?.referrerID\n\nexport const getEmail = (state) => state?.userData?.email\nexport const getPhone = (state) => state?.userData?.phone\n\nexport const getFirstName = (state) => state?.userData?.firstName\nexport const getLastName = (state) => state?.userData?.lastName\nexport const getFullName = (state) => [getFirstName(state), getLastName(state)].join(' ').trim()\n\nexport const getPaidOrdersCount = (state) => state?.userData?.paidOrdersCount\n\nexport const getSubscribed = (state) => state?.userData?.subscribed\n\nexport const getTags = (state) => state?.userData?.tags\n\nexport const getRetentionDiscount = (state) => state?.userData?.retentionDiscount\n\nexport const getPusherRetentionDiscount = (state) => state?.retentionDiscount?.retentionDiscount\n\nexport const getIsABChatbot = (state) => Boolean(state?.userData?.chatbotOrderFormAlternative === 'GROUP_B')\n\nexport const getIsChecked = (state) => Boolean(state?.userData?.checked)\n\n", "import { useEffect } from \"react\"\nimport { useLocation } from \"react-router-dom\"\n\nimport { getIsChecked, getUserID } from 'global-entities/user-data/selectors'\nimport useVisitorID from 'global-entities/user-data/hooks/useVisitorID'\n\nimport { reqHPromise } from \"utils/http-client/request-handler\"\nimport { useSelector } from \"react-redux\"\n\nexport const useMarkOrderPageAsVisited = () => {\n const isChecked = useSelector(getIsChecked)\n const { pathname } = useLocation()\n const userId = useSelector(getUserID)\n const visitorId = useVisitorID()\n\n useEffect(() => {\n if (isChecked && visitorId) {\n reqHPromise({\n method: 'POST',\n url: 'add-visited-page',\n data: {\n name: pathname,\n user_id: userId,\n visitor_id: visitorId\n },\n })\n }\n }, [pathname, userId, visitorId, isChecked])\n}\n", "import { useSelector } from 'react-redux'\n\nimport storage from 'utils/storage'\n\ninterface IUserDataStore {\n userData: {\n visitorID?: number\n }\n}\n\nconst useVisitorID = () => {\n const visitorID = useSelector((state: IUserDataStore) => state.userData.visitorID)\n\n if (visitorID) {\n return visitorID\n }\n\n const Visitor = storage.get('Visitor')\n\n if (Visitor) {\n return Visitor\n }\n\n const userData = storage.get('user_data')\n\n if (userData?.visitorID) {\n return userData.visitorID\n }\n\n return undefined\n}\n\nexport default useVisitorID\n", "import * as React from 'react'\nimport _throttle from 'lodash/throttle'\n\nimport cookie from 'utils/cookie'\n\n// eslint-disable-next-line import/no-named-as-default\nimport tracer from 'global-entities/geo-tag/tracers'\n\nimport useGeoTag from 'global-entities/geo-tag/store/hooks/geoTag'\n\nconst DETAULT_COUNTRY_CODE = 'us'\n\nconst trace = _throttle(tracer, 5000)\n\n// TODO: Replace to RTK side-effect\nconst GeoTag = () => {\n const [{ IP, countryCode }, { setIP, setCountryCode }] = useGeoTag()\n\n React.useEffect(() => {\n (async () => {\n if (!IP || !countryCode) {\n\n try {\n const tag = await trace()\n\n if (tag) {\n setIP(tag.IP as string)\n setCountryCode(tag.countryCode as string || DETAULT_COUNTRY_CODE)\n cookie.set('_ip', tag.IP)\n } else {\n setCountryCode(DETAULT_COUNTRY_CODE) // TODO: hotfix - some users whithout countrycode\n }\n } catch (e) {\n setCountryCode(DETAULT_COUNTRY_CODE)\n\n // eslint-disable-next-line no-console\n console.warn('Setted default country code')\n }\n\n }\n })()\n }, [IP, countryCode])\n\n return null\n}\n\nexport default GeoTag\n", "const isEnabled = () => navigator.cookieEnabled\n\nconst get = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n const matches = document.cookie.match(new RegExp(\n // eslint-disable-next-line\n '(?:^|; )' + storageItemKey.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)',\n ))\n\n return matches ? decodeURIComponent(matches[1]) : undefined\n}\n\nconst set = (storageItemKey, storageItemValue, { expiryDate } = {}) => {\n if (!isEnabled()) {\n return\n }\n if (expiryDate && expiryDate.toUTCString) {\n expiryDate = expiryDate.toUTCString()\n }\n\n storageItemValue = encodeURIComponent(storageItemValue)\n\n let updatedCookie = `${storageItemKey}=${storageItemValue}`\n if (expiryDate) {\n updatedCookie += `; expires=${expiryDate}`\n }\n\n document.cookie = updatedCookie\n}\n\nconst remove = (storageItemKey) => {\n if (!isEnabled()) {\n return\n }\n set(storageItemKey, '', { expiryDate: new Date() })\n}\n\nconst cookie = {\n isEnabled,\n\n get,\n set,\n remove,\n}\n\nexport default cookie\n\nwindow.MICROSERVICES_UTILS_AND_HELPERS = window.MICROSERVICES_UTILS_AND_HELPERS || {}\n!window.MICROSERVICES_UTILS_AND_HELPERS?.cookie && (window.MICROSERVICES_UTILS_AND_HELPERS.cookie = cookie)", "import axios from 'axios'\nimport _isEmpty from 'lodash/isEmpty'\n\nimport cloudflare from 'global-entities/geo-tag/tracers/cloudflare'\n// import ipinfo from 'global-entities/geo-tag/tracers/ipinfo'\n// import { KEY } from 'global-entities/geo-tag/constants'\n\nconst CancelToken = axios.CancelToken\n\nconst tracers = [\n cloudflare,\n // ipinfo,\n]\n\nexport const trace = async () => {\n // @ts-ignore\n if (!window._ms_geoTagResonseWaiting) {\n // @ts-ignore\n window._ms_geoTagResonseWaiting = true\n const source = CancelToken.source()\n const data = await Promise.race(tracers.map(tracer => tracer(source)))\n\n // @ts-ignore\n delete window._ms_geoTagResonseWaiting\n\n return data\n }\n}\n\nexport { cloudflareTracer } from 'global-entities/geo-tag/tracers/cloudflare'\n// export { ipInfoTracer } from 'global-entities/geo-tag/tracers/ipinfo'\n\nexport default trace\n", "import axios from 'axios'\n\nimport { ITracer } from 'global-entities/geo-tag/tracers/types'\nimport { GeoTagStoreType } from 'global-entities/geo-tag/store/types'\n\nconst KEYS: {\n ip: 'IP',\n loc: 'countryCode',\n} = {\n ip: 'IP',\n loc: 'countryCode',\n}\n\ntype KeyType = keyof GeoTagStoreType\ntype AccumulatorType = {\n [key in KeyType]: string\n}\n\nexport const cloudflareTracer: ITracer = async ({ token }): Promise => {\n const { data } = await axios.get('https://www.cloudflare.com/cdn-cgi/trace', {\n cancelToken: token,\n })\n\n return data.split('\\n').reduce((accumulator: AccumulatorType, keyValue: string) => {\n const [key, value] = keyValue.split('=')\n\n if (key in KEYS) {\n // @ts-ignore\n accumulator[KEYS[key]] = value\n }\n\n return accumulator\n }, {} as AccumulatorType)\n}\n\nexport default cloudflareTracer\n", "import * as React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport {\n setCountryCode,\n setIP,\n} from 'global-entities/geo-tag/store/actions'\nimport {\n COUNTRY_CODE,\n IP,\n} from 'global-entities/geo-tag/store/selectors'\nimport type {\n GeoTagStoreType,\n CountryCodeType,\n IPType,\n} from 'global-entities/geo-tag/store/types'\n\nconst useGeoTag = (): [{\n countryCode: GeoTagStoreType['countryCode'],\n IP: GeoTagStoreType['IP'],\n}, {\n setCountryCode: (countryCode: CountryCodeType) => void,\n setIP: (IP: IPType) => void,\n}] => {\n const dispatch = useDispatch()\n\n return [{\n countryCode: useSelector(COUNTRY_CODE),\n IP: useSelector(IP),\n }, {\n setCountryCode: React.useCallback((countryCode: CountryCodeType): void => {\n // @ts-ignore\n dispatch(setCountryCode(countryCode))\n }, []),\n setIP: React.useCallback((IP: IPType): void => {\n // @ts-ignore\n dispatch(setIP(IP))\n }, []),\n }]\n}\n\nexport default useGeoTag\n", "import { Dispatch } from 'redux'\n\nimport {\n SET_CONTRY_CODE,\n CountryCodeType,\n\n SET_IP,\n IPType,\n} from 'global-entities/geo-tag/store/types'\n\nexport interface ISetCountryCodeAction {\n type: typeof SET_CONTRY_CODE\n payload: CountryCodeType\n}\nexport const setCountryCode = (countryCode: CountryCodeType) => (dispatch: Dispatch) => {\n dispatch({ type: SET_CONTRY_CODE, payload: countryCode })\n}\n\nexport interface ISetIPAction {\n type: typeof SET_IP\n payload: IPType\n}\nexport const setIP = (IP: IPType) => (dispatch: Dispatch) => {\n dispatch({ type: SET_IP, payload: IP })\n}\n\n/* eslint-disable @typescript-eslint/indent */\nexport type GeoTagActions = ISetCountryCodeAction |\n ISetIPAction\n/* eslint-enable @typescript-eslint/indent */\n", "import { KEY } from 'global-entities/geo-tag/constants'\n\nimport type { IGeoTagStore } from 'global-entities/geo-tag/store/types'\n\nexport const COUNTRY_CODE = (state: IGeoTagStore): IGeoTagStore['geo-tag']['countryCode'] => state[KEY].countryCode\n\nexport const IP = (state: IGeoTagStore): IGeoTagStore['geo-tag']['IP'] => state[KEY].IP\n\nexport const GEO_TAG = (state: IGeoTagStore): IGeoTagStore['geo-tag'] => state[KEY]\n", "import { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { reset } from '@qwerty.software/ui-order-form/src/changed-data-reminder/store/actions'\nimport { ORDER_LAST_CHANGED_AT, HYDRATED } from \"@qwerty.software/ui-order-form/src/store/slices/order\";\n\nexport const useClearAfterTime = () => {\n const dispatch = useDispatch()\n\n const [cleaned, setCleaned] = useState(false)\n const orderLastChangeAt = useSelector(ORDER_LAST_CHANGED_AT)\n const storePersisted = useSelector(HYDRATED)\n\n useEffect(() => {\n if (storePersisted) {\n const currentTime = Date.now()\n\n // we need to clear the order form 24 hours after the last change\n if (currentTime - orderLastChangeAt > 24 * 60 * 60 * 1000) {\n dispatch(reset({}) as any)\n setCleaned(true)\n }\n }\n }, [storePersisted])\n\n return { orderStoreCleaned: cleaned }\n}\n", "import { createAsyncThunk } from '@reduxjs/toolkit'\n\nimport { slice as discountSlice } from 'global-entities/discount/slice'\nimport { slice as filesUploaderSlice } from 'global-entities/files-uploader/slice'\n\nimport { stepSlice } from '@qwerty.software/ui-order-form/src/store/slices/step/slice-creator'\nimport chatBotSlice from '@qwerty.software/chat-bot/src/store/slice'\nimport { orderSlice } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { ORDER_NAMESPACE } from '@qwerty.software/ui-order-form/src/constants'\n\ninterface Namespaces {\n discountNamespace?: string\n filesUploaderNamespace?: string\n}\n\ninterface ResetArgs extends Namespaces { }\n\nexport const reset = createAsyncThunk('reset/order', (args, api) => {\n api.dispatch(discountSlice.actions.resetDiscount({ namespace: args?.discountNamespace || ORDER_NAMESPACE }))\n api.dispatch(filesUploaderSlice.actions.resetFiles({ namespace: args?.filesUploaderNamespace || ORDER_NAMESPACE }))\n\n api.dispatch(orderSlice.actions.reset({}))\n api.dispatch(chatBotSlice.actions.reset())\n api.dispatch(stepSlice.actions.reset())\n})", "import { createSlice, createSelector, PayloadAction } from '@reduxjs/toolkit'\nimport { persistReducer } from 'redux-persist'\nimport localforage from 'localforage'\n\nimport { STEP_SAGA } from '../../sagas/step/constants'\nimport { ForwardAction, GoAction, NextAction } from '../../sagas/step/types'\n\nimport { go } from './utils/go'\n\nimport { NAME } from './constants'\nimport type { StepState, Steps } from './types'\n\nexport const createStepSlice = (\n steps: Steps,\n {\n MIN_STEP_INDEX = 0,\n MAX_STEP_INDEX = steps.length - 1,\n INITIAL_INDEX = 0,\n }: {\n MIN_STEP_INDEX?: number,\n MAX_STEP_INDEX?: number,\n INITIAL_INDEX?: number,\n } = {}\n) => {\n const initialState = {\n activeStep: INITIAL_INDEX,\n isFirst: INITIAL_INDEX === MIN_STEP_INDEX,\n isLast: INITIAL_INDEX === MAX_STEP_INDEX,\n }\n const slice = createSlice({\n name: `slice://${NAME}/`,\n initialState,\n reducers: {\n set(state, action: PayloadAction) {\n go(action.payload, MIN_STEP_INDEX, MAX_STEP_INDEX).forEach(([key, value]) => {\n state[key] = value\n })\n },\n reset(state) {\n Object.keys(state).forEach(key => {\n state[key] = initialState[key]\n })\n }\n },\n })\n\n slice.reducer = persistReducer({\n keyPrefix: '',\n key: slice.name,\n // TODO: Disable serialization.\n // serialize: false,\n storage: localforage.createInstance({\n name: '[MSH] Storage',\n storeName: NAME,\n driver: [\n // localforage.INDEXEDDB,\n localforage.LOCALSTORAGE,\n ]\n }),\n }, slice.reducer) as unknown as typeof slice.reducer\n\n // @ts-ignore\n const HYDRATED = (state: State): void | boolean => state[slice.name]?._persist?.rehydrated\n\n const stepSlice = slice\n\n interface State {\n //@ts-ignore\n [stepSlice.name]: StepState\n }\n\n const ACTIVE_STEP = createSelector(getState, state => state?.activeStep)\n const TITLE = createSelector(getState, state => steps[state?.activeStep]?.title)\n const IS_FIRST = createSelector(getState, state => state?.isFirst)\n const IS_LAST = createSelector(getState, state => state?.isLast)\n\n const actions = {\n forward: (): ForwardAction => ({\n type: STEP_SAGA,\n payload: { direction: false },\n }),\n go: (step: number): GoAction => ({\n type: STEP_SAGA,\n payload: { step },\n }),\n next: (): NextAction => ({\n type: STEP_SAGA,\n payload: { direction: true },\n }),\n }\n\n return {\n STEPS: steps,\n stepSlice: slice,\n actions,\n selectors: {\n HYDRATED,\n ACTIVE_STEP,\n TITLE,\n IS_FIRST,\n IS_LAST,\n }\n }\n\n function getState(state) {\n return state[slice.name] as StepState\n }\n}\n\nexport type Selectors = ReturnType['selectors']\n", "import { SAGAS_SCHEMA } from 'constants/sagas'\nimport { NAME } from '../../slices/step/constants'\n\nexport const STEP_SAGA = `${SAGAS_SCHEMA}${NAME}/go` as const", "export const NAME = 'order-form/steps'\n", "export const number = (num: number, min: number = -Infinity, max: number = Infinity) => {\n if (num < min) {\n return min\n }\n\n if (num > max) {\n return max\n }\n\n return num\n}", "import { number } from '@qwerty.software/ui-order-form/src/utils/sanitizers/number'\n\nexport const go = (index, MIN_STEP_INDEX, MAX_STEP_INDEX) => {\n index = number(index, MIN_STEP_INDEX, MAX_STEP_INDEX)\n\n return Object.entries({\n activeStep: index,\n isFirst: index === MIN_STEP_INDEX,\n isLast: index === MAX_STEP_INDEX,\n })\n}\n", "import { createStepSlice } from '@qwerty.software/ui-order-form/src/store/slices/step'\nimport type { Steps } from '@qwerty.software/ui-order-form/src/store/slices/step/types'\n\n// import { topicValidation } from './form-fields/topic/validator'\n\nexport enum Variant {\n ORDER = 'order',\n CALCULATOR = 'calculator',\n}\n\nexport enum Step {\n PAPER_INFORMATION,\n PRICE_CALCULATION,\n EXTRA_FEATURES,\n}\n\nconst steps: Steps = [\n {\n title: 'Paper information',\n // validation: [\n // topicValidation\n // ]\n },\n {\n title: 'Price calculation',\n },\n {\n title: 'Extra features',\n },\n]\n\nexport const slice = createStepSlice(steps)\nexport const { selectors } = slice\nexport const {\n stepSlice,\n actions: stepActions,\n selectors: {\n HYDRATED,\n ACTIVE_STEP,\n TITLE,\n IS_FIRST,\n IS_LAST,\n },\n STEPS,\n} = slice\n", "import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\nimport _omit from 'lodash/omit'\n\nimport hashsum from 'hash-sum'\n\nimport {\n BotState,\n\n SenderType as Sender,\n\n BotMessageTypesMap,\n UserMessageTypesMap,\n} from './definitions'\n\nimport scssVariables from '../variables.module.scss'\n\nconst INITIAL_STATE: BotState = {\n messages: [],\n input: null,\n wasChanged: [],\n}\n\nconst slice = createSlice({\n name: scssVariables.domain,\n initialState: INITIAL_STATE,\n reducers: {\n botPush: (\n state,\n action: PayloadAction & {\n id?: string\n beforeMessageId?: string\n afterMessageId?: string\n }>,\n ) => {\n const id = action.payload.id || hashsum(action.payload)\n\n const message = {\n id,\n sender: Sender.BOT,\n\n ..._omit(action.payload, ['id', 'sender', 'beforeMessageId', 'afterMessageId']),\n }\n\n if (action.payload.beforeMessageId) {\n const index = state.messages.findIndex(message => message.id === action.payload.beforeMessageId)\n\n if (index !== -1) {\n state.messages.splice(index, 0, message)\n\n return\n }\n }\n\n if (action.payload.afterMessageId) {\n const index = state.messages.findIndex(message => message.id === action.payload.afterMessageId)\n\n if (index !== -1) {\n state.messages.splice(index + 1, 0, message)\n\n return\n }\n }\n\n state.messages.push(message)\n },\n userPush: (\n state,\n action: PayloadAction & {\n id?: string\n beforeMessageId?: string\n afterMessageId?: string\n }>,\n ) => {\n const id = action.payload.id || hashsum(action.payload)\n\n const message = {\n id,\n sender: Sender.USER,\n\n ..._omit(action.payload, ['id', 'sender'])\n }\n\n if (action.payload.beforeMessageId) {\n const index = state.messages.findIndex(message => message.id === action.payload.beforeMessageId)\n\n if (index !== -1) {\n state.messages.splice(index, 0, message)\n\n return\n }\n }\n\n if (action.payload.afterMessageId) {\n const index = state.messages.findIndex(message => message.id === action.payload.afterMessageId)\n\n if (index !== -1) {\n state.messages.splice(index + 1, 0, message)\n\n return\n }\n }\n\n state.messages.push(message)\n },\n\n update: (state, action: PayloadAction) => {\n const index = state.messages.findIndex(message => message.id === action.payload.id)\n\n if (index === -1) {\n return\n }\n\n state.messages[index] = action.payload\n },\n\n setChanged: (state, action: PayloadAction) => {\n if (!state.wasChanged.includes(action.payload)) {\n state.wasChanged = [...state.wasChanged, action.payload]\n }\n },\n\n remove: (state, action: PayloadAction) => {\n state.messages = state.messages.filter(message => message.id !== action.payload)\n },\n\n input: (state, action: PayloadAction) => {\n state.input = action.payload\n },\n\n reset: (state) => {\n delete state.expiredAt\n\n state.messages = []\n state.input = null\n },\n\n expireAt: (state, action: PayloadAction) => {\n state.expiredAt = action.payload ? action.payload : Date.now() + 10 * 1000 // expires in 10 seconds\n },\n },\n})\n\nexport const CHANGED_SELECTOR = (state: BotState): BotState['wasChanged'] => state[slice.name]['wasChanged']\n\nexport default slice", "import { createAction } from '@reduxjs/toolkit'\n\nimport _kebabCase from 'lodash/kebabCase'\n\nimport { WriterCategoryIds, FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { PickedBdFields } from '@qwerty.software/ui-order-form/src/store/slices/order'\n\nimport { FileMeta, NAME as FILE_UPLOADER_NAME } from 'global-entities/files-uploader/definitions'\nimport { DiscountMeta, APPLY_DISCOUNT_KEY, NAME as DISCOUNT_NAME } from 'global-entities/discount/definitions'\n\nimport { SAGAS_SCHEMA } from 'constants/sagas'\nimport scssVariables from '../variables.module.scss'\n\nexport const DOMAIN = `${scssVariables.domain}.bot` as const\n\nexport interface BotState {\n messages: Array\n input: Input | null\n expiredAt?: number\n wasChanged?: string[]\n}\n\nexport const FINAL_SUBMIT = 'final-submit' as const\nexport type FINAL_SUBMIT = typeof FINAL_SUBMIT\n\nexport type Input = FieldNames.TOPIC\n | FieldNames.WORK_TYPE\n | FieldNames.QUANTITY\n | FieldNames.DEADLINE\n | FieldNames.PAPER_DETAILS\n | FieldNames.WRITER_CATEGORY\n | FieldNames.ADDITIONAL_FEATURES\n | DISCOUNT_NAME\n | FINAL_SUBMIT\n\nexport enum SenderType {\n BOT = 'BOT',\n USER = 'USER',\n}\n\nexport enum BotMessageType {\n ADDITIONAL_FEATURES = PickedBdFields.additionalFeatures,\n WRITER_CATEGORIES = PickedBdFields.writerCategories,\n TEXT = 'TEXT',\n TYPING = 'TYPING',\n}\n\nexport enum UserMessageType {\n TOPIC = FieldNames.TOPIC,\n WORK_TYPE = FieldNames.WORK_TYPE,\n QUANTITY = FieldNames.QUANTITY,\n DEADLINE = FieldNames.DEADLINE,\n PAPER_DETAILS = FieldNames.PAPER_DETAILS,\n MATERIALS = 'files-uploader', // FILE_UPLOADER_NAME\n WRITER_CATEGORY = FieldNames.WRITER_CATEGORY,\n ADDITIONAL_FEATURES = FieldNames.ADDITIONAL_FEATURES,\n DISCOUNT = 'discount', // DISCOUNT_NAME\n TEXT = 'TEXT',\n}\n\nexport type BotMessageTypesMap = {\n [BotMessageType.ADDITIONAL_FEATURES]: BotAdditionalFeaturesMessage\n [BotMessageType.WRITER_CATEGORIES]: BotWriterCategoriesMessage\n [BotMessageType.TEXT]: BotTextMessage\n [BotMessageType.TYPING]: BotTypingMessage\n}\n\nexport type UserMessageTypesMap = {\n [UserMessageType.TOPIC]: UserTopicMessage\n [UserMessageType.WORK_TYPE]: UserWorkTypeMessage\n [UserMessageType.QUANTITY]: UserQuantityMessage\n [UserMessageType.DEADLINE]: UserDeadlineMessage\n [UserMessageType.PAPER_DETAILS]: UserPaperDetailsMessage\n [UserMessageType.MATERIALS]: UserMaterialsMessage\n [UserMessageType.WRITER_CATEGORY]: UserWriterCategoryMessage\n [UserMessageType.ADDITIONAL_FEATURES]: UserAdditionalFeaturesMessage\n [UserMessageType.DISCOUNT]: UserDiscountMessage\n [UserMessageType.TEXT]: UserTextMessage\n}\n\nexport interface BaseMessage {\n id: string\n}\n\nexport interface BotMessage extends BaseMessage {\n sender: SenderType.BOT\n type: BotMessageType\n}\n\nexport interface UserMessage extends BaseMessage {\n sender: SenderType.USER\n type: UserMessageType\n}\n\nexport interface MessageMeta {\n id: ID | null\n isLast: boolean\n}\n\ntype ID = number | string\n\n//#region Bot messages\nexport interface BotAdditionalFeaturesMessage extends BotMessage {\n // As filter and sorter, if not isset - all features in bootstrap-data order will displayed\n features?: ID[]\n}\n\nexport interface BotWriterCategoriesMessage extends BotMessage {\n // As filter and sorter, if not isset - all categories in bootstrap-data order will displayed\n categories?: WriterCategoryIds[]\n}\n\nexport interface BotTextMessage extends BotMessage {\n text: string | Selector\n}\n\nexport interface BotTypingMessage extends BotMessage { }\n//#endregion Bot messages\n\nexport type Selector = (state: TState) => TValue\n\nexport type SelectorMap = {\n [FieldNames.TOPIC]: Selector\n [FieldNames.WORK_TYPE]: Selector<{ workType: number, quantityKey: string }>\n [FieldNames.QUANTITY]: Selector<{ quantity: number, quantityKey: string }>\n [FieldNames.DEADLINE]: Selector\n [FieldNames.PAPER_DETAILS]: Selector\n [FILE_UPLOADER_NAME]: Selector\n [FieldNames.WRITER_CATEGORY]: Selector\n [FieldNames.ADDITIONAL_FEATURES]: Selector\n [DISCOUNT_NAME]: Selector\n [APPLY_DISCOUNT_KEY]: Selector\n [FINAL_SUBMIT]: Selector\n}\n\n//#region User messages\nexport interface UserTopicMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.TOPIC]\n}\n\nexport interface UserWorkTypeMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.WORK_TYPE]\n}\n\nexport interface UserQuantityMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.QUANTITY]\n}\n\nexport interface UserDeadlineMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.DEADLINE]\n}\n\nexport interface UserPaperDetailsMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.PAPER_DETAILS]\n}\n\nexport interface UserMaterialsMessage extends UserMessage {\n dataSelector: SelectorMap[FILE_UPLOADER_NAME]\n}\n\nexport interface UserWriterCategoryMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.WRITER_CATEGORY]\n}\n\nexport interface UserAdditionalFeaturesMessage extends UserMessage {\n dataSelector: SelectorMap[FieldNames.ADDITIONAL_FEATURES]\n}\n\nexport interface UserDiscountMessage extends UserMessage {\n dataSelector: SelectorMap[DISCOUNT_NAME]\n}\n\nexport interface UserTextMessage extends UserMessage {\n dataSelector: Selector\n}\n//#endregion User messages\n\nexport const startChatBotSaga = createAction(`${SAGAS_SCHEMA}${DOMAIN}/chating` as const)\nexport type StartChatBotSagaAction = ReturnType\n\nexport function createNext(name: TKey) {\n return createAction(`${SAGAS_SCHEMA}${DOMAIN}/chating/next/${_kebabCase(name)}` as const);\n}\nexport type NextAction = ReturnType", "import 'css-chunk:../chat-bot/src/variables.module.scss';export default {\n \"domain\": \"essie\",\n \"container\": \"essie_container\",\n \"messages\": \"essie_messages\",\n \"group\": \"essie_messages__group\",\n \"group-avatar\": \"essie_messages__group-avatar\",\n \"group-messages\": \"essie_messages__group-messages\",\n \"group-name\": \"essie_messages__group-name\",\n \"message\": \"essie_message\",\n \"message--user\": \"essie_message--user\",\n \"message--bot\": \"essie_message--bot\",\n \"message-text\": \"essie_message-text\",\n \"message-icon\": \"essie_message-icon\",\n \"message--text\": \"essie_message--text\",\n \"message--writer-categories\": \"essie_message--writer-categories\",\n \"message--writer-category\": \"essie_message--writer-category\",\n \"message--materials\": \"essie_message--materials\",\n \"message--additional-features\": \"essie_message--additional-features\",\n \"message--additional-feature\": \"essie_message--additional-feature\",\n \"message--typing\": \"essie_message--typing\",\n \"icon\": \"essie_icon\",\n \"icon--readed\": \"essie_icon--readed\",\n \"icon--writer-category\": \"essie_icon--writer-category\",\n \"icon--best-available\": \"essie_icon--best-available\",\n \"icon--pro\": \"essie_icon--pro\",\n \"icon--top\": \"essie_icon--top\",\n \"inputs\": \"essie_inputs\",\n \"form\": \"essie_form\",\n \"form--topic\": \"essie_form--topic\",\n \"form--work-type\": \"essie_form--work-type\",\n \"form--quantity\": \"essie_form--quantity\",\n \"form--deadline\": \"essie_form--deadline\",\n \"form--writer-category\": \"essie_form--writer-category\",\n \"form--paper-details\": \"essie_form--paper-details\",\n \"form--additional-features\": \"essie_form--additional-features\",\n \"form--discount\": \"essie_form--discount\",\n \"form--final-submit\": \"essie_form--final-submit\",\n \"input\": \"essie_input\",\n \"input--topic\": \"essie_input--topic\",\n \"input--paper-details\": \"essie_input--paper-details\",\n \"input--discount\": \"essie_input--discount\",\n \"button\": \"essie_button\",\n \"button--submit\": \"essie_button--submit\",\n \"button--writer-category\": \"essie_button--writer-category\",\n \"button--remove-material\": \"essie_button--remove-material\",\n \"button--submit-discount\": \"essie_button--submit-discount\",\n \"button--final-submit\": \"essie_button--final-submit\",\n \"switcher\": \"essie_switcher\",\n \"thumb\": \"mono-ui_switcher__thumb\",\n \"flag\": \"mono-ui_switcher__flag\",\n \"label\": \"mono-ui_switcher__label\",\n \"switcher--pages-words\": \"essie_switcher--pages-words\",\n \"number-input\": \"essie_number-input\",\n \"decrease\": \"mono-ui_number-input__button--decrease\",\n \"increase\": \"mono-ui_number-input__button--increase\",\n \"number-input-image\": \"number-input-input__icon\",\n \"number-input--quantity\": \"essie_number-input--quantity\",\n \"select\": \"essie_select\",\n \"select--work-type\": \"essie_select--work-type\",\n \"select--deadline\": \"essie_select--deadline\",\n \"radio-group\": \"essie_radio-group\",\n \"radio-group--writer-category\": \"essie_radio-group--writer-category\",\n \"radio-group--additional-feature\": \"essie_radio-group--additional-feature\",\n \"radio-group__label\": \"essie_radio-group__label\",\n \"radio-group__option\": \"essie_radio-group__option\",\n \"dropzone\": \"essie_dropzone\",\n \"dropzone--materials\": \"essie_dropzone--materials\",\n \"material\": \"essie_material\",\n \"material--success\": \"essie_material--success\",\n \"material--error\": \"essie_material--error\",\n \"material--progress\": \"essie_material--progress\",\n \"material__icon-box\": \"essie_material__icon-box\",\n \"material__icon\": \"essie_material__icon\",\n \"material__name\": \"essie_material__name\",\n \"material__error-message\": \"essie_material__error-message\",\n \"material__linear-progress\": \"essie_material__linear-progress\",\n \"material__size\": \"essie_material__size\",\n \"tooltip\": \"essie_tooltip\",\n \"tooltop_portal\": \"mono-ui_tooltip__portal\",\n \"tooltip--writer-category\": \"essie_tooltip--writer-category\",\n \"typing-progressbar\": \"essie_typing-progressbar\",\n \"typing-progressbar__dot\": \"essie_typing-progressbar__dot\",\n \"typing-progressbar--dot-animation\": \"_essie_typing-progressbar--dot-animation_ib73n_1\",\n \"notistack\": \"essie_notistack\",\n \"price\": \"essie_price\",\n \"discounted\": \"essie_price--discounted\",\n \"path\": \"path\",\n \"circle\": \"circle\",\n \"essie_typing-progressbar--dot-animation\": \"_essie_typing-progressbar--dot-animation_ib73n_1\"\n};", "import * as React from 'react'\n\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\nimport { UIOrderFormProps } from '.'\nimport { useChangeOrderByQuery } from '@qwerty.software/ui-order-form/src/hooks/use-change-order-by-query'\n\nimport { AcademicLevel } from 'components/form-fields/academic-level'\nimport { PaperType } from 'components/form-fields/paper-type'\nimport { Deadline } from 'components/form-fields/deadline'\nimport { Quantity } from 'components/form-fields/quantity'\nimport { CalculatorFooter } from './components/calculator-footer'\nimport { useFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\nimport { InnerConfigs } from '@qwerty.software/ui-order-form/src/templates/_decorator/configs-context'\n\nexport interface ICalculatorProps extends UIOrderFormProps {\n cashback?: number\n discount?: InnerConfigs['discount']\n}\n\nexport const UIOrderForm = React.memo(({ cashback, discount }) => {\n const d = useDictionary()\n const { formDifference } = useFormContext()\n\n useChangeOrderByQuery()\n\n const CalculatorFooterComponent = formDifference?.calculator?.Footer || CalculatorFooter\n\n return (\n
\n
{d('title')}
\n
\n \n \n \n \n
\n \n
\n )}\n)\n", "import { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\n\nimport _toNumber from 'lodash/toNumber'\n\nimport QueryStorage from 'store/providers/query'\n\nimport useAction from 'hooks/useAction'\n\nimport { orderSlice, HYDRATED } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { useBootstrapDataQuery } from 'store/api/botstrap-data'\nimport { stepActions } from '@qwerty.software/ui-order-form/src/store/slices/step/slice-creator'\nimport { CHANGEBLE_FROM_QUERY_FIELDS, GO_TO_LAST_STEP } from './constants'\n\nimport type { IChangableFieldConfigs } from './types'\n\nconst LAST_STEP_INDEX = 2\n\nexport const useChangeOrderByQuery = () => {\n const { pathname, search, hash } = useLocation()\n const { data, isSuccess, isLoading } = useBootstrapDataQuery()\n const changeStep = useAction(stepActions.go)\n\n const orderHydrated = useSelector(HYDRATED)\n const change = useAction(orderSlice.actions.change)\n\n useEffect(() => {\n if (!isLoading && isSuccess && orderHydrated) {\n const searchParams = new URLSearchParams(search)\n const keyValuesFromQuery = {}\n\n // @ts-ignore\n for (const [key, value] of searchParams.entries()) {\n if (key && value) {\n keyValuesFromQuery[key] = value\n }\n }\n let targetFieldsConfigs: IChangableFieldConfigs = {}\n\n Object.entries(CHANGEBLE_FROM_QUERY_FIELDS).forEach(([changableKey, changableConfig]) => {\n if (keyValuesFromQuery[changableKey]) {\n targetFieldsConfigs = { ...targetFieldsConfigs, [changableKey]: changableConfig }\n }\n })\n\n if (Object.keys(targetFieldsConfigs).length) {\n Object.entries(targetFieldsConfigs).forEach(([targetFieldKey, targetFieldConfig]) => {\n let value\n switch (targetFieldConfig.valueType) {\n case 'number':\n value = _toNumber(searchParams.get(targetFieldKey))\n break\n case 'array':\n const additionalFeaturesParam = searchParams.get('additionalFeatures')\n const additionalFeaturesArray = decodeURIComponent(additionalFeaturesParam).split(',').map(Number).filter(num => !isNaN(num))\n value = additionalFeaturesArray\n break\n case 'object':\n const softwareQueryParam = searchParams.get(targetFieldKey)\n if (softwareQueryParam) {\n const softwareObject = JSON.parse(decodeURIComponent(softwareQueryParam))\n value = softwareObject\n }\n break\n case 'boolean':\n const booleanValue = searchParams.get(targetFieldKey)\n value = booleanValue === 'true'\n break\n default:\n value = searchParams.get(targetFieldKey)\n break\n }\n const changeAndClear = (key: string, value: any) => {\n change({ key, value })\n searchParams.delete(key)\n QueryStorage.removeItem(key)\n\n if (searchParams.get(GO_TO_LAST_STEP)) {\n searchParams.delete(GO_TO_LAST_STEP)\n QueryStorage.removeItem(GO_TO_LAST_STEP)\n changeStep(LAST_STEP_INDEX)\n }\n }\n\n // @ts-ignore\n if (targetFieldConfig.bdKey && Array.isArray(data[targetFieldConfig.bdKey]) && !!data[targetFieldConfig.bdKey].find(bdItem => bdItem.id === value)) {\n changeAndClear(targetFieldKey, value)\n }\n\n if (!targetFieldConfig.bdKey) {\n changeAndClear(targetFieldKey, value)\n }\n\n window.history.replaceState(null, '', `${pathname}?${searchParams.toString()}${hash}`)\n })\n }\n }\n }, [isLoading, isSuccess, orderHydrated, search, data])\n}\n", "import queryString from 'query-string'\n\nimport localforage from 'store/localforage'\n\nimport { Storage } from 'redux-persist'\n\nclass QueryStorage implements Storage {\n\n link: HTMLAnchorElement = document.createElement('A') as HTMLAnchorElement\n\n static hasItem = (key: string) => Boolean(queryString.pick((window as any).location.search, [key]))\n static removeItem = (key: string) => Boolean(queryString.pick((window as any).location.search, [key]))\n\n constructor(\n private fieldKey: string,\n private keyTransformer = (key: string): string => key,\n ) { }\n\n getItem = async (key: string) => {\n const value = queryString.parse((window as any).location.search)[key]\n\n return JSON.stringify({ [this.fieldKey]: `${value}` })\n }\n\n setItem = async (key: string, value: any) => {\n await localforage.setItem(this.keyTransformer(key), value)\n\n const link = document.createElement('A') as HTMLAnchorElement\n link.href = (window as any).location.href\n const { pathname, hash } = link\n\n let query: queryString.ParsedQuery | string = queryString.parse((window as any).location.search)\n query[key] = JSON.parse(value)[this.fieldKey]\n\n // eslint-disable-next-line no-empty\n try { query[key] = JSON.parse(query[key] as string) } catch (error) { }\n\n query = queryString.stringify(query)\n query = query ? `?${query}` : ''\n\n window.history.replaceState({}, '', `${pathname}${query}${hash}`)\n }\n\n removeItem = async (key: string) => {\n await localforage.removeItem(this.keyTransformer(key))\n\n const link = document.createElement('A') as HTMLAnchorElement\n link.href = (window as any).location.href\n const { pathname, hash } = link\n\n let query: queryString.ParsedQuery | string = queryString.parse((window as any).location.search)\n delete query[key]\n query = queryString.stringify(query)\n query = query ? `?${query}` : ''\n\n window.history.replaceState({}, '', `${pathname}${query}${hash}`)\n }\n\n}\n\nexport default QueryStorage\n", "import { useSelector } from 'react-redux'\n\nimport { BOOTSTRAP_DATA } from 'global-entities/bootstrap-data/slice'\n\n// TODO: remove legacy mock\nexport const useBootstrapDataQuery = () => ({\n \"data\": useSelector(BOOTSTRAP_DATA),\n \"isLoading\": false,\n \"status\": \"fulfilled\",\n \"endpointName\": \"bootstrapData\",\n \"requestId\": \"mock\",\n \"startedTimeStamp\": 0,\n \"isUninitialized\": false,\n \"isSuccess\": true,\n \"isError\": false,\n \"isFetching\": false\n})\n\n// import { Promises } from './index'\n\n// import _isPlainObject from 'lodash/isPlainObject'\n\n\n// // import getFromConfigs from 'helpers/configs/get-from-configs'\n// // import { PROJECT_DOMAIN } from 'constants/configs'\n\n// import { fetchBootstrapData } from 'global-entities/bootstrap-data/actions'\n\n// // import { PickedBdFields } from '@qwerty.software/ui-order-form/src/store/constants'\n// enum PickedBdFields {\n// paperTypes = 'paperTypes',\n// paperTypeGroups = 'paperTypeGroups',\n// subjects = 'subjects',\n// academicLevels = 'academicLevels',\n// paperFormats = 'paperFormats',\n// workTypes = 'workTypes',\n// deadlines = 'deadlines',\n// spacings = 'spacings',\n// writerCategories = 'writerCategories',\n// additionalFeatures = 'additionalFeatures',\n// softwares = 'softwares',\n// softcopies = 'softcopies',\n// speakerNotes = 'speakerNotes',\n// prices = 'prices',\n// currencies = 'currencies'\n\n// }\n\n// export const NAME = 'bootstrap.data' as const\n\n// // Define a service using a base URL and expected endpoints\n// export const bootstrapApi = Promises.injectEndpoints({\n// endpoints: (builder) => ({\n// bootstrapData: builder.query({\n// query() {\n// return {\n// promise: fetchBootstrapData\n// }\n// },\n// // query: (keys) => {\n// // const url = new URL(window.location.origin)\n\n// // url.pathname = `bootstrap-data/mc/${'speedypaper.com'}`\n\n// // if (typeof keys === 'string' && keys.length > 0) {\n// // keys = [keys]\n// // }\n\n// // if (Array.isArray(keys) && keys.length > 0) {\n// // url.searchParams.set('wildcard', keys.join(','))\n\n// // return url.pathname.slice(1) + url.search\n// // }\n\n// // return url.pathname.slice(1)\n// // },\n// transformResponse: (data: GS['bootstrapData']) => {\n// if (!_isPlainObject(data)) {\n// return data\n// }\n\n// const toTransform: GS['bootstrapData'] = { ...data }\n\n// // if (data && _isPlainObject(data[PickedBdFields.writerCategories])) {\n// // data[PickedBdFields.writerCategories] = Object.values(data[PickedBdFields.writerCategories])\n// // }\n\n// // if (data && _isPlainObject(data[PickedBdFields.additionalFeatures])) {\n// // data[PickedBdFields.additionalFeatures] = Object.values(data[PickedBdFields.additionalFeatures])\n// // }\n\n// // if (data && _isPlainObject(data[PickedBdFields.softcopies])) {\n// // data[PickedBdFields.softcopies] = Object.values(data[PickedBdFields.softcopies])[0]\n// // }\n\n// // if (data && _isPlainObject(data[PickedBdFields.speakerNotes])) {\n// // data[PickedBdFields.speakerNotes] = Object.values(data[PickedBdFields.speakerNotes])[0]\n// // }\n\n// // transform for price calculator\n// toTransform.priceCalculatorAdapted = {\n// bdPrices: data[PickedBdFields.prices],\n// bdPaperTypeGroups: data[PickedBdFields.paperTypeGroups],\n// bdPaperTypes: data[PickedBdFields.paperTypes],\n// bdAcademicLevels: data[PickedBdFields.academicLevels],\n// bdSpacings: data[PickedBdFields.spacings],\n// bdSubjects: data[PickedBdFields.subjects],\n// bdSoftwares: data[PickedBdFields.softwares],\n// bdWriterCategories: data[PickedBdFields.writerCategories],\n// bdAdditionalFeatures: data[PickedBdFields.additionalFeatures],\n// bdSoftcopies: data[PickedBdFields.softcopies],\n// bdSpeakerNotes: data[PickedBdFields.speakerNotes],\n// bdCurrencies = data[PickedBdFields.currencies],\n// }\n\n// return toTransform\n// },\n// }),\n// }),\n// })\n\n// // Export hooks for usage in functional components, which are\n// // auto-generated based on the defined endpoints\n// export const { useBootstrapDataQuery } = bootstrapApi\n", "import { createSelector } from '@reduxjs/toolkit'\n\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\n\nimport type { BootstrapData } from 'types/BootstrapData'\n\nconst GET_STATE = () => getBootstrapData()\n\nexport const BOOTSTRAP_DATA = createSelector(GET_STATE, (state) => state)\nexport const BOOTSTRAP_DATA_FIELD = (k: TKey) => createSelector(BOOTSTRAP_DATA, (state) => state[k])", "import { FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { PickedBdFields } from '@qwerty.software/ui-order-form/src/store/slices/order/constants'\nimport { IChangableFieldConfigs } from './types'\n\nexport const GO_TO_LAST_STEP = 'goToLastStep'\n\n export const CHANGEBLE_FROM_QUERY_FIELDS: IChangableFieldConfigs = {\n [FieldNames.SUBJECT]: {\n bdKey: PickedBdFields.subjects,\n valueType: 'number',\n },\n [FieldNames.PAPER_TYPE]: {\n bdKey: PickedBdFields.paperTypes,\n valueType: 'number',\n },\n [FieldNames.WORK_TYPE]: {\n bdKey: PickedBdFields.workTypes,\n valueType: 'number',\n },\n [FieldNames.SPACING]: {\n bdKey: PickedBdFields.spacings,\n valueType: 'number',\n },\n [FieldNames.PAPER_FORMAT]: {\n bdKey: PickedBdFields.paperFormats,\n valueType: 'number',\n },\n [FieldNames.ACADEMIC_LEVEL]: {\n bdKey: PickedBdFields.academicLevels,\n valueType: 'number',\n },\n [FieldNames.DEADLINE]: {\n bdKey: PickedBdFields.deadlines,\n valueType: 'number',\n },\n [FieldNames.WRITER_CATEGORY]: {\n bdKey: PickedBdFields.writerCategories,\n valueType: 'number',\n },\n [FieldNames.TOPIC]: {\n valueType: 'string',\n },\n [FieldNames.PAPER_DETAILS]: {\n valueType: 'string',\n },\n [FieldNames.QUANTITY_KEY]: {\n valueType: 'string',\n },\n [FieldNames.QUANTITY]: {\n valueType: 'string',\n },\n [FieldNames.WORDS]: {\n valueType: 'string',\n },\n [FieldNames.ADDITIONAL_FEATURES]: {\n valueType: 'array',\n },\n [FieldNames.SLIDES]: {\n valueType: 'number',\n },\n [FieldNames.SPEAKER_NOTES]: {\n valueType: 'boolean',\n },\n [FieldNames.SOURCES]: {\n valueType: 'number',\n },\n [FieldNames.SOFT_COPIES]: {\n valueType: 'boolean'\n },\n [FieldNames.SOFTWARE]: {\n valueType: 'object'\n }\n}", "import { memo, useMemo } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { value } from '@qwerty.software/ui-order-form/src/store/slices/order'\n\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\n\nimport { FieldBox } from './../../fieldbox'\nimport { SelectField } from '../_common/select'\n\nimport { FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\n\ninterface AcademicLevelProps { }\n\nexport const AcademicLevel = memo(() => {\n const { academicLevels } = getBootstrapData()\n const filteredAcademicLevels = useMemo(() => academicLevels.filter(item => item.text !== \"Admissions\"), [academicLevels])\n\n const academicLevel = useSelector(value(FieldNames.ACADEMIC_LEVEL))\n\n const d = useDictionary()\n\n return (\n \n \n \n )\n})\n", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport Tooltip from './../tooltip'\nimport { TooltipProps } from './../tooltip'\n\nexport interface FieldBoxProps extends React.HTMLAttributes{\n htmlFor?: string\n label?: React.ReactNode\n tooltip?: string | boolean | React.ReactNode\n hint?: React.ReactNode\n className?: string\n tooltipAlign?: TooltipProps['align']\n error?: boolean\n disableErrorAnimation?: boolean\n required?: boolean\n topHint?: string | React.ReactNode | null\n children: React.ReactNode\n contentRef?: React.Ref\n}\n\nexport const FieldBox = React.memo(({\n htmlFor,\n label,\n tooltip,\n hint,\n className,\n tooltipAlign = {\n mdUp: 'right-middle',\n mdDown: 'right-middle',\n },\n error = false,\n disableErrorAnimation = false,\n required = false,\n topHint,\n\n children,\n\n contentRef,\n\n ...fieldBoxProps\n}) => (\n
\n {label\n ? htmlFor\n ? \n : \n {label}{required ? ( *) : null}\n \n : null\n }\n
\n {topHint ?
{topHint}
: null}\n {children}\n
\n {tooltip ? (\n
\n \n
\n ) : null}\n {hint ? (\n
\n {hint}\n
\n ) : null}\n {typeof error === 'string' ? (\n
\n {error}\n
\n ) : null}\n
\n))\n", "import * as React from 'react'\nimport clsx from 'clsx'\n\nimport useTooltip from '@qwerty.software/mono-ui-tooltip'\n\nimport { useMedia } from 'ui/_responsive'\n\nimport '@qwerty.software/mono-ui-tooltip/lib/variant_default/index.css'\nimport { useFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\ntype TPlacements = 'right-top' | 'right-middle' | 'right-bottom' | 'left-top' | 'left-middle' | 'left-bottom' | 'center-top' | 'center-middle' | 'center-bottom'\n\nexport interface TooltipProps {\n text: string\n\n align?: {\n mdUp?: TPlacements\n mdDown?: TPlacements\n } | TPlacements\n\n freeze?: React.MutableRefObject\n disabled?: boolean\n\n className?: string\n tooltipTextClassName?: string\n\n children?: React.ReactNode | string\n}\n\nconst Tooltip: React.FC = ({\n text,\n\n freeze,\n disabled,\n\n align={\n mdUp: 'right-middle',\n mdDown: 'left-middle',\n },\n\n className,\n tooltipTextClassName,\n\n children,\n}) => {\n const { formDifference } = useFormContext()\n\n const smUp = useMedia('sm', 'up')\n\n const [alignXMdUp, alignYMdUp] = (typeof align === 'string' ? align : align.mdUp).split('-')\n const [alignXMdDown, alignYMdDown] = (typeof align === 'string' ? align : align.mdDown).split('-')\n\n const alignX = smUp ? alignXMdUp : alignXMdDown\n const alignY = smUp ? alignYMdUp : alignYMdDown\n\n const gapX = 10\n const gapY = 10\n\n const [ref] = useTooltip(\n \n {text}\n ,\n [alignX, alignY, text],\n {\n align: {\n x: alignX as \"left\" | \"right\" | \"center\",\n y: alignY as \"top\" | \"bottom\" | \"middle\",\n },\n gap: {\n x: gapX,\n y: gapY,\n },\n disabled,\n triggers: formDifference?.tooltip?.triggers,\n },\n )\n\n const handleMouseEnter = React.useCallback(() => {\n if (!freeze) {\n return\n }\n\n freeze.current = true\n }, [freeze])\n\n const handleMouseLeave = React.useCallback(() => {\n if (!freeze) {\n return\n }\n\n freeze.current = false\n }, [])\n\n return (\n \n {children || '?'}\n \n )\n}\n\nexport default Tooltip", "import * as React from 'react'\n// @ts-ignore\nimport scssBreakpoints from './breakpoints.module.scss'\n\nexport const _breakpoints = {\n xxs: parseInt(scssBreakpoints.xxs),\n xs: parseInt(scssBreakpoints.xs),\n sm: parseInt(scssBreakpoints.sm),\n md: parseInt(scssBreakpoints.md),\n lg: parseInt(scssBreakpoints.lg),\n xl: parseInt(scssBreakpoints.xl),\n} as const\n\nexport type Breakpoint = keyof typeof _breakpoints | Uppercase\nexport type Direction = 'up' | 'down' | Uppercase<'up' | 'down'>\n\nfunction useMedia(breakpoint: Breakpoint, direction: Direction, defaultMatches = false, breakpoints=_breakpoints) {\n const [matches, setMatches] = React.useState(defaultMatches)\n const _direction = direction.toLowerCase() === 'up' ? 'min' : 'max'\n const _breakpoint = breakpoint.toLowerCase() as Breakpoint\n const _thresholdValue = _direction === 'min' ? breakpoints[_breakpoint] : breakpoints[_breakpoint] - 1\n\n React.useEffect(() => {\n const mediaQuery = window.matchMedia(`(${_direction}-width: ${_thresholdValue}px)`)\n\n const handleChange = () => {\n setMatches(mediaQuery.matches)\n }\n\n mediaQuery.addEventListener('change', handleChange)\n\n handleChange()\n\n return () => {\n mediaQuery.removeEventListener('change', handleChange)\n }\n }, [_breakpoint, _direction])\n\n return matches\n}\n\nexport default useMedia", "import 'css-chunk:../../shared/ui/_responsive/breakpoints.module.scss';export default {\n \"xxs\": \"450\",\n \"xs\": \"650\",\n \"sm\": \"768\",\n \"md\": \"992\",\n \"lg\": \"1200\",\n \"xlg\": \"1260\",\n \"xl\": \"1400\",\n \"xxl\": \"1681\"\n};", "import {default as baseUseMedia, type Breakpoint as BaseBreakpoint, type Direction} from './base'\nimport scssBreakpoints from './breakpoints.module.scss'\n\nexport const breakpoints = {\n xs: parseInt(scssBreakpoints.xs),\n sm: parseInt(scssBreakpoints.sm),\n md: parseInt(scssBreakpoints.md),\n lg: parseInt(scssBreakpoints.lg),\n xl: parseInt(scssBreakpoints.xl),\n xxl: parseInt(scssBreakpoints.xxl),\n} as const\n\nexport type Breakpoint = keyof typeof breakpoints | Uppercase\n\n// !!!!!! HERE USED COMMON BREAKPOINTS THAT IS THE SAME AS IN Landing Repo, microservices-hub, em-microservices-hub etc.\n\nexport const useMedia = (\n breakpoint: Breakpoint,\n direction: Direction\n) => baseUseMedia(\n breakpoint as BaseBreakpoint,\n direction,\n Boolean(window.matchMedia(`(${direction.toLowerCase() === 'up' ? 'min' : 'max'}-width: ${breakpoints[breakpoint.toLowerCase()]}px)`).matches),\n breakpoints as any\n)\n", "import { useCallback, FC } from 'react'\nimport clsx from 'clsx'\n\nimport Select, { Option, ChangeHandler, OptGroupProps } from '@qwerty.software/mono-ui-select'\n\nimport useAction from 'hooks/useAction'\n\nimport { FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { orderSlice } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { useFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\nimport '@qwerty.software/mono-ui-select/lib/variant_default/index.css'\n\ninterface ISelectFieldFrops {\n bd:\n GS['bootstrapData']['academicLevels'] |\n GS['bootstrapData']['deadlines'] |\n GS['bootstrapData']['paperFormats'] |\n GS['bootstrapData']['paperTypes'] |\n GS['bootstrapData']['subjects'] |\n GS['bootstrapData']['workTypes'] |\n GS['bootstrapData']['spacings']\n fieldName: FieldNames\n value: number | string\n className?: string\n\n disabled?: boolean\n\n optionsList?: OptGroupProps['children']\n}\n\nexport const SelectField: FC = ({ bd, fieldName, value, className, disabled, optionsList }) => {\n const { entity } = useFormContext()\n\n const change = useAction(orderSlice.actions.change)\n const handleChange = useCallback(({ target }) => {\n // for paperFormat - prevent set value for \"...\" option\n if (+target.value === -1) return\n\n change({ key: fieldName, value: parseInt(`${target.value}`, 10), entity })\n }, [entity, fieldName])\n\n return (\n \n {Boolean(optionsList)\n ? optionsList\n : bd.map(({ id, text }) => (\n \n )\n )}\n \n )\n}\n", "import * as React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { value } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\n\nimport { FieldBox } from './../../fieldbox'\nimport { SelectField } from '../_common/select'\n\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\n\ninterface IPaperTypeProps { }\n\nexport const PaperType = React.memo(() => {\n const paperType = useSelector(value(FieldNames.PAPER_TYPE))\n\n let { paperTypes } = getBootstrapData()\n paperTypes = React.useMemo(() => paperTypes.filter((bdPaperType) => !bdPaperType?.deprecated || paperType === bdPaperType.id), [paperType, paperTypes])\n\n const d = useDictionary()\n\n return (\n \n \n \n )\n})\n", "import { memo } from 'react'\nimport { useSelector } from 'react-redux'\nimport _sortBy from 'lodash/sortBy'\n\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\n\nimport { FieldBox } from './../../fieldbox'\n\nimport { useDeadlineHelper } from './use-deadline-helper'\n\nimport { FieldNames } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { value } from '@qwerty.software/ui-order-form/src/store/slices/order'\n\nimport { SelectField } from '../_common/select'\nimport { getDeadlines } from './get-deadlines'\n\ninterface IDeadlineProps { }\n\nexport const Deadline = memo(() => {\n const d = useDictionary()\n\n const deadlines = getDeadlines()\n const deadline = useSelector(value(FieldNames.DEADLINE))\n\n const { time, date } = useDeadlineHelper({ deadlines, id: deadline })\n\n return (\n \n \n \n )\n})\n", "import moment from 'moment'\nimport { useMemo } from 'react'\nimport { BootstrapData } from 'types/BootstrapData'\n\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\n\ninterface IDeadlineHelper {\n deadlines: BootstrapData.IDeadline[]\n id?: number | string\n}\n\nexport const useDeadlineHelper = ({\n deadlines,\n id,\n}: IDeadlineHelper) => {\n const d = useDictionary()\n const timeFormat = d('moment.deadline.time') as string | null\n const dateFormat = d('moment.deadline.date') as string | null\n const deadline = useMemo(() => deadlines.find(deadline => +deadline.id === +id), [deadlines, id])\n\n if (!deadline) {\n return {\n time: null,\n date: null,\n }\n }\n\n const date = moment().add(deadline.num, deadline.type)\n\n return {\n time: timeFormat ? `${date.format(timeFormat).toLowerCase()}` : '',\n date: dateFormat ? `${date.format(dateFormat)}` : '',\n }\n}\n", "import _sortBy from 'lodash/sortBy'\n\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\n\nimport { useDisabled } from './use-disabled'\n\nexport const getDeadlines = () => {\n let { deadlines } = getBootstrapData()\n\n deadlines = useDisabled(deadlines)\n deadlines = _sortBy(deadlines, 'hours')\n\n return deadlines\n}\n", "import { useMemo } from \"react\"\nimport { useSelector } from \"react-redux\"\n\nimport { getBootstrapData } from \"global-entities/bootstrap-data/utils/get\"\n\nimport { FieldNames, DeadlineIds } from \"@qwerty.software/ui-order-form/src/store/constants\"\nimport { value } from \"@qwerty.software/ui-order-form/src/store/slices/order\"\nimport { disabledDeadlinesByAcademicLevel, disabledDeadlinesByWorkType, subjectFlagToDisableDeadline } from \"@qwerty.software/ui-order-form/src/store/slices/order/fields-relations/constants\"\n\nimport type { BootstrapData } from \"store/types\"\n\nexport const useDisabled = (deadlines: BootstrapData.IDeadline[]) => {\n const { subjects } = getBootstrapData()\n\n const workType = useSelector(value(FieldNames.WORK_TYPE))\n const academicLevel = useSelector(value(FieldNames.ACADEMIC_LEVEL))\n\n const subject = useSelector(value(FieldNames.SUBJECT))\n const bdSubject = subjects.find(({ id }) => id === subject)\n\n return useMemo(() => {\n if (disabledDeadlinesByAcademicLevel[academicLevel]) {\n deadlines = deadlines.filter(({ id }) => !disabledDeadlinesByAcademicLevel[academicLevel].includes(id))\n }\n\n if (disabledDeadlinesByWorkType[workType]) {\n deadlines = deadlines.filter(({ id }) => !disabledDeadlinesByWorkType[workType].includes(id))\n }\n\n if (bdSubject?.[subjectFlagToDisableDeadline]) {\n deadlines = deadlines.filter(({ id }) => id !== DeadlineIds.FOUR_HOURS)\n }\n\n return deadlines\n }, [deadlines, academicLevel, workType, bdSubject])\n}", "import * as React from 'react'\nimport { useSelector } from 'react-redux'\nimport _capitilize from 'lodash/capitalize'\n\nimport { useConfigsContext } from './../../../templates/_decorator/configs-context'\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\n\nimport { FieldBox } from '././../../fieldbox'\nimport { QuantityField } from './field'\nimport PagesWordsSwitcher from './pages-words-switcher'\n\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { value } from '@qwerty.software/ui-order-form/src/store/slices/order'\n\nimport { useHint } from './useHint'\nimport clsx from 'clsx'\n\ninterface IQuantity {\n quantityKeyAsLabel?: boolean\n}\n\nexport const Quantity = React.memo(({ quantityKeyAsLabel = true }) => {\n const { disablePageWordsSwitcher } = useConfigsContext()\n const d = useDictionary()\n\n const quantityKey = useSelector(value(FieldNames.QUANTITY_KEY))\n\n const fieldName = React.useMemo(() => quantityKey === QuantityKeys.WORDS ? FieldNames.WORDS : FieldNames.QUANTITY, [quantityKey])\n\n const hint = useHint({ quantityKeyAsLabel })\n\n const tooltip = React.useMemo(() => {\n switch (quantityKey) {\n case QuantityKeys.PROBLEMS: {\n return d('tooltips.quantity.problems')\n }\n case QuantityKeys.WORDS: {\n return d('tooltips.quantity.words')\n }\n case QuantityKeys.QUESTIONS: {\n return undefined\n }\n default: {\n return d('tooltips.quantity.pages')\n }\n }\n }, [quantityKey])\n\n const label = React.useMemo(() => {\n switch (true) {\n case quantityKey === QuantityKeys.QUESTIONS:\n case quantityKey === QuantityKeys.PROBLEMS: {\n return _capitilize(quantityKey)\n }\n\n default: {\n return d('labels.quantity')\n }\n }\n }, [quantityKey])\n\n return (\n \n
\n \n {(!disablePageWordsSwitcher && (quantityKey === QuantityKeys.PAGES || quantityKey === QuantityKeys.WORDS)) && (\n \n )}\n
\n \n )\n})\n", "import { useMemo, FC } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { MAX_QUANTITY, value } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { NumberInputField } from '../_common/number-input'\n\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\n\nimport '@qwerty.software/mono-ui-number-input/lib/variant_default/index.css'\n\ninterface IQuantityField { }\n\nexport const QuantityField: FC = () => {\n const quantity = useSelector(value(FieldNames.QUANTITY))\n const words = useSelector(value(FieldNames.WORDS))\n const quantityKey = useSelector(value(FieldNames.QUANTITY_KEY))\n\n const quantityLimit = useSelector(MAX_QUANTITY)\n\n const fieldName = useMemo(() => quantityKey === QuantityKeys.WORDS ? FieldNames.WORDS : FieldNames.QUANTITY, [quantityKey])\n const fieldValue = useMemo(() => quantityKey === QuantityKeys.WORDS ? words : quantity, [quantityKey, words, quantity])\n\n return (\n \n )\n}\n", "import { useCallback, FC } from 'react'\n\nimport useAction from 'hooks/useAction'\n\nimport NumberInput, { ChangeHandler } from '@qwerty.software/mono-ui-number-input'\n\nimport * as sanitizers from './../../_sanitizers'\n\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { orderSlice } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { useFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\nimport '@qwerty.software/mono-ui-number-input/lib/variant_default/index.css'\n\ninterface INumberInputField {\n fieldName: FieldNames | QuantityKeys,\n max: number\n value: number\n}\n\nexport const NumberInputField: FC = ({ fieldName, max, value }) => {\n const { entity, formDifference } = useFormContext()\n\n const FONT_SIZE = (value: string) => `${1.6 * 6 / (value.length > 6 ? value.length : 6)}rem`\n\n const change = useAction(orderSlice.actions.change)\n\n const handleChange = useCallback((e, value, key) => {\n change({\n key: fieldName,\n value: sanitizers.numberInput(parseInt(`${value}`, 10), max),\n entity })\n }, [fieldName, max, entity])\n\n return (\n \n )\n}\n", "import { DEFAULT_NUMBER_MAX_VALUE } from '@qwerty.software/ui-order-form/src/store/constants'\nimport notify from \"utils/notify\"\n\nexport const numberInput = (value: number, max: number) => {\n if (value < 0 || isNaN(value)) {\n return 0\n }\n\n if (value >= max) {\n Boolean(value < DEFAULT_NUMBER_MAX_VALUE) && notify.warning('Please postpone the deadline to add more pages/words/slides to the order form')\n return max\n }\n\n return value\n}\n", "import * as React from 'react'\nimport clsx from 'clsx'\nimport { useSelector } from 'react-redux'\n\nimport useAction from 'hooks/useAction'\nimport { useFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\nimport UiSwitcher, { ChangeHandler } from '@qwerty.software/mono-ui-switcher'\n\nimport { orderSlice, value } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { PAGES_SWITCHER_KEY, WORDS_SWITCHER_KEY } from '@qwerty.software/ui-order-form/src/store/slices/order/constants'\n\n// import scssVariables from '../../../variables.module.scss'\n\nimport '@qwerty.software/mono-ui-switcher/lib/variant_default/index.css'\nimport '@qwerty.software/mono-ui-switcher/lib/variant_v-buttons/index.css'\n\ninterface SwitcherProps { }\n\nconst PagesWordsSwitcher: React.FC = () => {\n const pagesWordsSwitcher = useSelector(value(FieldNames.PAGES_WORDS_SWITCHER))\n const { entity } = useFormContext()\n\n const change = useAction(orderSlice.actions.change)\n\n const handleChange = React.useCallback((e, checked, key) => {\n change({ key, value: checked ? WORDS_SWITCHER_KEY : PAGES_SWITCHER_KEY, entity })\n }, [pagesWordsSwitcher])\n\n return (\n \n );\n};\n\nexport default PagesWordsSwitcher;\n", "import { useMemo } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport pluralize from 'pluralize'\n\nimport { FieldNames, QuantityKeys } from '@qwerty.software/ui-order-form/src/store/constants'\nimport { value } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { getBootstrapData } from 'global-entities/bootstrap-data/utils/get'\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\n\nexport const useHint = ({ quantityKeyAsLabel }: { quantityKeyAsLabel: boolean }) => {\n const { spacings } = getBootstrapData()\n\n const d = useDictionary()\n\n const quantity = useSelector(value(FieldNames.QUANTITY))\n const quantityKey = useSelector(value(FieldNames.QUANTITY_KEY))\n const words = useSelector(value(FieldNames.WORDS))\n const spacing = useSelector(value(FieldNames.SPACING))\n\n const wordsPerPage = spacings.find(({ id }) => id === spacing)?.wordsCount\n\n return useMemo(() => {\n switch (quantityKey) {\n case QuantityKeys.PAGES: {\n const wordsFromPages = Math.ceil(quantity * wordsPerPage)\n return d('hint.quantity', { amount: `${wordsFromPages}`, quantity: `${pluralize(QuantityKeys.WORDS, wordsFromPages)}` })\n }\n case QuantityKeys.WORDS: {\n return d('hint.quantity', { amount: `${quantity}`, quantity: `${pluralize(QuantityKeys.PAGES, quantity)}` })\n }\n case QuantityKeys.QUESTIONS: {\n return !quantityKeyAsLabel\n ? `Question${quantity > 1 ? 's' : ''}`\n : null\n }\n case QuantityKeys.PROBLEMS: {\n return !quantityKeyAsLabel\n ? `Problem${quantity > 1 ? 's' : ''}`\n : null\n }\n }\n }, [quantity, quantityKey, quantityKeyAsLabel, words, wordsPerPage])\n\n}\n", "import * as React from 'react'\n\nimport { useDictionary } from '@qwerty.software/ui-order-form/src/contexts/dictionary-context'\nimport { useSelector } from 'react-redux'\nimport { CURRENCY } from '@qwerty.software/currency-switcher/src/store/slice'\nimport { PRICE_DATA } from '@qwerty.software/ui-order-form/src/store/slices/price-data'\nimport { useFormContext } from '@qwerty.software/ui-order-form/src/contexts/form-context'\n\nexport const CalculatorFooter: React.FC = () => {\n const { id: formId } = useFormContext()\n const d = useDictionary()\n\n const { symbol } = useSelector(CURRENCY)\n const { priceForCalculatorItems: price } = useSelector(PRICE_DATA)\n\n return (\n
\n

\n {Boolean(d('price.caption'))\n ? \n {d('price.caption')}\n \n : null\n }\n \n {d('price.amount', {\n currency: symbol,\n price: price.toFixed(2),\n })}\n \n

\n \n
\n )\n}\n", "import { useEffect, useCallback } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { useSelector } from 'react-redux'\nimport { ORDER } from '@qwerty.software/ui-order-form/src/store/slices/order'\nimport { CHANGEBLE_FROM_QUERY_FIELDS, GO_TO_LAST_STEP } from './constants'\nimport { OrderValues } from '@qwerty.software/ui-order-form/src/store/slices/order/types'\n\nexport const getQuerySearchFromOrderValues = (orderValues: OrderValues, addToCurrentSearch?: boolean, shouldGoToLastStep?: boolean) => {\n const searchParams = new URLSearchParams(addToCurrentSearch ? window.location.search : '')\n\n Object.entries(CHANGEBLE_FROM_QUERY_FIELDS)\n .filter(([key]) => orderValues.hasOwnProperty(key))\n .forEach(([key, config]) => {\n if(!orderValues[key] || (config.valueType === 'array' && !orderValues[key].length)) {\n return\n }\n searchParams.set(key, config.valueType === 'object' ? encodeURIComponent(JSON.stringify(orderValues[key])) : orderValues[key])\n })\n\n if (shouldGoToLastStep) {\n searchParams.set(GO_TO_LAST_STEP, 'true')\n }\n\n return searchParams\n}\n\nexport const useCopyOrderToClipboard = () => {\n const { pathname } = useLocation()\n\n const orderValues = useSelector(ORDER)\n\n const handleCopyToClipboard = useCallback(() => {\n const searchParams = getQuerySearchFromOrderValues(orderValues, false, true)\n navigator.clipboard.writeText(`${window.location.origin}${pathname}?${searchParams}`)\n\n }, [orderValues])\n\n const handleKeyDown = useCallback((event) => {\n if ((event.metaKey || event.ctrlKey) && event.shiftKey && event.keyCode === 80) {\n event.preventDefault()\n handleCopyToClipboard()\n }\n }, [handleCopyToClipboard])\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown)\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleKeyDown])\n}\n", "import * as React from 'react'\nimport ReactDOM from 'react-dom/client'\n\nimport OrderForm from \"@qwerty.software/ui-order-form/lib/default/calculator\"\n\nimport './styles.scss'\n\nexport function render(mountPoint: HTMLElement) {\n ReactDOM\n .createRoot(mountPoint)\n .render(\n )\n}\n"], "mappings": "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", "names": ["require_assignMergeValue", "__commonJSMin", "exports", "module", "baseAssignValue", "eq", "assignMergeValue", "object", "key", "value", "require_safeGet", "__commonJSMin", "exports", "module", "safeGet", "object", "key", "require_toPlainObject", "__commonJSMin", "exports", "module", "copyObject", "keysIn", "toPlainObject", "value", "require_baseMergeDeep", "__commonJSMin", "exports", "module", "assignMergeValue", "cloneBuffer", "cloneTypedArray", "copyArray", "initCloneObject", "isArguments", "isArray", "isArrayLikeObject", "isBuffer", "isFunction", "isObject", "isPlainObject", "isTypedArray", "safeGet", "toPlainObject", "baseMergeDeep", "object", "source", "key", "srcIndex", "mergeFunc", "customizer", "stack", "objValue", "srcValue", "stacked", "newValue", "isCommon", "isArr", "isBuff", "isTyped", "require_baseMerge", "__commonJSMin", "exports", "module", "Stack", "assignMergeValue", "baseFor", "baseMergeDeep", "isObject", "keysIn", "safeGet", "baseMerge", "object", "source", "srcIndex", "customizer", "stack", "srcValue", "key", "newValue", "require_createAssigner", "__commonJSMin", "exports", "module", "baseRest", "isIterateeCall", "createAssigner", "assigner", "object", "sources", "index", "length", "customizer", "guard", "source", "require_merge", "__commonJSMin", "exports", "module", "baseMerge", "createAssigner", "merge", "object", "source", "srcIndex", "require_arrayEvery", "__commonJSMin", "exports", "module", "arrayEvery", "array", "predicate", "index", "length", "require_baseEvery", "__commonJSMin", "exports", "module", "baseEach", "baseEvery", "collection", "predicate", "result", "value", "index", "require_every", "__commonJSMin", "exports", "module", "arrayEvery", "baseEvery", "baseIteratee", "isArray", "isIterateeCall", "every", "collection", "predicate", "guard", "func", "require_moment", "__commonJSMin", "exports", "module", "global", "factory", "hookCallback", "hooks", "setHookCallback", "callback", "isArray", "input", "isObject", "hasOwnProp", "a", "b", "isObjectEmpty", "obj", "k", "isUndefined", "isNumber", "isDate", "map", "arr", "fn", "res", "i", "arrLen", "extend", "createUTC", "format", "locale", "strict", "createLocalOrUTC", "defaultParsingFlags", "getParsingFlags", "m", "some", "fun", "len", "isValid", "flags", "parsedParts", "isNowValid", "createInvalid", "momentProperties", "updateInProgress", "copyConfig", "to", "from", "prop", "val", "momentPropertiesLen", "Moment", "config", "isMoment", "warn", "msg", "deprecate", "firstTime", "args", "arg", "key", "argLen", "deprecations", "deprecateSimple", "name", "isFunction", "set", "mergeConfigs", "parentConfig", "childConfig", "Locale", "keys", "defaultCalendar", "calendar", "mom", "now", "output", "zeroFill", "number", "targetLength", "forceSign", "absNumber", "zerosToFill", "sign", "formattingTokens", "localFormattingTokens", "formatFunctions", "formatTokenFunctions", "addFormatToken", "token", "padded", "ordinal", "func", "removeFormattingTokens", "makeFormatFunction", "array", "length", "formatMoment", "expandFormat", "replaceLongDateFormatTokens", "defaultLongDateFormat", "longDateFormat", "formatUpper", "tok", "defaultInvalidDate", "invalidDate", "defaultOrdinal", "defaultDayOfMonthOrdinalParse", "defaultRelativeTime", "relativeTime", "withoutSuffix", "string", "isFuture", "pastFuture", "diff", "aliases", "addUnitAlias", "unit", "shorthand", "lowerCase", "normalizeUnits", "units", "normalizeObjectUnits", "inputObject", "normalizedInput", "normalizedProp", "priorities", "addUnitPriority", "priority", "getPrioritizedUnits", "unitsObj", "u", "isLeapYear", "year", "absFloor", "toInt", "argumentForCoercion", "coercedNumber", "value", "makeGetSet", "keepTime", "set$1", "get", "daysInMonth", "stringGet", "stringSet", "prioritized", "prioritizedLen", "match1", "match2", "match3", "match4", "match6", "match1to2", "match3to4", "match5to6", "match1to3", "match1to4", "match1to6", "matchUnsigned", "matchSigned", "matchOffset", "matchShortOffset", "matchTimestamp", "matchWord", "regexes", "addRegexToken", "regex", "strictRegex", "isStrict", "localeData", "getParseRegexForToken", "unescapeFormat", "s", "regexEscape", "matched", "p1", "p2", "p3", "p4", "tokens", "addParseToken", "tokenLen", "addWeekParseToken", "addTimeToArrayFromToken", "YEAR", "MONTH", "DATE", "HOUR", "MINUTE", "SECOND", "MILLISECOND", "WEEK", "WEEKDAY", "mod", "n", "x", "indexOf", "o", "month", "modMonth", "defaultLocaleMonths", "defaultLocaleMonthsShort", "MONTHS_IN_FORMAT", "defaultMonthsShortRegex", "defaultMonthsRegex", "localeMonths", "localeMonthsShort", "handleStrictParse", "monthName", "ii", "llc", "localeMonthsParse", "setMonth", "dayOfMonth", "getSetMonth", "getDaysInMonth", "monthsShortRegex", "computeMonthsParse", "monthsRegex", "cmpLenRev", "shortPieces", "longPieces", "mixedPieces", "y", "daysInYear", "getSetYear", "getIsLeapYear", "createDate", "d", "h", "M", "ms", "date", "createUTCDate", "firstWeekOffset", "dow", "doy", "fwd", "fwdlw", "dayOfYearFromWeeks", "week", "weekday", "localWeekday", "weekOffset", "dayOfYear", "resYear", "resDayOfYear", "weekOfYear", "resWeek", "weeksInYear", "weekOffsetNext", "localeWeek", "defaultLocaleWeek", "localeFirstDayOfWeek", "localeFirstDayOfYear", "getSetWeek", "getSetISOWeek", "parseWeekday", "parseIsoWeekday", "shiftWeekdays", "ws", "defaultLocaleWeekdays", "defaultLocaleWeekdaysShort", "defaultLocaleWeekdaysMin", "defaultWeekdaysRegex", "defaultWeekdaysShortRegex", "defaultWeekdaysMinRegex", "localeWeekdays", "weekdays", "localeWeekdaysShort", "localeWeekdaysMin", "handleStrictParse$1", "weekdayName", "localeWeekdaysParse", "getSetDayOfWeek", "day", "getSetLocaleDayOfWeek", "getSetISODayOfWeek", "weekdaysRegex", "computeWeekdaysParse", "weekdaysShortRegex", "weekdaysMinRegex", "minPieces", "minp", "shortp", "longp", "hFormat", "kFormat", "meridiem", "lowercase", "matchMeridiem", "kInput", "pos", "pos1", "pos2", "localeIsPM", "defaultLocaleMeridiemParse", "getSetHour", "localeMeridiem", "hours", "minutes", "isLower", "baseConfig", "locales", "localeFamilies", "globalLocale", "commonPrefix", "arr1", "arr2", "minl", "normalizeLocale", "chooseLocale", "names", "j", "next", "split", "loadLocale", "isLocaleNameSane", "oldLocale", "aliasedRequire", "__require", "getSetGlobalLocale", "values", "data", "getLocale", "defineLocale", "updateLocale", "tmpLocale", "listLocales", "checkOverflow", "overflow", "extendedIsoRegex", "basicIsoRegex", "tzRegex", "isoDates", "isoTimes", "aspNetJsonRegex", "rfc2822", "obsOffsets", "configFromISO", "l", "match", "allowTime", "dateFormat", "timeFormat", "tzFormat", "isoDatesLen", "isoTimesLen", "configFromStringAndFormat", "extractFromRFC2822Strings", "yearStr", "monthStr", "dayStr", "hourStr", "minuteStr", "secondStr", "result", "untruncateYear", "preprocessRFC2822", "checkWeekday", "weekdayStr", "parsedInput", "weekdayProvided", "weekdayActual", "calculateOffset", "obsOffset", "militaryOffset", "numOffset", "hm", "configFromRFC2822", "parsedArray", "configFromString", "defaults", "c", "currentDateArray", "nowValue", "configFromArray", "currentDate", "expectedWeekday", "yearToUse", "dayOfYearFromWeekInfo", "w", "weekYear", "temp", "weekdayOverflow", "curWeek", "createLocal", "skipped", "stringLength", "totalParsedInputLength", "era", "meridiemFixWrap", "hour", "isPm", "configFromStringAndArray", "tempConfig", "bestMoment", "scoreToBeat", "currentScore", "validFormatFound", "bestFormatIsValid", "configfLen", "configFromObject", "dayOrDate", "createFromConfig", "prepareConfig", "configFromInput", "isUTC", "prototypeMin", "other", "prototypeMax", "pickBy", "moments", "min", "max", "ordering", "isDurationValid", "unitHasDecimal", "orderLen", "isValid$1", "createInvalid$1", "createDuration", "Duration", "duration", "years", "quarters", "months", "weeks", "days", "seconds", "milliseconds", "isDuration", "absRound", "compareArrays", "array1", "array2", "dontConvert", "lengthDiff", "diffs", "offset", "separator", "offsetFromString", "chunkOffset", "matcher", "matches", "chunk", "parts", "cloneWithOffset", "model", "getDateOffset", "getSetOffset", "keepLocalTime", "keepMinutes", "localAdjust", "addSubtract", "getSetZone", "setOffsetToUTC", "setOffsetToLocal", "setOffsetToParsedOffset", "tZone", "hasAlignedHourOffset", "isDaylightSavingTime", "isDaylightSavingTimeShifted", "isLocal", "isUtcOffset", "isUtc", "aspNetRegex", "isoRegex", "ret", "diffRes", "parseIso", "momentsDifference", "inp", "positiveMomentsDifference", "base", "createAdder", "direction", "period", "dur", "tmp", "isAdding", "updateOffset", "add", "subtract", "isString", "isMomentInput", "isNumberOrStringArray", "isMomentInputObject", "objectTest", "propertyTest", "properties", "property", "propertyLen", "arrayTest", "dataTypeTest", "item", "isCalendarSpec", "getCalendarFormat", "myMoment", "calendar$1", "time", "formats", "sod", "clone", "isAfter", "localInput", "isBefore", "isBetween", "inclusivity", "localFrom", "localTo", "isSame", "inputMs", "isSameOrAfter", "isSameOrBefore", "asFloat", "that", "zoneDelta", "monthDiff", "wholeMonthDiff", "anchor", "anchor2", "adjust", "toString", "toISOString", "keepOffset", "utc", "inspect", "zone", "prefix", "datetime", "suffix", "inputString", "fromNow", "toNow", "newLocaleData", "lang", "MS_PER_SECOND", "MS_PER_MINUTE", "MS_PER_HOUR", "MS_PER_400_YEARS", "mod$1", "dividend", "divisor", "localStartOfDate", "utcStartOfDate", "startOf", "startOfDate", "endOf", "valueOf", "unix", "toDate", "toArray", "toObject", "toJSON", "isValid$2", "parsingFlags", "invalidAt", "creationData", "matchEraAbbr", "matchEraName", "matchEraNarrow", "matchEraYearOrdinal", "localeEras", "eras", "localeErasParse", "eraName", "abbr", "narrow", "localeErasConvertYear", "dir", "getEraName", "getEraNarrow", "getEraAbbr", "getEraYear", "erasNameRegex", "computeErasParse", "erasAbbrRegex", "erasNarrowRegex", "abbrPieces", "namePieces", "narrowPieces", "addWeekYearFormatToken", "getter", "getSetWeekYear", "getSetWeekYearHelper", "getSetISOWeekYear", "getISOWeeksInYear", "getISOWeeksInISOWeekYear", "getWeeksInYear", "weekInfo", "getWeeksInWeekYear", "weeksTarget", "setWeekAll", "dayOfYearData", "getSetQuarter", "getSetDayOfMonth", "getSetDayOfYear", "getSetMinute", "getSetSecond", "getSetMillisecond", "parseMs", "getZoneAbbr", "getZoneName", "proto", "createUnix", "createInZone", "preParsePostFormat", "proto$1", "get$1", "index", "field", "setter", "listMonthsImpl", "out", "listWeekdaysImpl", "localeSorted", "shift", "listMonths", "listMonthsShort", "listWeekdays", "listWeekdaysShort", "listWeekdaysMin", "mathAbs", "abs", "addSubtract$1", "add$1", "subtract$1", "absCeil", "bubble", "monthsFromDays", "monthsToDays", "daysToMonths", "as", "valueOf$1", "makeAs", "alias", "asMilliseconds", "asSeconds", "asMinutes", "asHours", "asDays", "asWeeks", "asMonths", "asQuarters", "asYears", "clone$1", "get$2", "makeGetter", "round", "thresholds", "substituteTimeAgo", "relativeTime$1", "posNegDuration", "getSetRelativeTimeRounding", "roundingFunction", "getSetRelativeTimeThreshold", "threshold", "limit", "humanize", "argWithSuffix", "argThresholds", "withSuffix", "th", "abs$1", "toISOString$1", "total", "totalSign", "ymSign", "daysSign", "hmsSign", "proto$2", "require_castSlice", "__commonJSMin", "exports", "module", "baseSlice", "castSlice", "array", "start", "end", "length", "require_asciiToArray", "__commonJSMin", "exports", "module", "asciiToArray", "string", "require_unicodeToArray", "__commonJSMin", "exports", "module", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsVarRange", "rsAstral", "rsCombo", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsZWJ", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsSymbol", "reUnicode", "unicodeToArray", "string", "require_stringToArray", "__commonJSMin", "exports", "module", "asciiToArray", "hasUnicode", "unicodeToArray", "stringToArray", "string", "require_createCaseFirst", "__commonJSMin", "exports", "module", "castSlice", "hasUnicode", "stringToArray", "toString", "createCaseFirst", "methodName", "string", "strSymbols", "chr", "trailing", "require_upperFirst", "__commonJSMin", "exports", "module", "createCaseFirst", "upperFirst", "require_capitalize", "__commonJSMin", "exports", "module", "toString", "upperFirst", "capitalize", "string", "NAME", "ORDER_NAMESPACE", "init_constants", "__esmMin", "require_env", "__commonJSMin", "exports", "import_pako", "unzip", "unzip_default", "init_unzip", "p", "data", "compressedData", "unziped", "ys", "pako", "x", "unzip_pusher_data_default", "init_unzip_pusher_data", "store", "next", "action", "modifyedAction", "StoreEventTarget", "store_event_target_default", "init_store_event_target", "type", "listener", "args", "index", "event", "listeners", "singleton", "key", "factory", "options", "handleCreate", "init_singleton", "storeEvents", "eventsMiddlware", "events_default", "init_events", "import_redux_saga", "sagaMiddleware", "sagas_default", "init_sagas", "Cs", "createSagaMiddleware", "isPlainObject", "is_plain_object_default", "init_is_plain_object", "value", "hydrateCheckRequest", "check_request_default", "init_check_request", "register", "payload", "tests", "testName", "RegisteredAbTests", "init_register", "hydrators", "hydrators_default", "init_hydrators", "import_uuid", "AB_TESTS_LIST", "INITIAL_AB_TESTS", "INITIAL_STATE", "acc", "Us", "uuid", "hydrate", "hydrator", "testsMap", "RTK", "slice", "abTestsSlice", "GET_STATE", "AB_TESTS", "CHECK_REQUEST_READY", "init_slice", "qt", "state", "group", "getContainer", "existsRoot", "CONTAINER_ATTR", "container", "setTest", "test", "existsNode", "ATTRS_DOMAIN", "node", "import_toolkit", "abTestsHydarateListener", "init_hydrate_listener", "Bs", "_", "getState", "abTests", "init_store", "SINGLETON_ID", "discountListener", "init_side_effects", "Vs", "import_env", "import_react", "import_redux_persist", "_StoreManager", "StoreManager", "core_default", "init_core", "Ht", "reducers", "ut", "getDefaultMiddleware", "br", "reducer", "persistConfig", "keys", "slices", "_slice", "__publicField", "Nr", "Ws", "builder", "response", "store_exports", "__export", "COOKIE_POLICY_NODE", "setCookiePolicyNode", "initialState", "$s", "buildValidator", "name", "fn", "Error", "build_validator_default", "init_build_validator", "import_notistack", "DEFAULT_OPTIONS", "notify", "notify_default", "init_notify", "messageText", "De", "error", "fileext", "fileName", "getAllowedExtensions", "NotAllowedExtensionError", "materialExtension", "material_extension_default", "init_material_extension", "file", "fileMeta", "ext", "allowedExtensions", "init_exports", "KEY", "initConfigs", "init_init", "prevConfigs", "innerConfigs", "outerConfigs", "configs", "getConfigs", "init_get", "default_default", "init_default", "get_from_configs_default", "init_get_from_configs", "PROJECT_ID", "PROJECT_DOMAIN", "IS_ALIAS_DOMAIN", "ORDER_DATA_DEFAULTS", "SHOULD_DISABLE_USER_CHECK_REQUEST", "ADDITIONAL_QUERY_PARAMS_TO_PARENT_SITE", "SHOULD_USE_SPECIFIC_API", "SPECIFIC_API_URL", "DASHBOARD_SUBDOMAIN", "LIVECHAT_OPTIONS", "IS_NEW_SPEEDYPAPER_DESIGN", "TRACK_TOOL", "FORCE_HIDE_TURNITIN_UPSALE", "init_configs", "AUTHORISATION_STATUSES", "SIGNUP", "DASHBOARD", "SIGNOUT", "CHECK_TRIGGERED", "CHECK", "init_auth", "PAGES", "WORDS", "SWITCHER_BUTTONS", "PAGES_INDEX", "WORDS_INDEX", "init_pagesWordsSwitcher", "button", "orderDataDefaults", "fields_configs_default", "init_fields_configs", "MaxFileSizeError", "material_size_limit_default", "init_material_size_limit", "validation", "baseGetValidatorMapName", "validators_default", "init_validators", "namespace", "getValidatorMapName", "SAGAS_SCHEMA", "FILES_UPLOADER_SLICE", "UPLOAD_FILES_SAGA", "CANCEL_UPLOAD_FILES", "PreloadState", "init_definitions", "createFilesSelector", "createFileSelector", "init_selectors", "validator", "validationResult", "Br", "files", "hash", "write", "CompletedStates", "whitelist", "aborted_default", "init_aborted", "inboundState", "outboundState", "accumulator", "invalid", "uploaded", "hn", "slice_exports", "FILES_UPLOADER_PERSIST_CONFIG", "import_storage", "filesUploaderSlice", "Cn", "fileIndex", "Pn", "localStorage", "applyDiscount", "applyDiscountAction", "appliedDiscount", "Oa", "APPLIED_DISCOUNT", "DISCOUNT_SLICE", "CHECK_SEARCH_PARAM", "APPLY_DISCOUNT_KEY", "APPLY_DISCOUNT_SAGA", "CANCEL_APPLY_DISCOUNT", "DiscountVariant", "NOOP_DISCOUNT", "whitelist_default", "init_whitelist", "discount", "ns", "vn", "DISCOUNT_PERSIST_CONFIG", "discountSlice", "Mn", "code", "rawResponse", "normalizedData", "kn", "convert_string_to_boolean_default", "init_convert_string_to_boolean", "string", "boolean", "isEnabled", "get", "set", "remove", "getRelatedKeys", "local_default", "init_local", "storageItemKey", "storageItemValue", "expiresAt", "share", "session_default", "init_session", "import_isPlainObject", "version", "addVersion", "changeDependsOnENV", "removeOldVersions", "storage", "storage_default", "init_storage", "Hn", "domain", "storageType", "isOuterKey", "shouldCompletelyRemove", "rest", "relatedKeys", "keyVersion", "ignoreExpitesAt", "storageItem", "parsedStorageItem", "Yn", "timestamp", "parsedStorageItemValue", "expires", "date", "UNIVERSAL_UPDATE_ACROSS_STORES", "init_universal_constants", "USER_CHECK", "USER_UPDATE", "USER_AUTHORIZE", "USER_UNAUTHORIZE", "REMOTE_SUCCESS", "ORDER_PAYMENT_SUCCESS", "PERSISTOR_PREFIX", "ORDER_DATA_PERSISTOR_NAME", "init_persistor", "ORDER_DATA_PERSISTOR_KEY", "USER_DATA_KEY", "DESIGN_TYPE", "TEMP_QS_KEY", "REFERRER", "reducer_exports", "reducer_default", "import_isEmpty", "initialStateFromBrowserStorage", "initialStateFromReduxStorage", "defaultState", "init_reducer", "tc", "isEmpty", "CALCULATE_PRICE__ATTEMPT", "CALCULATE_PRICE__SUCCESS", "price_data_exports", "priceDataReducers", "init_price_data", "get_params_default", "init_get_params", "queryParamsString", "queryParamsArray", "queryParamsObject", "param", "paramArray", "paramKey", "paramValue", "manipulate_param_without_refresh_default", "init_manipulate_param_without_refresh", "method", "staticQueryParamsString", "divider", "i", "updatedQueryParamsString", "build_default", "init_build", "values", "make_search_depends_on_env_default", "init_make_search_depends_on_env", "init_query_string", "additionalQueryParams", "currentQueryParams", "query_string_default", "Ma", "Ec", "E2E_KEY", "init_query_params", "E2E_ENABLE", "searchLocalCountryCode", "searchLocalContryCode_default", "init_searchLocalContryCode", "countryCode", "searchLocalIP", "searchLocalIP_default", "init_searchLocalIP", "IP", "searchLocalGeoTag", "searchLocalGeoTag_default", "init_searchLocalGeoTag", "SET_CONTRY_CODE", "SET_IP", "init_types", "geoTagReducers", "save", "import_localforage", "instance", "localforage_default", "init_localforage", "Ba", "localforage", "extractCustomVaraibles", "extractCustomVaraibles_default", "init_extractCustomVaraibles", "params", "LC_EXPERIMENT_CUSTOM_VARIABLES", "initialState_default", "init_initialState", "LOADING", "SET_CUSTOM_VARIABLES", "UPDATE_CUSTOM_VARIABLES", "REF_SET", "OPEN", "INTERACTION", "INTERACTION_SAGA", "import_monolite", "tt", "msName", "LOADED", "REF", "LIVECHAT_OPEN", "open", "Me", "ref", "saga_default", "import_effects", "init_saga", "interactionWithUser", "ro", "interactionWithUser_default", "init_interactionWithUser", "liveChatReducers", "qc", "import_axios", "import_cookie_storage", "axiosTool", "init_axios", "cb", "reqSource", "At", "axios", "reqInstance", "createAxiosResponseInterceptor", "interceptor", "$c", "err", "Qc", "trigger", "on", "off", "custom_event_default", "init_custom_event", "detail", "handler", "USER_CHECKED", "TOGGLE_SPINNER_VISIBILITY", "init_custom_events", "SHOW", "HIDE", "init_visibility_actions", "toggle", "show", "hide", "global_spinner_default", "init_global_spinner", "import_form_data", "import_isBoolean", "reqH", "reqHPromise", "init_request_handler", "cookieStorage", "sl", "requiredDataParams", "advancedDataParams", "queryJwt", "requestOptions", "specificApiUrl", "Ce", "aliasedDomain", "encodedKey", "item", "Qa", "encodedObject", "innerKey", "formData", "al", "FormData", "jwt", "isCookieSessionFlow", "jwtCookieStorage", "requestToolOptions", "il", "isBoolean", "resolve", "reject", "REDESIGN_REFERRER", "REDESIGN_REFERRER_FLAG", "REDESIGN_REFERRER_MARK", "getRedesignReferrer", "setRedesignReferrer", "init_redesign_referrer", "redesignReferrer", "ja", "getTempQuery", "init_temp_query", "AB_TEST_REFERRER", "getABTestReferrer", "init_a_b_test_referrer", "getFromURL", "init_from_url", "query", "abTestReferrer", "issetVisitorFlag", "issetVisitorIsNewFlag", "getVisitor", "setVisitor", "getIsNewVisitor", "setIsNewVisitor", "init_visitor", "visitorId", "isNew", "import_size", "import_js", "import_pluralize", "request", "request_default", "init_request", "is_new", "ei", "_size", "yl", "pluralize", "Sl", "Bugsnag", "INTERIOR_TRACK", "track_exports", "track_default", "track", "no", "errorMessage", "init_track", "import_blueimp_load_image", "reorientImagesMiddleware", "init_reorient_image", "co", "loadImage", "blob", "import_md5", "createUploadFile", "single_file_default", "ResponseError", "EmptyResponseError", "init_single_file", "init_store_manager", "getValidator", "v", "Ol", "md5", "update", "pending", "progress", "fulfilled", "rejected", "token", "cancel", "Il", "result", "progressEvent", "percentCompleted", "store_manager_default", "removeFileAction", "errors", "upload_files_exports", "uploadFilesSagaWatcher", "uploadFilesSaga", "upload", "po", "init_upload_files", "DEFAULT_CURRENCY", "currencySlice", "CURRENCY_SLICE_PERSIST_CONFIG", "CURRENCY", "xl", "oi", "initBootstrapData", "GLOBAL_BOOTSTRAP_DATA_FIELDS", "prevBootstrapData", "bootstrapData", "getBootstrapData", "sessionNotify", "init_session_notify", "text", "timeOut", "extendedTimeOut", "SAGAS_PREFIX", "DEFAULT_NUMBER_MAX_VALUE", "DEFAULT_WORDS_PER_PAGE", "WorkTypeIds", "PaperTypeIds", "PAGES_SWITCHER_KEY", "WORDS_SWITCHER_KEY", "MAX_QUANTITY_KEY", "MAX_SLIDES_KEY", "INITIAL_VALUES", "COMMON_PERSIST_BLACKLIST", "ORDER_SLICE_NAME", "MIN_DEADLINE_WRITING_FROM_SCRATCH", "MIN_DEADLINE_BY_WORKTYPE", "subjectFlagToDisableDeadline", "disabledAdditionalFeaturesByMultiplyChoiseQuestions", "disabledAdditionalFeaturesByPaperType", "disabledDeadlinesByWorkType", "disabledDeadlinesByAcademicLevel", "MAX_PROBLEMS_AND_QUESTIONS_CONFIG", "MAX_SLIDES_AND_PAGES_CONFIG", "AFFECTING_TO_MAX_VALUE_FIELDS", "import_difference", "workTypePaperTypeMirrorRelations", "init_work_type_paper_type", "FieldIds", "RelatedFieldIds", "RelatedFieldName", "defaultValue", "Vl", "_difference", "workTypeRelations", "init_work_type", "disabledDeadlines", "paperTypeRelations", "init_paper_type", "$l", "deadlineRelations", "init_deadline", "pagesWordsSwitcherRelations", "init_pages_words_switcher", "spacingRelations", "init_spacing", "currentSpacing", "getSpacingValue", "spacings", "spacing", "AI_CHECK_REPORT_DISABLED_TOOLTIP", "checker", "additionalFeaturesAIreport", "init_ai_check_report", "spacingValue", "quantity", "quantityKey", "words", "workType", "disabled", "features", "rp", "setMaxPagesSlides", "init_pages_slides_spacing_deadline", "slidesMtl", "wordsMtl", "maxSumFromConfig", "setMaxProblemsQuestions", "init_prodlems_questions_deadline", "maxValue", "maxValueRelations", "init_max_value", "academicLevelRelations", "init_academic_level", "subjectRelations", "init_subject", "subjects", "quantityKeyRelations", "init_quantity_key", "fieldsRelations", "init_fields_relations", "orderSlice", "HYDRATED", "ORDER", "ORDER_LAST_CHANGED_AT", "MAX_QUANTITY", "COMMON_PERSIST_CONFIG", "init_order", "yp", "ni", "ContextPDAdapter", "init_ContextPDAdapter", "order", "currency", "isDiscountData", "import_microservices", "createPriceDataSelector", "createPriceDataValuesSelector", "createCurrentPriceDataSelector", "createBasePriceDataSelector", "lr", "adaptedOrderValues", "priceData", "ci", "calculator", "priceDataBase", "PRICE_DATA", "adaptee", "async_field_default", "init_async_field", "DiscountFacade", "Discount", "G", "discountType", "percent", "sum", "limit", "variant", "discountAmount", "SLICE_NAME", "INITIAL_PRICE_DATA", "priceDataSlice", "PRICE_DATA_USD", "PD_VALUES", "Nt", "import_replace", "import_toNumber", "replacePriceViaCurrency", "init_replace_price_via_currency", "textWithPrice", "priceValuesFromCaption", "modifiedText", "priceValue", "priceValueFromCaption", "Up", "_toNumber", "vp", "_replace", "apply_discount_exports", "applyDiscontSagaWatcher", "disableNotify", "useCheckRoute", "discountMeta", "N", "Fp", "price", "priceActivationSum", "init_apply_discount", "tick", "finish", "js", "B", "Qs", "ft", "Ia", "filesUploaderPersistConfig", "Fe", "Na", "discountPersistConfig", "oc", "rc", "pc", "lc", "Oc", "Ic", "Wa", "Va", "sagas", "Al", "Rl", "saga", "liveChat", "uploadFiles", "bl", "Nl", "Gp", "kp", "variant_default_exports", "buttonClasses", "useTooltip", "module", "__toCommonJS", "React", "d", "import_clsx", "coords", "portal", "anchor", "align", "xCoord", "yCoord", "coords_default", "y", "usePosition", "handlePosition", "k", "portalPoint", "anchorPoint", "use_position_default", "useAnchor", "setAnchor", "P", "prevAnchor", "use_anchor_default", "useOpen", "nodes", "openState", "triggers", "closeDelay", "clickOnly", "mdDown", "isMouseDevice", "isTouchDevice", "_triggers", "_nodes", "E", "setOpen", "delayTimeout", "tooltip", "handleOpen", "e", "handleClose", "handleCloseImidiate", "handleResetTimeout", "target", "handleOutsideClick", "use_open_default", "usePortal", "timeout", "onTransition", "use_portal_default", "callback", "done1", "done2", "import_client", "useRender", "children", "deps", "root", "M", "z", "ReactDOM", "use_render_default", "variables_module_default", "import_jsx_runtime", "L", "_options", "anchorRef", "H", "clsx", "_tooltip", "W", "rm", "Bt", "aw", "tm", "ly", "Vo", "py", "dy", "uy", "my", "fy", "t", "r", "Xu", "o", "a", "ge", "Ey", "optgroup_default", "option_default", "variant_default_default", "s", "context", "l", "Provider", "useSelect", "SelectProvider", "props", "_n", "_v", "handleChange", "C", "context_default", "withSelect", "Component", "S", "form", "onChange", "u", "hoc_default", "select_default", "g", "className", "T", "c", "child", "fullWidth", "readOnly", "_overrideVariant", "b", "xm", "$w", "bm", "Gy", "zo", "By", "Yy", "Hy", "Vy", "Wy", "Om", "Ky", "import_hash_sum", "baseStringify", "base_stringify_default", "baseParse", "base_parse_default", "baseNormalize", "api", "base_normalize_default", "useAPI", "arg", "use_api_default", "useTempState", "setValue", "prevProps", "use_temp_state_default", "useNumberInput", "CHARS_WHITELIST_PATTERN", "CHARS_WHITELIST_WITH_DOT_PATTERN", "NumberInputProvider", "_value", "pattern", "handlers", "hashsum", "K", "withNumberInput", "F", "decreaseButtonProps", "inputProps", "increaseButtonProps", "allowFloat", "min", "max", "stringify", "parse", "normalize", "numberPattern", "fontSizeTransform", "import_ripple_effects", "NOOP_DESTROY", "useRipple", "disableRipple", "rippleOptions", "id", "rippleClass", "destroy", "rippleDestroy", "ripple", "$", "use_ripple_default", "button_default", "q", "Y", "MinusSvg", "J", "minus_svg_default", "decrease_default", "X", "svgButton", "handleDecrease", "Z", "input_default", "handleBlur", "handleKeyDecrease", "handleKeyIncrease", "handleKeyDown", "oe", "ee", "PlusSvg", "re", "plus_svg_default", "increase_default", "ae", "D", "handleIncrease", "se", "ue", "R", "me", "Qm", "Sv", "$m", "BT", "Jo", "YT", "HT", "VT", "WT", "KT", "Wm", "qT", "useSwitcher", "SwitcherProvider", "flagId", "w", "withSwitcher", "labels", "checked", "disableThumb", "flag_default", "I", "label_default", "O", "m", "thumb_default", "leftLabel", "rightLabel", "f", "A", "calculator_exports", "calculator_default", "import_merge", "INITIAL_CONFIGS", "Xi", "FormContext", "Le", "FormProvider", "entity", "formProps", "formDifference", "rawOrder", "hasAdditionalPayment", "loadingEntity", "rawFiles", "formRef", "attrs", "Ji", "_merge", "Ir", "useFormContext", "import_react_router_dom", "ConfigsContext", "pt", "ConfigsProvider", "rs", "useConfigsContext", "import_every", "import_isString", "Template", "reactKey", "before", "after", "str", "flags", "placeholder", "groups", "template", "placeholders", "res", "placeholderToken", "parts", "substr", "_parts", "ls", "_every", "ps", "_isString", "element", "us", "cs", "t_default", "import_get", "INITIAL_DICTIONARY", "dictionary_default", "DictionaryContext", "we", "DictionaryProvider", "dictionary", "Ss", "ms", "useDictionary", "path", "diction", "fs", "_get", "_Initializer", "Initializer", "eventInitDict", "absrtact_initializer_default", "handleInited", "wr", "Js", "mo", "wl", "storeManagerInitializer", "initializer_default", "DEFAULT_SEARCH_PARAM", "checkSearchParamAction", "Yp", "searchParam", "url", "searchParamName", "normalizeSearchParam", "search_param_default", "NamespaceContext", "Lt", "storeInitializer", "useNamespace", "onceSet", "withDiscount", "decorated", "mi", "sended", "filesUploaderListener", "zp", "FILE", "mr", "withFileUploader", "fi", "storeManager", "useSlices", "setSlices", "Oo", "prevSlices", "use_slices_default", "ConfigureNotify", "od", "td", "configure_notify_default", "import_react_redux", "import_constants", "set_design_type_to_storage_default", "isSpeedyPaperId", "useStoreManager", "setStoreManager", "wt", "handleInit", "use_store_manager_default", "StoreGate", "Co", "cd", "persistor", "_i", "sd", "nd", "store_gate_default", "import_omit", "DEFAULT_COUNTRY_CODE", "AuthFieldNames", "getCountryCode", "fallbackCountryCode", "BLACKLIST", "dd", "gi", "_omit", "ud", "Ti", "userSlice", "useAction", "dispatch", "Ed", "fd", "useAction_default", "usePriceActivation", "discountApi", "fr", "priceFullWithoutDiscount", "updateDiscount", "_d", "useDiscount", "bo", "_namespace", "Ee", "_asyncField", "handleCodeChange", "send", "reset", "use_discount_default", "extractFreeFeaturesFromRawOrder", "orderValues", "writerCategoryValue", "additionalFeaturesValue", "feature", "speakerNotesValue", "useCalculate", "showAltPrices", "setPriceData", "overrideValues", "priceCalculatorAdapted", "prices_alt", "withFreeFeaturesValues", "st", "writer", "handleSetPriceData", "prices", "usePriceData", "Ri", "usePriceData_default", "import_toUpper", "convert", "originalPropertyName", "adaptedPropertyName", "originalData", "adaptedData", "adapter_default", "checkTrackerEnabled", "trackAction", "eventName", "google_track_default", "interiorTrack", "interior_track_default", "requiredArgument", "createSet", "action_tracker_default", "getRT", "additionalQueryParamsToParentSite", "IS_NOT_THE_FIRST_CHECK_REQUEST", "getFirstCheck", "setFirstCheck", "getVisitedPages", "setVisitedPage", "REVIEWS_RANGE", "WHITE_DOORS_RANGE", "PPC_RANGE", "SEO_RANGE", "SMM_RANGE", "DOORS_RANGE", "ORGANIC_RANGE", "PUSH_RANGE", "APP_RANGE", "REFFERAL_RANGE", "channelFindOut", "referrer_id", "link_id", "referrer_type_id", "getUserTraficFields", "userData", "fields", "getUserTraficFields_default", "trackMainPage", "xd", "track_main_page_default", "import_sctk_new_get_browser_fingerprint", "toBinary", "source", "codeUnits", "getFingerprint", "fingerprint", "vd", "getBrowserFingerprint", "isAliasDomain", "configsDomain", "DATA_ATTR_OPEN_AUTH_MODAL", "DATA_ATTR_EXISTING_USER_ACTION", "toggle_auth_buttons_default", "userAuthorizationStatus", "openAuthModalBtns", "dashboardBtns", "signoutBtns", "btn", "DISABLE_CHECK_REQUEST", "getParams", "rt", "Oi", "check_default", "getIsAuthorized", "getUserID", "getIsChecked", "useUserData", "udIsAuthorized", "Ci", "isChecked", "check", "Yd", "hook_default", "useVisitorID", "visitorID", "Vd", "Visitor", "useVisitorID_default", "useMarkOrderPageAsVisited", "Pi", "pathname", "qd", "userId", "Kd", "import_throttle", "matches", "expiryDate", "updatedCookie", "cookie", "cookie_default", "KEYS", "cloudflareTracer", "Jd", "keyValue", "cloudflare_default", "CancelToken", "tu", "tracers", "trace", "tracer", "tracers_default", "setCountryCode", "setIP", "COUNTRY_CODE", "useGeoTag", "Er", "Ni", "geoTag_default", "DETAULT_COUNTRY_CODE", "lu", "_throttle", "GeoTag", "cu", "tag", "geo_tag_default", "STEP_SAGA", "number", "num", "go", "MIN_STEP_INDEX", "MAX_STEP_INDEX", "createStepSlice", "steps", "INITIAL_INDEX", "nt", "mu", "xi", "stepSlice", "ACTIVE_STEP", "TITLE", "IS_FIRST", "IS_LAST", "step", "selectors", "stepActions", "STEPS", "import_kebabCase", "DOMAIN", "BotMessageType", "UserMessageType", "startChatBotSaga", "yu", "Tu", "message", "wi", "Li", "slice_default", "Ru", "useClearAfterTime", "Sr", "cleaned", "setCleaned", "Fo", "orderLastChangeAt", "storePersisted", "ConnectPriceData", "Ve", "Iu", "defaultCalculator", "ConnectUserData", "ClearDataViaExpire", "MarkOrderPageAsVisited", "Decorator", "ConnectPriceDataComponent", "hu", "WithDiscountComponent", "WithFileUploaderComponent", "decorator_default", "import_query_string", "QueryStorage", "fieldKey", "keyTransformer", "We", "queryString", "link", "query_default", "BOOTSTRAP_DATA", "Cu", "useBootstrapDataQuery", "Nu", "GO_TO_LAST_STEP", "CHANGEBLE_FROM_QUERY_FIELDS", "LAST_STEP_INDEX", "useChangeOrderByQuery", "search", "wu", "isSuccess", "isLoading", "changeStep", "orderHydrated", "Lu", "change", "xu", "searchParams", "keyValuesFromQuery", "targetFieldsConfigs", "changableKey", "changableConfig", "targetFieldKey", "targetFieldConfig", "vu", "additionalFeaturesParam", "softwareQueryParam", "changeAndClear", "bdItem", "import_mono_ui_tooltip", "Vu", "breakpoints_module_default", "_breakpoints", "useMedia", "breakpoint", "direction", "defaultMatches", "breakpoints", "setMatches", "Yo", "_direction", "_breakpoint", "_thresholdValue", "mediaQuery", "base_default", "Tooltip", "freeze", "tooltipTextClassName", "smUp", "alignXMdUp", "alignYMdUp", "alignXMdDown", "alignYMdDown", "alignX", "alignY", "gapX", "gapY", "$u", "ki", "Mi", "handleMouseEnter", "Fi", "handleMouseLeave", "tooltip_default", "FieldBox", "ju", "htmlFor", "label", "hint", "tooltipAlign", "disableErrorAnimation", "required", "topHint", "contentRef", "fieldBoxProps", "Gi", "import_mono_ui_select", "SelectField", "bd", "fieldName", "optionsList", "om", "Bi", "Wo", "Select", "am", "AcademicLevel", "Ko", "academicLevels", "filteredAcademicLevels", "academicLevel", "im", "Yi", "PaperType", "qo", "paperType", "nm", "paperTypes", "bdPaperType", "Hi", "import_moment", "useDeadlineHelper", "deadlines", "timeFormat", "dateFormat", "deadline", "pm", "lm", "moment", "import_sortBy", "useDisabled", "$o", "subject", "bdSubject", "um", "getDeadlines", "fm", "_sortBy", "Deadline", "_m", "Sm", "time", "Vi", "import_capitalize", "import_mono_ui_number_input", "numberInput", "NumberInputField", "FONT_SIZE", "wm", "Fm", "vm", "NumberInput", "QuantityField", "gr", "quantityLimit", "qi", "fieldValue", "km", "import_mono_ui_switcher", "PagesWordsSwitcher", "pagesWordsSwitcher", "Xm", "jm", "ef", "Jm", "UiSwitcher", "zm", "pages_words_switcher_default", "useHint", "quantityKeyAsLabel", "Dr", "wordsPerPage", "tf", "wordsFromPages", "$i", "Quantity", "Mt", "disablePageWordsSwitcher", "of", "af", "_capitilize", "kt", "sf", "CalculatorFooter", "formId", "symbol", "Qi", "$e", "UIOrderForm", "lf", "cashback", "CalculatorFooterComponent", "Re", "getQuerySearchFromOrderValues", "addToCurrentSearch", "shouldGoToLastStep", "config", "ea", "orderPagePath", "shouldRedirectToParentSite", "parentSiteUrl", "calculatorQueryFlow", "handleSubmit", "searchParamsFromOrderValues", "combinedParams", "ji", "import_client", "import_calculator", "import_jsx_runtime", "render", "mountPoint", "ReactDOM", "OrderForm"] }