kui-basic 1.1.111 → 1.1.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/theme/colors/index.js","../src/theme/shadows/index.js","../src/theme/breakpoints/index.js","../src/theme/settings/index.js","../src/theme/index.js","../../../node_modules/classnames/index.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../src/components/Heading/variants.js","../src/components/Heading/index.js","../src/components/Caption/variants.js","../src/components/Caption/index.js","../src/components/Text/variants.js","../src/components/Text/index.js","../src/components/Button/variants.js","../src/components/Button/index.js","../src/icons/ErrorIcon.js","../src/icons/WarningIcon.js","../src/icons/SuccessIcon.js","../src/components/InputMessage/variants.js","../src/components/InputMessage/index.js","../src/icons/TextareaGrabIcon.js","../src/utils/useForkRef.js","../src/components/Input/index.js","../src/components/InputWithAdornments/index.js","../../../node_modules/imask/esm/core/utils.js","../../../node_modules/imask/esm/core/action-details.js","../../../node_modules/imask/esm/core/holder.js","../../../node_modules/imask/esm/masked/factory.js","../../../node_modules/imask/esm/controls/mask-element.js","../../../node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/imask/esm/controls/input.js","../../../node_modules/imask/esm/core/change-details.js","../../../node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/imask/esm/masked/base.js","../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/imask/esm/masked/regexp.js","../../../node_modules/imask/esm/masked/pattern.js","../../../node_modules/imask/esm/masked/range.js","../../../node_modules/imask/esm/masked/date.js","../../../node_modules/imask/esm/masked/dynamic.js","../../../node_modules/imask/esm/masked/enum.js","../../../node_modules/imask/esm/masked/function.js","../../../node_modules/imask/esm/masked/number.js","../../../node_modules/imask/esm/masked/pipe.js","../../../node_modules/imask/esm/index.js","../../../node_modules/react-imask/esm/mixin.js","../../../node_modules/react-imask/esm/input.js","../src/components/InputWithMask/index.js","../src/components/InputWithCountryDropdown/Dropdown/CountryItem/index.js","../src/icons/SearchIcon.js","../src/components/InputWithCountryDropdown/Dropdown/index.js","../src/icons/HalfArrowIcon.js","../src/components/InputWithCountryDropdown/index.js","../src/components/Checkbox/index.js","../src/icons/CloseIcon.js","../src/components/Modal/index.js","../src/components/Switch/variants.js","../src/components/Switch/index.js","../src/components/Radio/index.js","../src/icons/FileIcon.js","../src/components/InputFile/index.js","../src/components/Divider/index.js","../src/components/Container/index.js","../src/components/Grid/index.js","../src/components/Box/index.js","../src/components/Accordion/index.js","../src/components/AccordionSummary/index.js","../src/components/AccordionDetails/index.js","../src/components/Skeleton/index.js","../src/components/AppBar/index.js","../src/components/ToolBar/index.js","../src/components/CircularProgress/index.js","../src/components/LinearProgress/index.js","../src/components/Tabs/index.js","../src/components/Tab/index.js","../src/components/TabsPanel/index.js","../../../node_modules/lodash.throttle/index.js","../../../node_modules/react-scroll/modules/mixins/passive-event-listeners.js","../../../node_modules/react-scroll/modules/mixins/scroll-spy.js","../../../node_modules/react-scroll/modules/mixins/utils.js","../../../node_modules/react-scroll/modules/mixins/smooth.js","../../../node_modules/react-scroll/modules/mixins/cancel-events.js","../../../node_modules/react-scroll/modules/mixins/scroll-events.js","../../../node_modules/react-scroll/modules/mixins/animate-scroll.js","../../../node_modules/react-scroll/modules/mixins/scroller.js","../../../node_modules/react-scroll/modules/mixins/scroll-hash.js","../../../node_modules/react-scroll/modules/mixins/scroll-link.js","../../../node_modules/react-scroll/modules/components/Link.js","../../../node_modules/react-scroll/modules/components/Button.js","../../../node_modules/react-scroll/modules/mixins/scroll-element.js","../../../node_modules/react-scroll/modules/components/Element.js","../../../node_modules/react-scroll/modules/mixins/Helpers.js","../../../node_modules/react-scroll/modules/index.js","../src/components/ScrollTab/index.js","../src/components/MenuPanel/index.js","../src/components/IconButton/index.js","../src/components/Popper/index.js","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js","../../../node_modules/@floating-ui/react/dist/floating-ui.react.esm.js","../src/components/Tooltip/index.js","../src/components/ErrorComponent/index.js"],"sourcesContent":["const colors = {\r\n primary: {\r\n main: \"#ED713C\",\r\n pressed: \"#D24C13\",\r\n hover: \"#EA5A1D\",\r\n light: \"#FCEAE2\",\r\n light2: \"#FEF7F3\",\r\n },\r\n secondary: {\r\n main: \"#18191F\",\r\n gray60: \"#474A57\",\r\n gray50: \"#7F8285\",\r\n gray40: \"#949494\",\r\n gray30: \"#BFBFBF\",\r\n gray15: \"#EAECEF\",\r\n white: \"#FFFFFF\",\r\n light: \"#C4C4C4\",\r\n disabled: \"#A6AEBC\",\r\n },\r\n background: {\r\n main: \"#FBFBFD\",\r\n light2: \"#F7F8F9\",\r\n light3: \"#F2F3F5\",\r\n },\r\n success: {\r\n green70: \"#259E58\",\r\n green60: \"#23A65A\",\r\n main: \"#27AE60\",\r\n green10: \"#EAFCF7\",\r\n green5: \"#F0FDF9\",\r\n },\r\n error: {\r\n red70: \"#D03C1A\",\r\n red60: \"#DA421F\",\r\n main: \"#EB4620\",\r\n red10: \"#FCE3DE\",\r\n red5: \"#FDF0ED\",\r\n },\r\n info: {\r\n blue70: \"#0098B6\",\r\n blue60: \"#009CBB\",\r\n main: \"#00ABCD\",\r\n blue10: \"#D9F2F8\",\r\n blue5: \"#E5F7FA\",\r\n },\r\n purple: {\r\n purple70: \"#914BD2\",\r\n purple60: \"#974EDB\",\r\n main: \"#9B51E0\",\r\n purple10: \"#F0E5FA\",\r\n purple5: \"#F7F1FD\",\r\n },\r\n}\r\n\r\nexport default colors\r\n","const shadows = {\r\n shadow1: \"0px 5px 16px rgba(0, 0, 0, 0.1)\",\r\n shadow2: \"0px 12px 16px rgba(0, 0, 0, 0.08)\",\r\n shadow3: \"0px 26px 34px rgba(0, 0, 0, 0.1)\",\r\n shadow4: \"0px 10px 20px rgba(0, 0, 0, 0.1)\",\r\n}\r\n\r\nexport default shadows\r\n","const breakpoints = {\r\n xxs: 375,\r\n xs: 600,\r\n sm: 900,\r\n md: 1200,\r\n lg: 1440,\r\n xl: 1536,\r\n}\r\n\r\nexport default breakpoints\r\n","const settings = {\r\n spacing: 8,\r\n columns: 12,\r\n}\r\n\r\nexport default settings\r\n","import colors from \"./colors\"\r\nimport shadows from \"./shadows\"\r\nimport breakpoints from \"./breakpoints\"\r\nimport settings from \"./settings\"\r\n\r\nconst palette = {\r\n brand: {\r\n ...colors.primary,\r\n background: colors.primary.light2,\r\n },\r\n grey: {\r\n seventy: colors.secondary.main,\r\n sixty: colors.secondary.gray60,\r\n fiftyP: colors.secondary.gray50,\r\n fourty: colors.secondary.gray40,\r\n thirty: colors.secondary.gray30,\r\n fifteenB: colors.secondary.gray15,\r\n zero: colors.secondary.white,\r\n },\r\n background: {\r\n ...colors.background,\r\n light1: colors.background.main,\r\n light4: \"#C5C6C7\",\r\n },\r\n green: {\r\n fiftyP: colors.success.main,\r\n seventy: colors.success.green70,\r\n sixty: colors.success.green60,\r\n ten: colors.success.green10,\r\n five: colors.success.green5,\r\n },\r\n red: {\r\n fiftyP: colors.error.main,\r\n seventy: colors.error.red70,\r\n sixty: colors.error.red60,\r\n ten: colors.error.red10,\r\n five: colors.error.red5,\r\n },\r\n blue: {\r\n fiftyP: colors.info.main,\r\n seventy: colors.info.blue70,\r\n sixty: colors.info.blue60,\r\n ten: colors.info.blue10,\r\n five: colors.info.blue5,\r\n },\r\n purple: {\r\n fiftyP: colors.purple.main,\r\n seventy: colors.purple.purple70,\r\n sixty: colors.purple.purple60,\r\n ten: colors.purple.purple10,\r\n five: colors.purple.purple5,\r\n },\r\n}\r\n\r\nconst themeOld = {\r\n palette: colors,\r\n breakpoints,\r\n shadows,\r\n settings,\r\n}\r\n\r\nconst theme = {\r\n palette,\r\n breakpoints,\r\n shadows,\r\n settings,\r\n}\r\n\r\nexport { themeOld, theme }\r\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","const headingSizes = {\r\n hero: \"h1\",\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n}\r\n\r\nconst headingVariants = {\r\n hero: {\r\n size: 56,\r\n height: 72,\r\n mobSize: 32,\r\n mobHeight: 48,\r\n },\r\n h1: {\r\n size: 32,\r\n height: 48,\r\n mobSize: 24,\r\n mobHeight: 32,\r\n },\r\n h2: {\r\n size: 24,\r\n height: 32,\r\n mobSize: 18,\r\n mobHeight: 24,\r\n },\r\n h3: {\r\n size: 18,\r\n height: 24,\r\n mobSize: 16,\r\n mobHeight: 24,\r\n },\r\n h4: {\r\n size: 16,\r\n height: 24,\r\n mobSize: 14,\r\n mobHeight: 24,\r\n },\r\n}\r\n\r\nexport { headingVariants, headingSizes }\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport { theme } from \"../../theme\"\r\nimport { headingSizes, headingVariants } from \"./variants\"\r\n\r\nconst { breakpoints, palette } = theme\r\n\r\nconst Heading = forwardRef((props, ref) => {\r\n const { size, children, className, ...otherProps } = props\r\n\r\n return (\r\n <StyledHeading\r\n as={headingSizes[size]}\r\n size={headingVariants[size]}\r\n className={classNames(\"KUI-Heading\", className)}\r\n ref={ref}\r\n {...otherProps}\r\n >\r\n {children}\r\n </StyledHeading>\r\n )\r\n})\r\n\r\nHeading.defaultProps = {\r\n size: \"h1\",\r\n color: \"seventy\",\r\n colorGroup: \"grey\",\r\n disableUserSelect: false,\r\n weight: 700,\r\n}\r\n\r\nHeading.propTypes = {\r\n size: PropTypes.oneOf([\"hero\", \"h1\", \"h2\", \"h3\", \"h4\"]),\r\n disableUserSelect: PropTypes.bool,\r\n weight: PropTypes.number,\r\n}\r\n\r\nexport default Heading\r\n\r\nconst headingSettingsCSS = (props) => css`\r\n font-size: ${props.size.size}px;\r\n line-height: ${props.size.height}px;\r\n text-align: ${props.align};\r\n color: ${palette[props.colorGroup][props.color]\r\n ? palette[props.colorGroup][props.color]\r\n : palette.grey.seventy};\r\n font-weight: ${props.weight};\r\n ${props.disableUserSelect && \"user-select: none\"};\r\n @media (max-width: ${breakpoints.sm}px) {\r\n font-size: ${props.size.mobSize}px;\r\n line-height: ${props.size.mobHeight}px;\r\n }\r\n`\r\n\r\nconst StyledHeading = styled.h1`\r\n font-family: \"Inter\", sans-serif;\r\n letter-spacing: normal;\r\n text-transform: none;\r\n margin: 0;\r\n font-weight: 700;\r\n ${headingSettingsCSS};\r\n`\r\n","const captionSizes = {\r\n xs: {\r\n size: 12,\r\n height: 14,\r\n },\r\n sm: {\r\n size: 13,\r\n height: 14,\r\n high: 20,\r\n },\r\n s: {\r\n size: 14,\r\n height: 18,\r\n high: 22,\r\n },\r\n m: {\r\n size: 16,\r\n height: 24,\r\n },\r\n l: {\r\n size: 18,\r\n height: 28,\r\n },\r\n}\r\n\r\nexport default captionSizes\r\n","import React, { forwardRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport captionSizes from \"./variants\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst Caption = forwardRef((props, ref) => {\r\n const { children, size, className, ...otherProps } = props\r\n\r\n return (\r\n <StyledCaption\r\n size={captionSizes[size]}\r\n className={classNames(\"KUI-Caption\", className)}\r\n ref={ref}\r\n {...otherProps}\r\n >\r\n {children}\r\n </StyledCaption>\r\n )\r\n})\r\n\r\nCaption.defaultProps = {\r\n size: \"m\",\r\n weight: 400,\r\n color: \"seventy\",\r\n colorGroup: \"grey\",\r\n disableUserSelect: false,\r\n variant: \"default\",\r\n}\r\n\r\nCaption.displayName = \"Caption\"\r\n\r\nCaption.propTypes = {\r\n size: PropTypes.oneOf([\"xs\", \"sm\", \"s\", \"m\", \"l\"]),\r\n weight: PropTypes.oneOf([400, 500, 600, 700]),\r\n disableUserSelect: PropTypes.bool,\r\n variant: PropTypes.oneOf([\"default\", \"high\"]),\r\n}\r\n\r\nexport default Caption\r\n\r\nconst captionSettingsCSS = ({\r\n size,\r\n weight,\r\n align,\r\n color,\r\n colorGroup,\r\n disSelect,\r\n variant,\r\n}) => css`\r\n font-size: ${size.size}px;\r\n line-height: ${variant === \"high\" ? size.high || size.height : size.height}px;\r\n font-weight: ${weight};\r\n text-align: ${align};\r\n ${disSelect && \"user-select: none\"};\r\n color: ${theme.palette[colorGroup][color]\r\n ? theme.palette[colorGroup][color]\r\n : theme.palette.grey.seventy};\r\n`\r\n\r\nconst StyledCaption = styled.p`\r\n font-family: \"Inter\", sans-serif;\r\n letter-spacing: normal;\r\n text-transform: none;\r\n margin: 0;\r\n ${captionSettingsCSS};\r\n`\r\n","const textVariants = {\r\n xs: {\r\n size: 13,\r\n height: 20,\r\n },\r\n s: {\r\n size: 14,\r\n height: 22,\r\n },\r\n m: {\r\n size: 18,\r\n height: 28,\r\n },\r\n}\r\n\r\nexport default textVariants\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport { css } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\nimport textVariants from \"./variants\"\r\n\r\nfunction Text(props) {\r\n const { children, size, className, ...otherProps } = props\r\n\r\n return (\r\n <StyledText\r\n size={textVariants[size]}\r\n className={classNames(\"KUI-Text\", className)}\r\n {...otherProps}\r\n >\r\n {children}\r\n </StyledText>\r\n )\r\n}\r\n\r\nText.defaultProps = {\r\n size: \"s\",\r\n color: \"seventy\",\r\n disableUserSelect: false,\r\n weight: 400,\r\n}\r\n\r\nText.propTypes = {\r\n size: PropTypes.oneOf([\"xs\", \"s\", \"m\"]),\r\n weight: PropTypes.oneOf([400, 500, 600]),\r\n color: PropTypes.oneOf([\r\n \"seventy\",\r\n \"sixty\",\r\n \"fiftyP\",\r\n \"fourty\",\r\n \"zero\",\r\n \"brand\",\r\n ]),\r\n disableUserSelect: PropTypes.bool,\r\n}\r\n\r\nexport default Text\r\n\r\nconst textSettingsCSS = ({ size, weight, color, disSelect }) => css`\r\n font-size: ${size.size}px;\r\n line-height: ${size.height}px;\r\n font-weight: ${weight};\r\n ${disSelect && \"user-select: none\"};\r\n color: ${theme.palette.grey[color]\r\n ? theme.palette.grey[color]\r\n : theme.palette.brand.main};\r\n`\r\n\r\nconst StyledText = styled.p`\r\n font-family: \"Inter\", sans-serif;\r\n letter-spacing: normal;\r\n text-transform: none;\r\n margin: 0;\r\n ${textSettingsCSS};\r\n`\r\n","import { theme } from \"../../theme\"\r\n\r\nconst palette = theme.palette\r\n\r\nconst buttonSizes = {\r\n xs: 32,\r\n s: 40,\r\n m: 48,\r\n l: 56,\r\n}\r\n\r\nconst buttonBorders = {\r\n brand: palette.brand.main,\r\n lightGray: palette.grey.fifteenB,\r\n lightOrange: palette.brand.light,\r\n}\r\n\r\nconst buttonVariants = {\r\n primary: {\r\n background: palette.brand.main,\r\n color: palette.grey.zero,\r\n hover: palette.brand.hover,\r\n active: palette.brand.pressed,\r\n },\r\n orange: {\r\n background: palette.brand.light,\r\n color: palette.brand.main,\r\n hover: palette.brand.hover,\r\n active: palette.brand.pressed,\r\n hoverColor: palette.grey.zero,\r\n },\r\n white: {\r\n background: palette.grey.zero,\r\n color: palette.grey.seventy,\r\n hover: palette.background.light1,\r\n active: palette.grey.fifteenB,\r\n border: palette.grey.fifteenB,\r\n },\r\n whiteWithOrangeHover: {\r\n color: palette.grey.sixty,\r\n hover: palette.brand.light,\r\n active: palette.brand.light,\r\n hoverColor: palette.brand.main,\r\n },\r\n whiteWithGray: {\r\n background: palette.grey.zero,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light1,\r\n active: palette.grey.fifteenB,\r\n hoverColor: palette.grey.seventy,\r\n border: palette.background.light3,\r\n },\r\n whiteWithBrand: {\r\n background: palette.grey.zero,\r\n color: palette.brand.main,\r\n },\r\n grayLightWithBorder: {\r\n background: palette.background.light1,\r\n color: palette.grey.fiftyP,\r\n border: palette.grey.fifteenB,\r\n hover: palette.background.light2,\r\n hoverColor: palette.grey.seventy,\r\n active: palette.grey.fifteenB,\r\n },\r\n grayLight: {\r\n background: palette.background.light2,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n active: palette.grey.fifteenB,\r\n },\r\n grayDark: {\r\n background: palette.grey.fiftyP,\r\n color: palette.grey.zero,\r\n hover: palette.grey.sixty,\r\n hoverColor: palette.grey.zero,\r\n pressed: palette.grey.sixty,\r\n },\r\n backgroundLight: {\r\n background: palette.background.light2,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light1,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n },\r\n backgroundWithBorder: {\r\n background: palette.background.light1,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.fifteenB,\r\n },\r\n blur: {\r\n background: \"rgba(0, 0, 0, 0.6)\",\r\n color: palette.grey.zero,\r\n hover: \"rgba(0, 0, 0, 0.7)\",\r\n active: \"rgba(0, 0, 0, 0.8)\",\r\n backdrop: \"blur(4px)\",\r\n },\r\n blurDark: {\r\n background: \"rgba(0, 0, 0, 0.6)\",\r\n color: palette.grey.zero,\r\n hover: \"rgba(0, 0, 0, 0.8)\",\r\n hoverColor: palette.grey.zero,\r\n pressed: \"rgba(0, 0, 0, 1)\",\r\n },\r\n green: {\r\n background: palette.green.fiftyP,\r\n color: palette.grey.zero,\r\n hover: palette.green.sixty,\r\n active: palette.green.seventy,\r\n },\r\n red: {\r\n background: palette.red.fiftyP,\r\n color: palette.grey.zero,\r\n hover: palette.red.sixty,\r\n active: palette.red.seventy,\r\n },\r\n error: {\r\n background: palette.red.five,\r\n color: palette.red.fiftyP,\r\n hover: palette.red.ten,\r\n hoverColor: palette.red.fiftyP,\r\n pressed: palette.red.ten,\r\n },\r\n transparent: {\r\n withoutShadow: true,\r\n },\r\n orangeWithHoverLight: {\r\n background: palette.brand.background,\r\n color: palette.brand.main,\r\n hover: palette.brand.background,\r\n hoverColor: palette.brand.main,\r\n pressed: palette.brand.background,\r\n },\r\n orangeWithBorder: {\r\n background: palette.brand.light,\r\n color: palette.brand.main,\r\n hover: palette.brand.background,\r\n hoverColor: palette.brand.main,\r\n pressed: palette.brand.background,\r\n border: palette.brand.main,\r\n },\r\n transparentLight: {\r\n color: palette.grey.thirty,\r\n hoverColor: palette.grey.fiftyP,\r\n pressed: palette.grey.fifteenB,\r\n withoutShadow: true,\r\n },\r\n transparentWithBorder: {\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.fifteenB,\r\n },\r\n transparentWithDarkBorder: {\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.fiftyP,\r\n },\r\n transparentWithBoldBorder: {\r\n color: palette.grey.thirty,\r\n hover: palette.background.light1,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.thirty,\r\n },\r\n}\r\n\r\nexport { buttonSizes, buttonBorders, buttonVariants }\r\n","import React, { forwardRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport { css } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\nimport Caption from \"../Caption\"\r\nimport { buttonSizes, buttonBorders, buttonVariants } from \"./variants\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst Button = forwardRef((props, ref) => {\r\n const {\r\n children,\r\n variant,\r\n size,\r\n className,\r\n fullWidth,\r\n isCircle,\r\n captionSize,\r\n disabledStyle,\r\n border,\r\n startIcon,\r\n endIcon,\r\n captionWeight,\r\n withoutChildrenWrapper,\r\n ...buttonProps\r\n } = props\r\n\r\n return (\r\n <StyledButton\r\n ref={ref}\r\n size={size}\r\n variant={variant}\r\n border={border}\r\n fullWidth={fullWidth}\r\n isCircle={isCircle}\r\n className={classNames(\r\n \"KUI-Button\",\r\n buttonProps.disabled && \"KUI-Button_disabled\",\r\n buttonProps.disabled && disabledStyle,\r\n className\r\n )}\r\n {...buttonProps}\r\n >\r\n {isCircle ? (\r\n <StyledCircleButtonContainer className=\"KUI-Button_circle-container\">\r\n {children}\r\n </StyledCircleButtonContainer>\r\n ) : (\r\n <StyledContentContainer\r\n withIcon={startIcon || endIcon}\r\n className={classNames(\r\n (startIcon || endIcon) && \"KUI-Button_icon-container\"\r\n )}\r\n >\r\n {startIcon && (\r\n <StyledStartIcon className=\"KUI-Button_start-icon\">\r\n {startIcon}\r\n </StyledStartIcon>\r\n )}\r\n\r\n {withoutChildrenWrapper ? (\r\n children\r\n ) : (\r\n <Caption\r\n size={captionSize}\r\n weight={captionWeight}\r\n className=\"KUI-Button-text\"\r\n >\r\n {children}\r\n </Caption>\r\n )}\r\n\r\n {endIcon && (\r\n <StyledEndIcon className=\"KUI-Button_end-icon\">\r\n {endIcon}\r\n </StyledEndIcon>\r\n )}\r\n </StyledContentContainer>\r\n )}\r\n </StyledButton>\r\n )\r\n})\r\n\r\nButton.defaultProps = {\r\n variant: \"primary\",\r\n size: \"m\",\r\n fullWidth: false,\r\n endIcon: null,\r\n startIcon: null,\r\n disabled: false,\r\n isCircle: false,\r\n captionSize: \"s\",\r\n border: null,\r\n captionWeight: 600,\r\n}\r\n\r\nButton.propTypes = {\r\n size: PropTypes.oneOf([\"xs\", \"s\", \"m\", \"l\"]),\r\n fullWidth: PropTypes.bool,\r\n endIcon: PropTypes.element,\r\n startIcon: PropTypes.element,\r\n disabled: PropTypes.bool,\r\n isCircle: PropTypes.bool,\r\n captionSize: PropTypes.oneOf([\"xs\", \"sm\", \"s\", \"m\", \"l\"]),\r\n border: PropTypes.oneOf([\"brand\", \"lightGray\", \"lightOrange\"]),\r\n}\r\n\r\nButton.displayName = \"Button\"\r\n\r\nexport default Button\r\n\r\nconst buttonVariantCSS = (variant) => css`\r\n background-color: ${variant.background ? variant.background : \"transparent\"};\r\n & .KUI-Button-text {\r\n ${variant.color && `color: ${variant.color}`};\r\n }\r\n svg path {\r\n ${variant.color && `fill: ${variant.color}`};\r\n }\r\n border: 1px solid ${variant.border ? variant.border : \"transparent\"};\r\n ${variant.backdrop && `backdrop-filter: ${variant.backdrop}`};\r\n @media (hover: hover) {\r\n &:hover {\r\n box-shadow: ${variant.withoutShadow ? \"none\" : theme.shadows.shadow1};\r\n ${variant.hover && `background-color: ${variant.hover}`};\r\n & .KUI-Button-text {\r\n ${variant.hoverColor && `color: ${variant.hoverColor}`};\r\n }\r\n svg path {\r\n ${variant.hoverColor && `fill: ${variant.hoverColor}`};\r\n }\r\n }\r\n &:active {\r\n ${variant.active && `background-color: ${variant.active}`};\r\n }\r\n }\r\n`\r\n\r\nconst circleButtonCSS = ({ isCircle, size }) =>\r\n isCircle &&\r\n css`\r\n padding: 0;\r\n border-radius: 50%;\r\n display: inline-flex;\r\n width: ${buttonSizes[size]}px;\r\n `\r\n\r\nconst buttonSettingsCSS = (props) => css`\r\n width: ${props.fullWidth ? \"100%\" : \"max-content\"};\r\n height: ${buttonSizes[props.size]}px;\r\n ${buttonVariantCSS(buttonVariants[props.variant])};\r\n ${props.border && `border-color: ${buttonBorders[props.border]}`};\r\n`\r\n\r\nconst StyledButton = styled.button`\r\n position: relative;\r\n border-radius: 66px;\r\n padding: 0 16px;\r\n transition: all linear 0.3s;\r\n width: max-content;\r\n text-align: center;\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n ${buttonSettingsCSS};\r\n ${circleButtonCSS};\r\n & .KUI-Button-text,\r\n svg path {\r\n transition: all linear 0.3s;\r\n }\r\n &:disabled,\r\n &:disabled:hover,\r\n &:disabled:active {\r\n cursor: default;\r\n background-color: ${theme.palette.background.light3};\r\n box-shadow: none;\r\n & .KUI-Button-text {\r\n color: #a6aebc;\r\n }\r\n svg path {\r\n fill: #a6aebc;\r\n }\r\n }\r\n`\r\n\r\nconst StyledCircleButtonContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n width: inherit;\r\n`\r\n\r\nconst iconContainerCSS = ({ withIcon }) =>\r\n withIcon &&\r\n css`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n `\r\n\r\nconst StyledContentContainer = styled.div`\r\n ${iconContainerCSS};\r\n`\r\n\r\nconst StyledStartIcon = styled.span`\r\n margin-right: 8px;\r\n display: flex;\r\n`\r\n\r\nconst StyledEndIcon = styled.span`\r\n margin-left: 8px;\r\n display: flex;\r\n`\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst ErrorIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-label=\"error\"\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M7.99935 15.3334C12.0494 15.3334 15.3327 12.0502 15.3327 8.00008C15.3327 3.94999 12.0494 0.666748 7.99935 0.666748C3.94926 0.666748 0.666016 3.94999 0.666016 8.00008C0.666016 12.0502 3.94926 15.3334 7.99935 15.3334ZM7.99935 13.3334C10.9449 13.3334 13.3327 10.9456 13.3327 8.00008C13.3327 5.05456 10.9449 2.66675 7.99935 2.66675C5.05383 2.66675 2.66602 5.05456 2.66602 8.00008C2.66602 10.9456 5.05383 13.3334 7.99935 13.3334ZM9.52795 5.52868C9.78829 5.26833 10.2104 5.26833 10.4708 5.52868C10.7311 5.78903 10.7311 6.21114 10.4708 6.47149L8.94216 8.00008L10.4708 9.52868C10.7311 9.78903 10.7311 10.2111 10.4708 10.4715C10.2104 10.7318 9.78829 10.7318 9.52795 10.4715L7.99935 8.94289L6.47075 10.4715C6.2104 10.7318 5.78829 10.7318 5.52794 10.4715C5.2676 10.2111 5.2676 9.78903 5.52794 9.52868L7.05654 8.00008L5.52794 6.47149C5.2676 6.21114 5.2676 5.78903 5.52794 5.52868C5.78829 5.26833 6.2104 5.26833 6.47075 5.52868L7.99935 7.05727L9.52795 5.52868Z\"\r\n fill=\"#EB5757\"\r\n />\r\n </svg>\r\n)\r\n\r\nErrorIcon.defaultProps = {\r\n width: 16,\r\n height: 16,\r\n}\r\n\r\nErrorIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default ErrorIcon\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst WarningIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-label=\"warning\"\r\n >\r\n <path\r\n d=\"M6.99999 0.142883C10.7871 0.142883 13.8571 3.21293 13.8571 7.00002C13.8571 10.7871 10.7871 13.8572 6.99999 13.8572C3.2129 13.8572 0.142853 10.7871 0.142853 7.00002C0.142853 3.21293 3.2129 0.142883 6.99999 0.142883ZM6.99999 1.28574C3.84408 1.28574 1.28571 3.84411 1.28571 7.00002C1.28571 10.1559 3.84408 12.7143 6.99999 12.7143C10.1559 12.7143 12.7143 10.1559 12.7143 7.00002C12.7143 3.84411 10.1559 1.28574 6.99999 1.28574ZM6.99999 9.05717C7.44182 9.05717 7.79999 9.41534 7.79999 9.85717C7.79999 10.299 7.44182 10.6572 6.99999 10.6572C6.55817 10.6572 6.2 10.299 6.2 9.85717C6.2 9.41534 6.55817 9.05717 6.99999 9.05717ZM7.04206 3.57145C7.17783 3.57145 7.26306 3.59267 7.33756 3.63251C7.41206 3.67235 7.47052 3.73082 7.51036 3.80532C7.55021 3.87982 7.57142 3.96504 7.57142 4.10081V7.61352C7.57142 7.74929 7.55021 7.83452 7.51036 7.90902C7.47052 7.98352 7.41206 8.04198 7.33756 8.08182C7.26306 8.12166 7.17783 8.14288 7.04206 8.14288H6.95793C6.82215 8.14288 6.73693 8.12166 6.66243 8.08182C6.58793 8.04198 6.52947 7.98352 6.48962 7.90902C6.44978 7.83452 6.42857 7.74929 6.42857 7.61352V4.10081C6.42857 3.96504 6.44978 3.87982 6.48962 3.80532C6.52947 3.73082 6.58793 3.67235 6.66243 3.63251C6.73693 3.59267 6.82215 3.57145 6.95793 3.57145H7.04206Z\"\r\n fill=\"#ED713C\"\r\n />\r\n </svg>\r\n)\r\n\r\nWarningIcon.defaultProps = {\r\n width: 16,\r\n height: 16,\r\n}\r\n\r\nWarningIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default WarningIcon\r\n","import PropTypes from \"prop-types\"\r\nimport React from \"react\"\r\n\r\nconst SuccessIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-label=\"success\"\r\n >\r\n <path\r\n d=\"M6.99999 0.142883C10.7871 0.142883 13.8571 3.21293 13.8571 7.00002C13.8571 10.7871 10.7871 13.8572 6.99999 13.8572C3.2129 13.8572 0.142853 10.7871 0.142853 7.00002C0.142853 3.21293 3.2129 0.142883 6.99999 0.142883ZM6.99999 1.28574C3.84408 1.28574 1.28571 3.84411 1.28571 7.00002C1.28571 10.1559 3.84408 12.7143 6.99999 12.7143C10.1559 12.7143 12.7143 10.1559 12.7143 7.00002C12.7143 3.84411 10.1559 1.28574 6.99999 1.28574ZM9.45142 4.88003C9.67458 4.65687 10.0397 4.65687 10.2629 4.88003C10.486 5.10318 10.486 5.4683 10.2629 5.69145L6.2612 9.6898C6.03804 9.91296 5.67623 9.91296 5.45308 9.6898L3.45308 7.6898C3.22992 7.46664 3.22992 7.10484 3.45308 6.88168C3.67623 6.65852 4.03804 6.65852 4.2612 6.88168L5.85714 8.47762L9.45142 4.88003Z\"\r\n fill=\"#27AE60\"\r\n />\r\n </svg>\r\n)\r\n\r\nSuccessIcon.defaultProps = {\r\n width: 16,\r\n height: 16,\r\n}\r\n\r\nSuccessIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default SuccessIcon\r\n","import React from \"react\"\r\nimport ErrorIcon from \"../../icons/ErrorIcon\"\r\nimport WarningIcon from \"../../icons/WarningIcon\"\r\nimport SuccessIcon from \"../../icons/SuccessIcon\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst messageVariants = {\r\n error: {\r\n background: theme.palette.red.five,\r\n color: theme.palette.red.fiftyP,\r\n icon: <ErrorIcon />,\r\n },\r\n warning: {\r\n background: theme.palette.purple.ten,\r\n color: theme.palette.purple.seventy,\r\n icon: <WarningIcon />,\r\n },\r\n success: {\r\n background: theme.palette.green.five,\r\n color: theme.palette.green.fiftyP,\r\n icon: <SuccessIcon />,\r\n },\r\n}\r\n\r\nexport default messageVariants\r\n","import React, { useEffect, useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport Caption from \"../Caption\"\nimport messageVariants from \"./variants\"\n\nfunction InputMessage(props) {\n const { msg, variant, className, ...otherProps } = props\n const messageRef = useRef(null)\n const [messageRefHeight, setMessageRefHeight] = useState(32)\n\n useEffect(() => {\n setMessageRefHeight(messageRef?.current?.clientHeight)\n }, [messageRef?.current?.clientHeight])\n\n return (\n <StyledMessage\n ref={messageRef}\n variant={messageVariants[variant]}\n className={classNames(\n \"KUI-InputMessage\",\n `KUI-InputMessage_${variant}`,\n className\n )}\n style={{ bottom: `-${messageRefHeight}px` }}\n {...otherProps}\n >\n <StyledIconWrapper className=\"KUI-InputMessage_icon\">\n {messageVariants[variant].icon}\n </StyledIconWrapper>\n <StyledTitle className=\"KUI-InputMessage_title\" size=\"xs\" weight={600}>\n {msg}\n </StyledTitle>\n </StyledMessage>\n )\n}\n\nInputMessage.defaultProps = {\n msg: \"\",\n className: \"\",\n variant: \"error\",\n}\n\nInputMessage.propTypes = {\n msg: PropTypes.string,\n className: PropTypes.string,\n variant: PropTypes.oneOf([\"error\", \"warning\", \"success\"]),\n}\n\nexport default InputMessage\n\nconst StyledTitle = styled(Caption)`\n padding-left: 8px;\n`\n\nconst messageVariantCSS = ({ variant }) => css`\n background-color: ${variant.background};\n svg {\n path {\n fill: ${variant.color};\n }\n }\n .KUI-InputMessage_title {\n color: ${variant.color};\n }\n`\n\nconst StyledMessage = styled.div`\n z-index: 2;\n position: absolute;\n left: 0px;\n bottom: 0;\n padding: 8px 15px;\n width: 100%;\n box-sizing: border-box;\n border-radius: 0 0 8px 8px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n box-shadow: 0px 0px 1px rgba(10, 31, 68, 0.08),\n 0px 3px 4px rgba(10, 31, 68, 0.1);\n ${messageVariantCSS};\n`\n\nconst StyledIconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`\n","import React from \"react\"\r\n\r\nconst TextareaGrabIcon = (props) => (\r\n <svg\r\n width=\"9\"\r\n height=\"8\"\r\n viewBox=\"0 0 9 8\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M0.21967 7.80474C0.512563 8.06509 0.987437 8.06509 1.28033 7.80474L8.78033 1.13807C9.07322 0.877722 9.07322 0.455612 8.78033 0.195262C8.48744 -0.0650874 8.01256 -0.0650874 7.71967 0.195262L0.21967 6.86193C-0.0732233 7.12228 -0.0732233 7.54439 0.21967 7.80474ZM3.96957 7.80441C4.26246 8.06476 4.73734 8.06476 5.03023 7.80441L8.78021 4.47108C9.0731 4.21073 9.0731 3.78862 8.78021 3.52827C8.48732 3.26792 8.01245 3.26792 7.71956 3.52827L3.96957 6.8616C3.67668 7.12195 3.67668 7.54406 3.96957 7.80441Z\"\r\n fill=\"#EAECEF\"\r\n />\r\n </svg>\r\n)\r\n\r\nexport default TextareaGrabIcon\r\n","import React from \"react\"\n\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n ref(value)\n } else if (ref) {\n ref.current = value\n }\n}\n\nfunction useForkRef(...refs) {\n return React.useMemo(() => {\n if (refs.every((ref) => ref == null)) {\n return null\n }\n\n return (instance) => {\n refs.forEach((ref) => {\n setRef(ref, instance)\n })\n }\n }, refs)\n}\n\nexport default useForkRef\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport Caption from \"../Caption\"\nimport InputMessage from \"../InputMessage\"\nimport TextareaGrabIcon from \"../../icons/TextareaGrabIcon\"\nimport { theme } from \"../../theme\"\nimport useForkRef from \"../../utils/useForkRef\"\n\nconst { palette } = theme\n\nconst Input = forwardRef((props, ref) => {\n const {\n isTextArea,\n inputRef: inputRefProp,\n className,\n inputStyles,\n labelStyles,\n label,\n startIcon,\n endIcon,\n messageClassName,\n labelInlineStyles,\n message,\n messageVariant,\n value,\n type,\n rows,\n placeholder,\n ...inputProps\n } = props\n const [isFilled, setIsFilled] = useState(false)\n const inputRef = useRef(null)\n const isInvalid = !!message && messageVariant !== \"success\"\n\n const forwardedRef = useForkRef(inputRef, ref, inputRefProp)\n\n const autoHeight = () => {\n if (isTextArea) {\n const target = inputRef.current\n if (target.scrollHeight > target.clientHeight) {\n target.style.height = \"5px\"\n target.style.height = `${target.scrollHeight}px`\n }\n }\n }\n\n useEffect(() => {\n if (inputRef.current?.value) setIsFilled(true)\n else setIsFilled(false)\n }, [inputRef])\n\n useEffect(() => {\n if (value || typeof value === \"number\") setIsFilled(true)\n else setIsFilled(false)\n autoHeight()\n }, [value])\n\n const handleChange = (e) => {\n const currentValue = e.target.value\n if (currentValue && String(currentValue).replace(/_/g, \"\")) {\n setIsFilled(true)\n } else {\n setIsFilled(false)\n }\n if (inputProps.onInput) {\n inputProps.onInput(e)\n }\n\n autoHeight()\n }\n\n const commonProps = {\n ref: forwardedRef,\n value,\n onInput: handleChange,\n withMessage: !!message,\n messageVariant: messageVariant || \"error\",\n withLabel: !!label,\n placeholder,\n ...inputProps,\n }\n\n return (\n <StyledContainer\n className={classNames(\n \"KUI-Input_container\",\n !isTextArea && \"KUI-Input_InputContainer\",\n className\n )}\n >\n {startIcon && startIcon}\n {isTextArea ? (\n <StyledTextarea\n rows={rows}\n className={classNames(\n \"KUI-Input\",\n \"KUI-Textarea\",\n inputStyles,\n isInvalid && \"KUI-Input_invalid\"\n )}\n {...commonProps}\n />\n ) : (\n <StyledInput\n type={type}\n className={classNames(\n \"KUI-Input\",\n inputStyles,\n isInvalid && \"KUI-Input_invalid\"\n )}\n {...commonProps}\n />\n )}\n <StyledInputLabel\n size=\"s\"\n color=\"fiftyP\"\n active={isFilled || placeholder}\n className={classNames(\n \"KUI-Input_label\",\n (isFilled || placeholder) && \"KUI-Input_label-active\",\n labelStyles\n )}\n style={labelInlineStyles}\n >\n {label}\n </StyledInputLabel>\n {isTextArea && <StyledTextareaIcon className=\"KUI-Textarea_icon\" />}\n {endIcon && endIcon}\n {!!message && (\n <InputMessage\n variant={messageVariant || \"error\"}\n msg={message}\n className={messageClassName}\n />\n )}\n </StyledContainer>\n )\n})\n\nInput.defaultProps = {\n disabled: false,\n isTextArea: false,\n label: \"\",\n rows: 3,\n type: \"text\",\n}\n\nInput.propTypes = {\n disabled: PropTypes.bool,\n isTextArea: PropTypes.bool,\n label: PropTypes.string,\n message: PropTypes.string,\n rows: PropTypes.number,\n type: PropTypes.oneOf([\n \"text\",\n \"number\",\n \"password\",\n \"phone\",\n \"email\",\n \"phone\",\n ]),\n}\n\nInput.displayName = \"Input\"\n\nexport default Input\n\nconst StyledContainer = styled.div`\n position: relative;\n &.KUI-Input_InputContainer {\n height: 56px;\n }\n`\n\nconst StyledTextareaIcon = styled(TextareaGrabIcon)`\n display: block;\n width: 9px;\n height: 8px;\n position: absolute;\n right: 4px;\n bottom: 8px;\n pointer-events: none;\n cursor: none;\n`\n\nconst labelActiveCSS = css`\n font-size: 12px;\n top: 6px;\n & + div.KUI-InputAdornment_corner-label p {\n opacity: 1;\n }\n`\n\nconst StyledInputLabel = styled(Caption)`\n transition: top ease-out 0.2s, font-size ease-out 0.2s;\n user-select: none;\n pointer-events: none;\n position: absolute;\n top: 19px;\n left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(100% - 30px);\n ${({ active }) => active && labelActiveCSS};\n`\n\nconst inputStates = {\n error: palette.red.fiftyP,\n warning: palette.purple.seventy,\n success: palette.green.fiftyP,\n}\n\nconst inputStateCSS = (messageVariant) => css`\n border-radius: 8px 8px 0px 0px;\n border-color: ${inputStates[messageVariant]} !important;\n color: ${inputStates[messageVariant]};\n`\n\nconst inputCSS = ({ withMessage, messageVariant, withLabel }) => css`\n box-sizing: border-box;\n border: 1.5px solid ${palette.grey.fifteenB};\n border-radius: 8px;\n background-color: ${palette.grey.zero};\n caret-color: ${palette.brand.main};\n color: ${palette.grey.seventy};\n font-weight: 500;\n padding: ${withLabel ? \"27px 8px 6px 17px\" : \"16px 8px 12px 17px\"};\n font-family: \"Inter\", sans-serif;\n -moz-appearance: textfield;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n &:-webkit-autofill {\n box-shadow: inset 0 0 0 1000px #fff;\n }\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n }\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n &:focus {\n outline: none;\n border-color: ${palette.brand.main};\n & + .KUI-Input_label {\n ${labelActiveCSS}\n }\n }\n ${withMessage && inputStateCSS(messageVariant)};\n &:disabled {\n background-color: ${palette.background.light1};\n }\n`\n\nconst StyledInput = styled.input`\n height: 64px;\n font-size: 16px;\n transform: scale(calc(14 / 16));\n transform-origin: left top;\n width: calc(100% * (16 / 14));\n margin-right: -14%;\n ${inputCSS};\n`\n\nconst StyledTextarea = styled.textarea`\n resize: vertical;\n max-height: 168px;\n min-height: 64px;\n height: auto;\n width: 100%;\n font-size: 14px;\n ::-webkit-scrollbar {\n width: 0;\n }\n ::-webkit-resizer,\n ::-webkit-scrollbar-button,\n ::-webkit-scrollbar-corner {\n display: none;\n }\n ${inputCSS};\n`\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\nimport classNames from \"classnames\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport Input from \"../Input\"\nimport Caption from \"../Caption\"\n\nconst getLabelWidth = (startIconWidth, endIconWidth) => {\n if (startIconWidth && endIconWidth) return startIconWidth + endIconWidth + 34\n if (startIconWidth) return startIconWidth + 30\n if (endIconWidth) return endIconWidth + 34\n return 30\n}\n\nconst InputWithAdornments = forwardRef((props, ref) => {\n const { cornerLabel, startIcon, endIcon, ...inputProps } = props\n\n const startIconRef = useRef(null)\n const endIconRef = useRef(null)\n const [startIconWidth, setStartIconWidth] = useState(0)\n const [endIconWidth, setEndIconWidth] = useState(0)\n const labelWidth = getLabelWidth(startIconWidth, endIconWidth)\n\n const inputStyle = {\n paddingLeft: startIconWidth > 0 ? (startIconWidth + 20) * (16 / 14) : 16,\n paddingRight: endIconWidth > 0 ? endIconWidth + 24 : 8,\n }\n\n const labelStyle = {\n left: startIconWidth > 0 ? startIconWidth + 22 : 16,\n maxWidth: `calc(100% - ${labelWidth}px)`,\n }\n\n useEffect(() => {\n setStartIconWidth(startIconRef?.current?.clientWidth)\n }, [startIconRef?.current?.clientWidth])\n\n useEffect(() => {\n setEndIconWidth(endIconRef?.current?.clientWidth)\n }, [endIconRef?.current?.clientWidth])\n\n return (\n <Input\n ref={ref}\n startIcon={\n startIcon && (\n <StyledStartIcon\n ref={startIconRef}\n className=\"KUI-InputAdornment_start-icon\"\n >\n {startIcon}\n </StyledStartIcon>\n )\n }\n endIcon={\n (endIcon || cornerLabel) && (\n <StyledEndIcon\n ref={endIconRef}\n isCornerLabel={!!cornerLabel}\n className={classNames(\n \"KUI-InputAdornment_end-icon\",\n cornerLabel && \"KUI-InputAdornment_corner-label\"\n )}\n >\n {cornerLabel ? (\n <StyledCornerLabel size=\"s\" weight={500} color=\"fiftyP\">\n {cornerLabel}\n </StyledCornerLabel>\n ) : (\n endIcon\n )}\n </StyledEndIcon>\n )\n }\n style={inputStyle}\n labelInlineStyles={labelStyle}\n {...inputProps}\n />\n )\n})\n\nInputWithAdornments.defaultProps = {\n cornerLabel: null,\n startIcon: null,\n endIcon: null,\n}\n\nInputWithAdornments.propTypes = {\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n cornerLabel: PropTypes.string,\n disabled: PropTypes.bool,\n startIcon: PropTypes.element,\n endIcon: PropTypes.element,\n type: PropTypes.oneOf([\"text\", \"number\", \"password\"]),\n}\n\nInputWithAdornments.displayName = \"InputWithAdornments\"\n\nexport default InputWithAdornments\n\nconst cornerLabelCSS = css`\n align-items: flex-end;\n bottom: 12px;\n right: 12px;\n`\n\nconst StyledIcon = styled.div`\n position: absolute;\n top: 8px;\n bottom: 8px;\n display: flex;\n align-items: center;\n z-index: 1;\n`\n\nconst StyledStartIcon = styled(StyledIcon)`\n left: 8px;\n`\n\nconst StyledEndIcon = styled(StyledIcon)`\n right: 16px;\n z-index: 0;\n ${({ isCornerLabel }) => isCornerLabel && cornerLabelCSS};\n`\n\nconst StyledCornerLabel = styled(Caption)`\n transition: all ease-out 0.3s;\n opacity: 0;\n`\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\n\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\n/** Mapping between HTMLElement events and mask internal events */\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n this._handlers = {};\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts;\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n ...blockOpts\n } = normalizeOpts(this.blocks[bName]);\n const maskedBlock = createMask({\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...blockOpts,\n parent: this\n });\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) return [ch, details];\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n super({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = void 0;\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n */\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n Is positive allowed\n */\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport IMask from 'imask/esm/imask';\n\nconst MASK_PROPS = {\n // common\n mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func, PropTypes.string, PropTypes.instanceOf(RegExp), PropTypes.oneOf([Date, Number, IMask.Masked]), PropTypes.instanceOf(IMask.Masked)]),\n value: PropTypes.any,\n unmask: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['typed'])]),\n prepare: PropTypes.func,\n prepareChar: PropTypes.func,\n validate: PropTypes.func,\n commit: PropTypes.func,\n overwrite: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['shift'])]),\n eager: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['append', 'remove'])]),\n skipInvalid: PropTypes.bool,\n // events\n onAccept: PropTypes.func,\n onComplete: PropTypes.func,\n // pattern\n placeholderChar: PropTypes.string,\n displayChar: PropTypes.string,\n lazy: PropTypes.bool,\n definitions: PropTypes.object,\n blocks: PropTypes.object,\n // enum\n enum: PropTypes.arrayOf(PropTypes.string),\n // range\n maxLength: PropTypes.number,\n from: PropTypes.number,\n to: PropTypes.number,\n // date\n pattern: PropTypes.string,\n format: PropTypes.func,\n parse: PropTypes.func,\n autofix: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['pad'])]),\n // number\n radix: PropTypes.string,\n thousandsSeparator: PropTypes.string,\n mapToRadix: PropTypes.arrayOf(PropTypes.string),\n scale: PropTypes.number,\n normalizeZeros: PropTypes.bool,\n padFractionalZeros: PropTypes.bool,\n min: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n max: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n // dynamic\n dispatch: PropTypes.func,\n // ref\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })])\n};\nconst MASK_PROPS_NAMES = Object.keys(MASK_PROPS).filter(p => p !== 'value');\nconst NON_MASK_OPTIONS_PROPS_NAMES = ['value', 'unmask', 'onAccept', 'onComplete', 'inputRef'];\nconst MASK_OPTIONS_PROPS_NAMES = MASK_PROPS_NAMES.filter(pName => NON_MASK_OPTIONS_PROPS_NAMES.indexOf(pName) < 0);\nfunction IMaskMixin(ComposedComponent) {\n var _class;\n const MaskedComponent = (_class = class MaskedComponent extends React.Component {\n constructor(props) {\n super(props);\n this._inputRef = this._inputRef.bind(this);\n }\n componentDidMount() {\n if (!this.props.mask) return;\n this.initMask();\n }\n componentDidUpdate() {\n const props = this.props;\n const maskOptions = this._extractMaskOptionsFromProps(props);\n if (maskOptions.mask) {\n if (this.maskRef) {\n this.maskRef.updateOptions(maskOptions); // TODO fix\n if ('value' in props && props.value !== undefined) this.maskValue = props.value;\n } else {\n this.initMask(maskOptions);\n }\n } else {\n this.destroyMask();\n if ('value' in props && props.value !== undefined) {\n var _this$element;\n if ((_this$element = this.element) != null && _this$element.isContentEditable && this.element.tagName !== 'INPUT' && this.element.tagName !== 'TEXTAREA') this.element.textContent = props.value;else this.element.value = props.value;\n }\n }\n }\n componentWillUnmount() {\n this.destroyMask();\n }\n _inputRef(el) {\n this.element = el;\n if (this.props.inputRef) {\n if (Object.prototype.hasOwnProperty.call(this.props.inputRef, 'current')) this.props.inputRef.current = el;else this.props.inputRef(el);\n }\n }\n initMask(maskOptions) {\n if (maskOptions === void 0) {\n maskOptions = this._extractMaskOptionsFromProps(this.props);\n }\n this.maskRef = IMask(this.element, maskOptions).on('accept', this._onAccept.bind(this)).on('complete', this._onComplete.bind(this));\n if ('value' in this.props && this.props.value !== undefined) this.maskValue = this.props.value;\n }\n destroyMask() {\n if (this.maskRef) {\n this.maskRef.destroy();\n delete this.maskRef;\n }\n }\n _extractMaskOptionsFromProps(props) {\n const {\n ...cloneProps\n } = props;\n\n // keep only mask options\n Object.keys(cloneProps).filter(prop => MASK_OPTIONS_PROPS_NAMES.indexOf(prop) < 0).forEach(nonMaskProp => {\n delete cloneProps[nonMaskProp];\n });\n return cloneProps;\n }\n _extractNonMaskProps(props) {\n const {\n ...cloneProps\n } = props;\n MASK_PROPS_NAMES.forEach(maskProp => {\n delete cloneProps[maskProp];\n });\n if (!('defaultValue' in cloneProps)) cloneProps.defaultValue = props.mask ? '' : cloneProps.value;\n delete cloneProps.value;\n return cloneProps;\n }\n get maskValue() {\n if (!this.maskRef) return '';\n if (this.props.unmask === 'typed') return this.maskRef.typedValue;\n if (this.props.unmask) return this.maskRef.unmaskedValue;\n return this.maskRef.value;\n }\n set maskValue(value) {\n if (!this.maskRef) return;\n value = value == null && this.props.unmask !== 'typed' ? '' : value;\n if (this.props.unmask === 'typed') this.maskRef.typedValue = value;else if (this.props.unmask) this.maskRef.unmaskedValue = value;else this.maskRef.value = value;\n }\n _onAccept(e) {\n if (this.props.onAccept && this.maskRef) this.props.onAccept(this.maskValue, this.maskRef, e);\n }\n _onComplete(e) {\n if (this.props.onComplete && this.maskRef) this.props.onComplete(this.maskValue, this.maskRef, e);\n }\n render() {\n return React.createElement(ComposedComponent, {\n ...this._extractNonMaskProps(this.props),\n inputRef: this._inputRef\n });\n }\n }, _class.displayName = void 0, _class.propTypes = void 0, _class);\n const nestedComponentName = ComposedComponent.displayName || ComposedComponent.name || 'Component';\n MaskedComponent.displayName = \"IMask(\" + nestedComponentName + \")\";\n MaskedComponent.propTypes = MASK_PROPS;\n return React.forwardRef((props, ref) => React.createElement(MaskedComponent, {\n ...props,\n ref\n }));\n}\n\nexport { IMaskMixin as default };\n","import React from 'react';\nimport IMaskMixin from './mixin.js';\nimport 'prop-types';\nimport 'imask/esm/imask';\n\nconst IMaskInputClass = IMaskMixin(_ref => {\n let {\n inputRef,\n ...props\n } = _ref;\n return React.createElement('input', {\n ...props,\n ref: inputRef\n });\n});\nconst IMaskInputFn = (props, ref) => React.createElement(IMaskInputClass, {\n ...props,\n ref\n}) // TODO fix no idea\n;\n\nconst IMaskInput = React.forwardRef(IMaskInputFn);\n\nexport { IMaskInput as default };\n","import React, { forwardRef, useRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { IMaskMixin } from \"react-imask\"\nimport InputWithAdornments from \"../InputWithAdornments\"\n\nconst MaskedField = IMaskMixin(({ defaultValue, ...props }) => (\n <InputWithAdornments value={defaultValue} {...props} />\n))\n\nconst InputWithMask = forwardRef((props, inputRef) => {\n const {\n onChange,\n onFocus,\n onBlur,\n value: defaultValue,\n mask,\n ...other\n } = props\n const ref = useRef()\n const formattedValue =\n mask === Number\n ? defaultValue?.toString().replace(/\\./g, \",\")\n : defaultValue\n\n const handleChange = (value) => {\n if (onChange) {\n onChange({ target: { name: other.name, value }, type: \"change\" })\n }\n }\n\n const handleFocus = (e) => {\n ref.current?.maskRef?.updateOptions({ lazy: false })\n if (onFocus) onFocus(e)\n }\n\n const handleBlur = (e) => {\n if (!ref.current?.maskRef.unmaskedValue) {\n ref.current?.maskRef?.updateOptions({ lazy: true })\n }\n if (onBlur) onBlur(e)\n }\n\n return (\n <MaskedField\n {...other}\n mask={mask}\n inputRef={inputRef}\n ref={ref}\n onAccept={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n defaultValue={formattedValue}\n />\n )\n})\n\nInputWithMask.displayName = \"InputWithMask\"\n\nInputWithMask.propTypes = {\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n cornerLabel: PropTypes.string,\n disabled: PropTypes.bool,\n startIcon: PropTypes.element,\n endIcon: PropTypes.element,\n mask: PropTypes.string,\n}\n\nexport default InputWithMask\n","import React, { useMemo } from \"react\"\nimport styled from \"@emotion/styled\"\nimport { theme } from \"../../../../theme\"\n\nconst { palette } = theme\n\nfunction CountryItem({ item, selectCountryIndex }) {\n const countryIcon = useMemo(\n () =>\n item.nameCode\n .toUpperCase()\n .replace(/./g, (char) =>\n String.fromCodePoint(char.charCodeAt(0) + 127397)\n ),\n [item.nameCode]\n )\n\n const handleClick = () => {\n selectCountryIndex(item)\n }\n\n return (\n <StyledCountry className=\"KUI-Country\" onClick={handleClick}>\n <StyledTitle className=\"KUI-Country_title\">\n <StyledIcon className=\"KUI-Country_icon\">{countryIcon}</StyledIcon>\n <StyledCountryName className=\"KUI-Country_name\">\n {item.nameRus}\n </StyledCountryName>\n </StyledTitle>\n <div>\n <StyledCountryPhone className=\"KUI-Country_phone\">\n +{item.phoneCode}\n </StyledCountryPhone>\n </div>\n </StyledCountry>\n )\n}\n\nexport default CountryItem\n\nconst StyledCountry = styled.div`\n border-radius: 12px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 11px;\n cursor: pointer;\n box-sizing: border-box;\n &:hover {\n background-color: ${palette.background.light2};\n }\n`\n\nconst StyledTitle = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst StyledIcon = styled.span`\n padding-bottom: 1px;\n width: 28px;\n`\n\nconst StyledCountryName = styled.p`\n font-family: \"Inter\", sans-serif;\n letter-spacing: normal;\n margin: 0;\n padding-top: 3px;\n font-size: 14px;\n line-height: 18px;\n font-weight: 600;\n color: ${theme.palette.grey.seventy};\n`\n\nconst StyledCountryPhone = styled.p`\n font-family: \"Inter\", sans-serif;\n letter-spacing: normal;\n margin: 0;\n font-size: 12px;\n line-height: 14px;\n font-weight: 500;\n color: ${palette.grey.fiftyP};\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst SearchIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M5.15016 0.333008C7.81034 0.333008 9.96683 2.4895 9.96683 5.14967C9.96683 6.27563 9.58049 7.31135 8.93313 8.13151L11.5009 10.699C11.7222 10.9203 11.7222 11.2791 11.5009 11.5004C11.2796 11.7217 10.9208 11.7217 10.6995 11.5004L8.132 8.93264C7.31184 9.58 6.27612 9.96634 5.15016 9.96634C2.48999 9.96634 0.333496 7.80985 0.333496 5.14967C0.333496 2.4895 2.48999 0.333008 5.15016 0.333008ZM5.15016 1.46634C3.11591 1.46634 1.46683 3.11543 1.46683 5.14967C1.46683 7.18392 3.11591 8.83301 5.15016 8.83301C7.18441 8.83301 8.8335 7.18392 8.8335 5.14967C8.8335 3.11543 7.18441 1.46634 5.15016 1.46634Z\"\r\n fill=\"#7F8285\"\r\n />\r\n </svg>\r\n)\r\n\r\nSearchIcon.defaultProps = {\r\n width: 12,\r\n height: 12,\r\n}\r\n\r\nSearchIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default SearchIcon\r\n","import React, { useEffect, useRef, useState } from \"react\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport countries from \"../../../utils/countries.json\"\nimport CountryItem from \"./CountryItem\"\nimport SearchIcon from \"../../../icons/SearchIcon\"\nimport { theme } from \"../../../theme\"\n\nconst { palette } = theme\n\nfunction Dropdown({\n isOpen,\n selectCountryIndex,\n setIsOpenDropDown,\n buttonRef,\n}) {\n const [filteredCountries, setFilteredCountries] = useState(countries)\n const dropdownRef = useRef()\n\n const closePopUp = (e) => {\n if (dropdownRef.current && buttonRef.current) {\n if (\n !dropdownRef.current.contains(e.target) &&\n !buttonRef.current.contains(e.target)\n ) {\n setIsOpenDropDown(false)\n }\n }\n }\n\n useEffect(() => {\n const inputWrapper = buttonRef?.current?.parentElement?.parentElement\n if (inputWrapper) {\n if (isOpen) {\n inputWrapper.style.zIndex = \"4\"\n } else {\n inputWrapper.style.zIndex = \"1\"\n }\n }\n }, [isOpen])\n\n useEffect(() => {\n document.addEventListener(\"click\", closePopUp)\n return () => {\n document.removeEventListener(\"click\", closePopUp)\n }\n }, [])\n\n if (!isOpen) {\n return null\n }\n\n const filterCountries = (e) => {\n const query = e.target.value\n\n if (query.length > 0) {\n setFilteredCountries(\n countries.filter(\n (item) =>\n item.nameRus.toLowerCase().indexOf(query.toLowerCase()) !== -1\n )\n )\n } else {\n setFilteredCountries(countries)\n }\n }\n\n return (\n <StyledContainer\n isOpen={isOpen}\n className={classNames(\n \"KUI-DropdownContainer\",\n isOpen && \"KUI-Dropdown_open\"\n )}\n ref={dropdownRef}\n >\n <StyledSearchWrapper className=\"KUI-SearchWrapper\">\n <StyledSearch className=\"KUI-Search\">\n <StyledSearchInput\n type=\"text\"\n placeholder=\"Поиск...\"\n onChange={filterCountries}\n className=\"KUI-SearchInput\"\n />\n <span>\n <SearchIcon />\n </span>\n </StyledSearch>\n </StyledSearchWrapper>\n <StyledDropdown className=\"KUI-Dropdown\">\n {filteredCountries.map((item, key) => (\n <CountryItem\n key={key}\n item={item}\n selectCountryIndex={selectCountryIndex}\n />\n ))}\n </StyledDropdown>\n </StyledContainer>\n )\n}\n\nexport default Dropdown\n\nconst StyledContainer = styled.div`\n width: 100%;\n max-height: 283px;\n display: ${({ isOpen }) => (isOpen ? \"block\" : \"none\")};\n position: absolute;\n background-color: ${palette.grey.zero};\n z-index: 3;\n top: 50px;\n box-shadow: ${theme.shadows.shadow3};\n border-radius: 0 0 8px 8px;\n user-select: none;\n padding: 5px 8px 8px;\n box-sizing: border-box;\n`\n\nconst StyledSearchWrapper = styled.div`\n padding: 8px 0;\n position: sticky;\n top: 0;\n background-color: ${palette.grey.zero};\n border-radius: 8px;\n`\n\nconst StyledSearch = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 40px;\n background-color: ${palette.background.light2};\n padding: 0 12px;\n border-radius: 8px;\n`\n\nconst StyledSearchInput = styled.input`\n border: none;\n width: calc(100% - 18px);\n background-color: transparent;\n height: 100%;\n outline: none;\n`\n\nconst StyledDropdown = styled.div`\n width: 100%;\n max-height: 219px;\n padding: 0 8px 0 0;\n box-sizing: border-box;\n overflow: auto;\n -ms-overflow-style: none;\n scrollbar-width: none;\n overflow-y: scroll;\n overflow-x: hidden;\n user-select: none;\n ::-webkit-scrollbar {\n width: 4px;\n position: absolute;\n right: 8px;\n }\n ::-webkit-scrollbar-track,\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n transition: all ease-out 0.3s;\n }\n\n ::-webkit-resizer,\n ::-webkit-scrollbar-button,\n ::-webkit-scrollbar-corner {\n display: none;\n }\n ::-webkit-scrollbar-track {\n background: ${theme.palette.grey.fifteenB};\n }\n\n ::-webkit-scrollbar-thumb {\n background: ${theme.palette.grey.thirty};\n }\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst HalfArrowIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M6.86193 0.195262L4 3.05719L1.13807 0.195262C0.877722 -0.0650874 0.455612 -0.0650874 0.195262 0.195262C-0.0650874 0.455612 -0.0650874 0.877722 0.195262 1.13807L3.5286 4.4714C3.78895 4.73175 4.21105 4.73175 4.4714 4.4714L7.80474 1.13807C8.06509 0.877722 8.06509 0.455612 7.80474 0.195262C7.54439 -0.0650874 7.12228 -0.0650874 6.86193 0.195262Z\"\r\n fill=\"#8A94A6\"\r\n />\r\n </svg>\r\n)\r\n\r\nHalfArrowIcon.defaultProps = {\r\n width: 8,\r\n height: 5,\r\n}\r\n\r\nHalfArrowIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default HalfArrowIcon\r\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport InputWithMask from \"../InputWithMask\"\nimport countries from \"../../utils/countries.json\"\nimport Caption from \"../Caption\"\nimport Dropdown from \"./Dropdown\"\nimport HalfArrowIcon from \"../../icons/HalfArrowIcon\"\nimport { theme } from \"../../theme\"\nimport useForkRef from \"../../utils/useForkRef\"\n\nconst { palette } = theme\n\nconst InputWithCountryDropdown = forwardRef(\n ({ onSelectCountry, hiddenInputProps, ...inputProps }, ref) => {\n const selectedCountryCode = hiddenInputProps?.value\n ? String(hiddenInputProps.value)\n : \"7\"\n const selectedCountryIndex = countries.findIndex(\n (country) => country.phoneCode === selectedCountryCode\n )\n const [selectedCountry, setSelectedCountry] = useState(\n selectedCountryIndex < 0 ? 168 : selectedCountryIndex\n )\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n const buttonRef = useRef()\n const inputRef = useRef()\n\n const selectCountryIndex = (item) => {\n setSelectedCountry(\n countries.reduce(\n (acc, country, index) => (country.name === item.name ? index : acc),\n 0\n )\n )\n setIsDropdownOpen(false)\n if (onSelectCountry) {\n onSelectCountry(item)\n }\n }\n\n const handleClick = () => {\n setIsDropdownOpen(!isDropdownOpen)\n }\n\n useEffect(() => {\n if (isDropdownOpen && inputRef.current) {\n inputRef.current.focus()\n }\n }, [isDropdownOpen])\n\n const forwardedRef = useForkRef(ref, inputRef)\n\n return (\n <StyledDropdownWrapper className=\"KUI-InputDropdown_wrapper\">\n <StyledInput\n ref={forwardedRef}\n label=\"Номер телефона\"\n mask={countries[selectedCountry].mask}\n isDropdownOpen={isDropdownOpen}\n startIcon={\n <StyledPhoneCodeButton\n type=\"button\"\n className=\"KUI-InputDropdown_button-phone-code\"\n onClick={handleClick}\n ref={buttonRef}\n >\n <Caption size=\"s\" weight={500}>\n +{countries[selectedCountry].phoneCode}\n </Caption>\n <StyledPhoneCodeIcon isReverse={isDropdownOpen}>\n <HalfArrowIcon />\n </StyledPhoneCodeIcon>\n </StyledPhoneCodeButton>\n }\n {...inputProps}\n />\n <Dropdown\n isOpen={isDropdownOpen}\n selectCountryIndex={selectCountryIndex}\n setIsOpenDropDown={setIsDropdownOpen}\n buttonRef={buttonRef}\n />\n <input\n style={{ display: \"none\" }}\n readOnly\n aria-label=\"phone_code\"\n {...hiddenInputProps}\n value={countries[selectedCountry].phoneCode}\n />\n </StyledDropdownWrapper>\n )\n }\n)\n\nInputWithCountryDropdown.displayName = \"InputWithCountryDropdown\"\n\nInputWithCountryDropdown.propTypes = {\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n disabled: PropTypes.bool,\n}\n\nexport default InputWithCountryDropdown\n\nconst StyledDropdownWrapper = styled.div`\n position: relative;\n`\n\nconst StyledPhoneCodeButton = styled.button`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 80px;\n height: 40px;\n box-sizing: border-box;\n background: ${palette.background.light2};\n border-radius: 8px;\n border: none;\n margin: 0;\n box-shadow: none;\n cursor: pointer;\n padding: 8px 14px 8px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n user-select: none;\n`\n\nconst StyledPhoneCodeIcon = styled.span`\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n transition: all linear 0.2s;\n transform: ${({ isReverse }) => (isReverse ? \"rotate(180deg)\" : \"none\")};\n }\n`\n\nconst StyledInput = styled(InputWithMask)`\n .KUI-InputMessage {\n opacity: ${({ isDropdownOpen }) => (isDropdownOpen ? 0 : 1)};\n }\n`\n","import React, { forwardRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport { theme } from \"../../theme\"\n\nconst palette = theme.palette\n\nconst Checkbox = forwardRef((props, ref) => {\n const { className, label, error, inputRef, ...checkboxProps } = props\n\n return (\n <StyledLabel className={classNames(\"KUI-Checkbox_label\", className)}>\n <StyledCheckbox\n ref={inputRef}\n type=\"checkbox\"\n className=\"KUI-Checkbox\"\n {...checkboxProps}\n />\n <StyledCustomCheckbox\n error={!!error}\n className={classNames(\n \"KUI-Checkbox_custom\",\n !!error && \"KUI-Checkbox_error\"\n )}\n />\n {!!label && (\n <StyledCheckboxLabel className=\"KUI-Label_checkbox\">\n {label}\n </StyledCheckboxLabel>\n )}\n </StyledLabel>\n )\n})\n\nCheckbox.defaultProps = {\n label: \"\",\n}\n\nCheckbox.propTypes = {\n label: PropTypes.any,\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n}\n\nCheckbox.displayName = \"Checkbox\"\n\nexport default Checkbox\n\nconst errorCSS = ({ error }) =>\n error &&\n css`\n border-color: ${palette.red.fiftyP};\n `\n\nconst StyledCustomCheckbox = styled.span`\n border-radius: 6px;\n padding: 1px;\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 1px solid ${palette.grey.fifteenB};\n transition: all linear 0.3s;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n ${errorCSS};\n &:before {\n content: \"\";\n display: block;\n width: 16px;\n height: 16px;\n border-radius: 4px;\n background-color: ${palette.grey.zero};\n transition: all linear 0.2s;\n }\n`\n\nconst StyledCheckbox = styled.input`\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n width: 16px;\n height: 16px;\n cursor: pointer;\n &:checked + .KUI-Checkbox_custom:before {\n background-color: ${palette.brand.main};\n background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"%3E%3Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z\" fill=\"%23fff\"/%3E%3C/svg%3E');\n }\n &:disabled + .KUI-Checkbox_custom {\n background-color: ${palette.background.light2};\n border-color: ${palette.background.light2};\n &:before {\n background-color: ${palette.background.light2};\n }\n }\n &:disabled:checked + .KUI-Checkbox_custom:before {\n background-color: ${palette.grey.fifteenB};\n }\n`\n\nconst StyledLabel = styled.label`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n &:hover {\n .KUI-Checkbox:not(:disabled):not(:checked) + .KUI-Checkbox_custom {\n border-color: ${palette.brand.main};\n }\n .KUI-Checkbox:not(:disabled):checked + .KUI-Checkbox_custom {\n border-color: ${palette.brand.light};\n }\n }\n`\n\nconst StyledCheckboxLabel = styled.span`\n margin-left: 10px;\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst CloseIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox=\"0 0 26 26\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.93909 6.93909C7.27382 6.60435 7.81654 6.60435 8.15127 6.93909L13 11.7878L17.8487 6.93909C18.1835 6.60435 18.7262 6.60435 19.0609 6.93909C19.3957 7.27382 19.3957 7.81653 19.0609 8.15127L14.2122 13L19.0609 17.8487C19.3957 18.1835 19.3957 18.7262 19.0609 19.0609C18.7262 19.3956 18.1835 19.3956 17.8487 19.0609L13 14.2122L8.15127 19.0609C7.81654 19.3956 7.27382 19.3956 6.93909 19.0609C6.60435 18.7262 6.60435 18.1835 6.93909 17.8487L11.7878 13L6.93909 8.15127C6.60435 7.81653 6.60435 7.27382 6.93909 6.93909Z\"\r\n fill=\"#7F8285\"\r\n />\r\n </svg>\r\n)\r\n\r\nCloseIcon.defaultProps = {\r\n width: 26,\r\n height: 26,\r\n}\r\n\r\nCloseIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default CloseIcon\r\n","import React, { useEffect, useRef } from \"react\"\nimport classNames from \"classnames\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport { css, Global } from \"@emotion/react\"\nimport { createPortal } from \"react-dom\"\nimport Heading from \"../Heading\"\nimport CloseIcon from \"../../icons/CloseIcon\"\nimport { theme } from \"../../theme\"\nimport Caption from \"../Caption\"\nimport Button from \"../Button\"\n\nconst { breakpoints, palette } = theme\n\nfunction Modal(props) {\n const {\n isOpen,\n handleClose,\n isScrollable,\n title,\n description,\n children,\n isHasHeader,\n className,\n size,\n icon,\n ...otherProps\n } = props\n const modalRef = useRef(null)\n\n useEffect(() => {\n if (isOpen) {\n document.body.classList.add(\"KUI-Modal_body\")\n } else {\n document.body.classList.remove(\"KUI-Modal_body\")\n }\n }, [isOpen])\n\n useEffect(\n () => () => {\n document.body.classList.remove(\"KUI-Modal_body\")\n },\n []\n )\n\n const closeModal = (e) => {\n e.stopPropagation()\n if (modalRef.current && !modalRef.current.contains(e.target)) {\n handleClose()\n }\n }\n\n if (!isOpen) {\n return null\n }\n\n return createPortal(\n <StyledContainer\n className=\"KUI-Modal_container\"\n onClick={closeModal}\n {...otherProps}\n >\n <Global\n styles={css`\n .KUI-Modal_body {\n overflow: hidden;\n padding-right: 17px;\n }\n `}\n />\n <StyledModal\n ref={modalRef}\n isOpen={isOpen}\n size={size}\n className={classNames(\n \"KUI-Modal\",\n isOpen && \"KUI-Modal_open\",\n isScrollable && \"KUI-Modal_scrollable\",\n className\n )}\n >\n <StyledHeaderWrapper className=\"KUI-Modal_header\">\n {title && (\n <StyledModalTitle className=\"KUI-Modal_title\">\n {title}\n </StyledModalTitle>\n )}\n {description && (\n <StyledDescriptionWrapper className=\"KUI-Modal_description\">\n <StyledDescription size=\"s\" color=\"fiftyP\">\n {description}\n </StyledDescription>\n </StyledDescriptionWrapper>\n )}\n <StyledHeadingIconsWrapper>\n <div>{icon}</div>\n <Button\n className=\"KUI-Modal_close-button\"\n isCircle\n size=\"xxs\"\n variant=\"transparent\"\n onClick={handleClose}\n >\n <CloseIcon />\n </Button>\n </StyledHeadingIconsWrapper>\n </StyledHeaderWrapper>\n {children}\n </StyledModal>\n </StyledContainer>,\n document.body\n )\n}\n\nModal.defaultProps = {\n isOpen: false,\n handleClose: null,\n title: \"\",\n size: \"small\",\n}\n\nModal.propTypes = {\n isOpen: PropTypes.bool,\n handleClose: PropTypes.func,\n title: PropTypes.string,\n size: PropTypes.oneOf([\"small\", \"large\"]),\n}\n\nexport default Modal\n\nconst StyledContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n z-index: 1500;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: all linear 0.2s;\n`\n\nconst StyledModal = styled.div`\n border-radius: 12px;\n overflow: visible;\n overflow-y: visible;\n box-shadow: 0px 11px 15px -7px rgb(0 0 0 / 20%),\n 0px 24px 38px 3px rgb(0 0 0 / 14%), 0px 9px 46px 8px rgb(0 0 0 / 12%);\n -ms-overflow-style: none;\n scrollbar-width: none;\n background-color: ${palette.grey.zero};\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n max-height: 720px;\n width: ${({ size }) => (size === \"small\" ? 480 : 720)}px;\n display: ${({ isOpen }) => (isOpen ? \"block\" : \"none\")};\n &::-webkit-scrollbar {\n width: 0;\n }\n @media (max-width: 720px) {\n max-height: 90vh;\n }\n @media (max-width: ${breakpoints.xs}px) {\n position: absolute;\n bottom: 0;\n width: 100vw;\n border-radius: 12px 12px 0 0;\n }\n .KUI-Modal_scrollable {\n overflow: auto;\n overflow-y: auto;\n }\n`\n\nconst StyledHeaderWrapper = styled.div`\n top: 0;\n width: 100%;\n background: ${theme.palette.grey.zero};\n z-index: 5;\n border-radius: 12px 12px 0 0;\n position: sticky;\n box-sizing: border-box;\n text-align: center;\n @media (max-width: 600px) {\n padding: 0 16px;\n }\n`\n\nconst StyledModalTitle = styled(Heading)`\n font-weight: 700;\n padding: 36px 40px 8px;\n @media (max-width: 661px) {\n padding: 40px 24px 13px;\n font-size: 18px;\n line-height: 24px;\n }\n`\n\nconst StyledDescriptionWrapper = styled.div`\n padding: 0 40px;\n @media (max-width: 900px) {\n padding: 0 24px;\n }\n`\n\nconst StyledDescription = styled(Caption)`\n @media (max-width: 600px) {\n font-size: 13px;\n line-height: 20px;\n }\n`\n\nconst StyledHeadingIconsWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n cursor: pointer;\n padding: 16px;\n z-index: 5;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n`\n","const switchVariants = {\n s: {\n width: 40,\n height: 22,\n before: 14,\n },\n m: {\n width: 36,\n height: 24,\n before: 16,\n },\n l: {\n width: 56,\n height: 34,\n before: 26,\n },\n}\n\nexport default switchVariants\n","import React, { forwardRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport { theme } from \"../../theme\"\nimport switchVariants from \"./variants\"\nimport useForkRef from \"../../utils/useForkRef\"\n\nconst { palette } = theme\n\nconst Switch = forwardRef((props, ref) => {\n const { size, className, label, error, inputRef, ...switchProps } = props\n const forwardedRef = useForkRef(inputRef, ref)\n\n return (\n <StyledLabel className={classNames(\"KUI-Switch_label\", className)}>\n <StyledSwitch\n variant={switchVariants[size]}\n ref={forwardedRef}\n type=\"checkbox\"\n className=\"KUI-Switch\"\n {...switchProps}\n />\n <StyledCustomSwitch\n variant={switchVariants[size]}\n error={!!error}\n className={classNames(\n \"KUI-Switch_custom\",\n !!error && \"KUI-Switch_error\"\n )}\n />\n {!!label && (\n <StyledSwitchLabel className=\"KUI-Label_switch\">\n {label}\n </StyledSwitchLabel>\n )}\n </StyledLabel>\n )\n})\n\nSwitch.defaultProps = {\n size: \"s\",\n}\n\nSwitch.propTypes = {\n label: PropTypes.string,\n size: PropTypes.oneOf([\"s\", \"m\", \"l\"]),\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n}\n\nSwitch.displayName = \"Switch\"\n\nexport default Switch\n\nconst switchVariantCSS = ({ variant }) => css`\n width: ${variant.width}px;\n height: ${variant.height}px;\n &::before {\n width: ${variant.before}px;\n }\n`\n\nconst switchErrorCSS = ({ error }) =>\n error &&\n css`\n border-color: ${palette.red.fiftyP};\n background-color: ${palette.red.five};\n `\n\nconst StyledCustomSwitch = styled.span`\n background: #c9ced6;\n border-radius: 24px;\n padding: 3px;\n box-sizing: border-box;\n border: 1px solid transparent;\n transition: all linear 0.3s;\n display: flex;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n &:before {\n content: \"\";\n background: ${palette.grey.zero};\n border-radius: 50%;\n height: 100%;\n transition: all ease-out 0.3s;\n margin-left: 0;\n }\n ${switchVariantCSS};\n ${switchErrorCSS};\n`\n\nconst StyledSwitch = styled.input`\n opacity: 0;\n position: absolute;\n z-index: -1;\n &:checked + .KUI-Switch_custom {\n background-color: ${palette.brand.main};\n &:before {\n margin-left: calc(100% - ${({ variant }) => `${variant.before}px`});\n }\n }\n &:disabled + .KUI-Switch_custom {\n background-color: ${palette.grey.zero};\n border-color: ${palette.grey.fifteenB};\n &:before {\n background-color: ${palette.grey.fifteenB};\n }\n }\n &:checked:disabled + .KUI-Switch_custom {\n background-color: ${palette.background.light1};\n }\n`\n\nconst StyledLabel = styled.label`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n`\n\nconst StyledSwitchLabel = styled.span`\n margin-left: 14px;\n`\n","import React, { forwardRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport classNames from \"classnames\"\nimport { theme } from \"../../theme\"\nimport Caption from \"../Caption\"\n\nconst { palette } = theme\n\nconst Radio = forwardRef((props, ref) => {\n const {\n label,\n value,\n inputRef,\n fullWidth,\n className,\n checked,\n isSquare,\n ...radioProps\n } = props\n\n return (\n <StyledLabel\n ref={ref}\n className={classNames(\n \"KUI-Radio_label\",\n checked && \"KUI-Radio_label-checked\",\n isSquare && \"KUI-Radio_label-square\",\n label && \"KUI-Radio_with-label\",\n fullWidth && \"KUI-Radio_label-fullwidth\",\n className\n )}\n >\n <StyledRadio\n ref={inputRef}\n value={value}\n type=\"radio\"\n className=\"KUI-Radio\"\n checked={checked}\n {...radioProps}\n />\n <StyledCustomRadio className=\"KUI-Radio_custom\" />\n {!!label && (\n <StyledRadioLabel\n size=\"s\"\n colorGroup={checked ? \"brand\" : \"grey\"}\n color={checked ? \"main\" : \"fiftyP\"}\n weight={500}\n className=\"KUI-Label_radio\"\n >\n {label}\n </StyledRadioLabel>\n )}\n </StyledLabel>\n )\n})\n\nRadio.defaultProps = {\n label: \"\",\n value: \"\",\n name: \"radio\",\n}\n\nRadio.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n}\n\nRadio.displayName = \"Radio\"\n\nexport default Radio\n\nconst StyledCustomRadio = styled.span`\n border-radius: 50%;\n padding: 1px;\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 1px solid ${palette.grey.fifteenB};\n transition: all linear 0.3s;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n &:before {\n content: \"\";\n display: block;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: ${palette.grey.zero};\n transition: all linear 0.2s;\n }\n`\n\nconst StyledRadio = styled.input`\n opacity: 0;\n position: absolute;\n z-index: -1;\n &:checked + .KUI-Radio_custom:before {\n background-color: ${palette.brand.main};\n background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"%3E%3Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z\" fill=\"%23fff\"/%3E%3C/svg%3E');\n }\n &:disabled + .KUI-Radio_custom {\n background-color: ${palette.background.light2};\n border-color: ${palette.background.light2};\n &:before {\n background-color: ${palette.background.light2};\n }\n }\n &:disabled:checked + .KUI-Radio_custom:before {\n background-color: ${palette.grey.fifteenB};\n }\n`\n\nconst StyledLabel = styled.label`\n display: flex;\n align-items: center;\n cursor: pointer;\n border-radius: 66px;\n width: fit-content;\n &.KUI-Radio_label-checked {\n background: ${palette.brand.light};\n }\n &.KUI-Radio_label-square {\n border-radius: 12px;\n }\n &.KUI-Radio_with-label {\n padding: 6px 9px 6px 6px;\n input:checked + .KUI-Radio_custom {\n border-color: transparent;\n }\n }\n &.KUI-Radio_label-fullwidth {\n width: 100%;\n }\n &:hover {\n .KUI-Radio:not(:disabled):not(:checked) + .KUI-Radio_custom {\n border-color: ${palette.brand.main};\n }\n .KUI-Radio:not(:disabled):checked + .KUI-Radio_custom {\n border-color: ${palette.brand.light};\n }\n }\n`\n\nconst StyledRadioLabel = styled(Caption)`\n margin-left: 5px;\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst FileIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.10782 5.22682C6.33097 5.00366 6.69278 5.00366 6.91594 5.22682C7.13909 5.44998 7.13909 5.81179 6.91594 6.03494L4.53198 8.4189C4.20799 8.74289 4.18918 9.28829 4.53198 9.63109C4.87477 9.97388 5.42017 9.95507 5.74416 9.63109L10.1888 5.18642C11.104 4.2712 11.054 2.81907 10.1888 1.95393C9.32369 1.08879 7.87156 1.03871 6.95634 1.95393L2.51167 6.3986C1.05411 7.85616 1.08129 10.221 2.51167 11.6514C3.94205 13.0818 6.3069 13.109 7.76447 11.6514L10.1484 9.26743C10.3716 9.04427 10.7334 9.04427 10.9565 9.26743C11.1797 9.49059 11.1797 9.8524 10.9565 10.0756L8.57259 12.4595C6.6645 14.3676 3.57614 14.3321 1.70355 12.4595C-0.169037 10.5869 -0.204535 7.49856 1.70355 5.59048L6.14822 1.14581C7.52269 -0.228658 9.69748 -0.153665 10.997 1.14581C12.2964 2.44528 12.3714 4.62007 10.997 5.99454L6.55228 10.4392C5.79396 11.1975 4.5259 11.2413 3.72386 10.4392C2.92181 9.63716 2.96554 8.3691 3.72386 7.61078L6.10782 5.22682Z\"\r\n fill=\"#7F8285\"\r\n />\r\n </svg>\r\n)\r\n\r\nFileIcon.defaultProps = {\r\n width: 12,\r\n height: 14,\r\n}\r\n\r\nFileIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default FileIcon\r\n","import React, { forwardRef, useState } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport Text from \"../Text\"\r\nimport FileIcon from \"../../icons/FileIcon\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { palette } = theme\r\n\r\nconst InputFile = forwardRef((props, ref) => {\r\n const { className, label, name, ...inputProps } = props\r\n const [value, setValue] = useState(label)\r\n\r\n const setFileName = (e) => {\r\n if (e.target.files[0]) {\r\n setValue(e.target.files[0].name)\r\n } else {\r\n setValue(label)\r\n }\r\n\r\n if (inputProps.onInput) inputProps.onInput(e)\r\n }\r\n\r\n return (\r\n <StyledWrapper className={classNames(\"KUI-InputFile_wrapper\", className)}>\r\n <StyledLabel className=\"KUI-InputFile_label\">\r\n <StyledInput\r\n type=\"file\"\r\n className=\"KUI-InputFile\"\r\n {...inputProps}\r\n onInput={setFileName}\r\n />\r\n\r\n <StyledTitle\r\n active={value !== label}\r\n size=\"s\"\r\n className={classNames(\r\n \"KUI-InputFile_title\",\r\n value !== label && \"KUI-InputFile_value\"\r\n )}\r\n >\r\n {value}\r\n </StyledTitle>\r\n <FileIcon />\r\n </StyledLabel>\r\n </StyledWrapper>\r\n )\r\n})\r\n\r\nInputFile.displayName = \"InputFile\"\r\n\r\nInputFile.propTypes = {\r\n label: PropTypes.string,\r\n}\r\n\r\nexport default InputFile\r\n\r\nconst StyledWrapper = styled.div`\r\n background-color: ${palette.grey.zero};\r\n border: 1px solid ${palette.grey.fifteenB};\r\n height: 56px;\r\n box-sizing: border-box;\r\n border-radius: 8px;\r\n padding: 0 16px;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n`\r\n\r\nconst StyledInput = styled.input`\r\n display: none;\r\n`\r\n\r\nconst StyledLabel = styled.label`\r\n display: flex;\r\n cursor: pointer;\r\n justify-content: space-between;\r\n align-items: center;\r\n height: 100%;\r\n`\r\nconst titleActiveCSS = css`\r\n color: ${palette.grey.seventy};\r\n font-weight: 500;\r\n`\r\n\r\nconst StyledTitle = styled(Text)`\r\n color: ${palette.grey.fiftyP};\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n max-width: calc(100% - 20px);\r\n ${({ active }) => active && titleActiveCSS};\r\n`\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nfunction Divider({ className }) {\r\n return <StyledDivider className={classNames(\"KUI-Divider\", className)} />\r\n}\r\n\r\nDivider.defaultProps = {\r\n className: \"\",\r\n}\r\n\r\nDivider.propTypes = {\r\n className: PropTypes.string,\r\n}\r\n\r\nexport default Divider\r\n\r\nconst StyledDivider = styled.hr`\r\n height: 1px;\r\n border: none;\r\n background-color: ${theme.palette.grey.fifteenB};\r\n margin: 0;\r\n`\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst breakpoints = theme.breakpoints\r\n\r\nconst Container = forwardRef(({ className, ...props }, ref) => (\r\n <StyledContainer\r\n ref={ref}\r\n className={classNames(\"KUI-Container\", className)}\r\n {...props}\r\n />\r\n))\r\n\r\nContainer.displayName = \"Container\"\r\n\r\nexport default Container\r\n\r\nconst StyledContainer = styled.div`\r\n margin: 0 auto;\r\n box-sizing: border-box;\r\n padding: 0 16px;\r\n width: 100%;\r\n @media (min-width: 1280px) {\r\n max-width: 1280px;\r\n }\r\n @media (min-width: ${breakpoints.xs}px) {\r\n padding: 0 24px;\r\n }\r\n`\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst breakpoints = theme.breakpoints\r\n\r\nconst Grid = forwardRef(\r\n ({ item, container, className, ...otherProps }, ref) => (\r\n <StyledGrid\r\n ref={ref}\r\n item={item}\r\n container={container}\r\n className={classNames(\r\n item && \"KUI-Grid_Item\",\r\n container && \"KUI-Grid_Container\",\r\n className\r\n )}\r\n {...otherProps}\r\n />\r\n )\r\n)\r\n\r\nGrid.displayName = \"Grid\"\r\n\r\nGrid.propTypes = {\r\n spacing: PropTypes.number,\r\n justify: PropTypes.oneOf([\r\n \"center\",\r\n \"flex-start\",\r\n \"flex-end\",\r\n \"space-between\",\r\n ]),\r\n alignItems: PropTypes.oneOf([\"center\", \"flex-start\", \"flex-end\"]),\r\n alignContent: PropTypes.oneOf([\"center\", \"flex-start\", \"flex-end\"]),\r\n direction: PropTypes.oneOf([\"column\", \"row\"]),\r\n}\r\n\r\nexport default Grid\r\n\r\nconst containerSpacingCSS = (spacing) => css`\r\n width: calc(100% + (${theme.settings.spacing} * ${spacing}px));\r\n margin-top: calc(0px - ((${theme.settings.spacing} * ${spacing}px)));\r\n margin-left: calc(0px - ((${theme.settings.spacing} * ${spacing}px)));\r\n & > .KUI-Grid_Item {\r\n padding-left: calc((${theme.settings.spacing} * ${spacing}px));\r\n padding-top: calc((${theme.settings.spacing} * ${spacing}px));\r\n }\r\n`\r\n\r\nconst containerCSS = (props) => css`\r\n display: flex;\r\n flex-wrap: ${props.wrap || \"wrap\"};\r\n box-sizing: border-box;\r\n width: 100%;\r\n justify-content: ${props.justify || \"unset\"};\r\n align-items: ${props.alignItems || \"unset\"};\r\n align-content: ${props.alignContent || \"unset\"};\r\n flex-direction: ${props.direction || \"unset\"};\r\n ${props.spacing && containerSpacingCSS(props.spacing)}\r\n`\r\n\r\nconst itemSizeCSS = (size) =>\r\n size &&\r\n css`\r\n max-width: ${size === \"auto\"\r\n ? \"auto\"\r\n : `calc(100% / (${theme.settings.columns} / ${size}))`};\r\n flex-basis: ${size === \"auto\"\r\n ? \"auto\"\r\n : `calc(100% / (${theme.settings.columns} / ${size}))`};\r\n `\r\n\r\nconst itemCSS = (props) => css`\r\n margin: 0;\r\n box-sizing: border-box;\r\n flex-grow: 0;\r\n @media (min-width: 0px) {\r\n ${itemSizeCSS(props.xs)};\r\n }\r\n @media (min-width: ${breakpoints.xs + 1}px) {\r\n ${itemSizeCSS(props.sm)};\r\n }\r\n @media (min-width: ${breakpoints.sm + 1}px) {\r\n ${itemSizeCSS(props.md)};\r\n }\r\n @media (min-width: ${breakpoints.md + 1}px) {\r\n ${itemSizeCSS(props.lg)};\r\n }\r\n @media (min-width: ${breakpoints.xl}px) {\r\n ${itemSizeCSS(props.xl)};\r\n }\r\n`\r\n\r\nconst StyledGrid = styled.div`\r\n ${({ item, ...other }) => item && itemCSS(other)}\r\n ${({ container, ...other }) => container && containerCSS(other)}\r\n`\r\n","import React, { forwardRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { spacing } = theme.settings\r\nconst Box = forwardRef((props, ref) => <StyledBox ref={ref} {...props} />)\r\n\r\nBox.propTypes = {\r\n pt: PropTypes.number,\r\n pb: PropTypes.number,\r\n pr: PropTypes.number,\r\n pl: PropTypes.number,\r\n mt: PropTypes.number,\r\n mb: PropTypes.number,\r\n mr: PropTypes.number,\r\n ml: PropTypes.number,\r\n}\r\n\r\nBox.displayName = \"Box\"\r\n\r\nexport default Box\r\n\r\nconst StyledBox = styled.div`\r\n ${({ mt }) => mt && `margin-top: ${mt * spacing}px`};\r\n ${({ mb }) => mb && `margin-bottom: ${mb * spacing}px`};\r\n ${({ mr }) => mr && `margin-right: ${mr * spacing}px`};\r\n ${({ ml }) => ml && `margin-left: ${ml * spacing}px`};\r\n\r\n ${({ pt }) => pt && `padding-top: ${pt * spacing}px`};\r\n ${({ pb }) => pb && `padding-bottom: ${pb * spacing}px`};\r\n ${({ pr }) => pr && `padding-right: ${pr * spacing}px`};\r\n ${({ pl }) => pl && `padding-left: ${pl * spacing}px`};\r\n`\r\n","import React, { useRef } from \"react\"\r\nimport styled from \"@emotion/styled\"\r\nimport classNames from \"classnames\"\r\n\r\nfunction Accordion(props) {\r\n const { children, onChange, expanded, className, disabled, ...otherProps } =\r\n props\r\n const detailsBlock = useRef(null)\r\n const [summary, ...otherChildren] = React.Children.toArray(children)\r\n\r\n const handleTransitionEnd = () => {\r\n if (detailsBlock.current.style.height !== \"0px\") {\r\n detailsBlock.current.style.height = \"auto\"\r\n }\r\n }\r\n\r\n return (\r\n <StyledAccordion\r\n className={classNames(\"KUI-Accordion\", className)}\r\n {...otherProps}\r\n >\r\n <div>\r\n {React.cloneElement(summary, {\r\n detailsBlock,\r\n onChange,\r\n expanded,\r\n disabled,\r\n })}\r\n </div>\r\n <StyledCollapse\r\n className=\"KUI-Collapse\"\r\n onTransitionEnd={handleTransitionEnd}\r\n ref={detailsBlock}\r\n >\r\n {otherChildren}\r\n </StyledCollapse>\r\n </StyledAccordion>\r\n )\r\n}\r\n\r\nexport default Accordion\r\n\r\nconst StyledAccordion = styled.div`\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: transparent;\r\n`\r\n\r\nconst StyledCollapse = styled.div`\r\n height: 0;\r\n overflow: hidden;\r\n transition: height 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n`\r\n","import React, { useEffect, useState } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nfunction AccordionSummary({\r\n detailsBlock,\r\n expanded: defaultExpanded,\r\n onChange,\r\n className,\r\n children,\r\n expandIcon,\r\n contentStyles,\r\n expandedStyles,\r\n iconStyles,\r\n disabled,\r\n ...otherProps\r\n}) {\r\n const [expanded, setExpanded] = useState(!!defaultExpanded)\r\n\r\n const handleClick = () => {\r\n setExpanded((prev) => !prev)\r\n }\r\n\r\n useEffect(() => {\r\n setExpanded(defaultExpanded)\r\n }, [defaultExpanded])\r\n\r\n useEffect(() => {\r\n if (detailsBlock) {\r\n if (expanded) {\r\n detailsBlock.current.style.height = `${detailsBlock.current?.scrollHeight}px`\r\n } else {\r\n detailsBlock.current.style.height = `${detailsBlock.current?.scrollHeight}px`\r\n window\r\n .getComputedStyle(detailsBlock.current, null)\r\n .getPropertyValue(\"height\")\r\n detailsBlock.current.style.height = \"0\"\r\n }\r\n }\r\n if (onChange) {\r\n onChange(expanded)\r\n }\r\n }, [expanded])\r\n\r\n return (\r\n <StyledAccordionSummary\r\n onClick={handleClick}\r\n className={classNames(\r\n \"KUI-Accordion_Summary\",\r\n disabled && \"KUI-Accordion_Summary-disabled\",\r\n className\r\n )}\r\n {...otherProps}\r\n >\r\n <StyledSummaryContent\r\n className={classNames(\r\n \"KUI-Accordion_Summary-Content\",\r\n expanded && \"KUI-Accordion_expanded\",\r\n expanded && expandedStyles,\r\n contentStyles\r\n )}\r\n expanded={expanded}\r\n >\r\n {children}\r\n </StyledSummaryContent>\r\n <StyledSummaryIcon\r\n expanded={expanded}\r\n className={classNames(\r\n \"KUI-Accordion_Summary-Icon\",\r\n expanded && \"KUI-Accordion_expanded\",\r\n expanded && expandedStyles,\r\n iconStyles\r\n )}\r\n >\r\n {expandIcon}\r\n </StyledSummaryIcon>\r\n </StyledAccordionSummary>\r\n )\r\n}\r\n\r\nAccordionSummary.propTypes = {\r\n expandIcon: PropTypes.element,\r\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\r\n}\r\n\r\nexport default AccordionSummary\r\n\r\nconst StyledAccordionSummary = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n`\r\n\r\nconst StyledSummaryContent = styled(\"div\", {\r\n shouldForwardProp: (prop) => prop !== \"expanded\",\r\n})`\r\n margin: 12px 0;\r\n display: flex;\r\n width: 100%;\r\n transition: margin 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n .KUI-Accordion_Summary-disabled {\r\n pointer-events: none;\r\n }\r\n`\r\n\r\nconst StyledSummaryIcon = styled(\"div\", {\r\n shouldForwardProp: (prop) => prop !== \"expanded\",\r\n})`\r\n transform: ${({ expanded }) =>\r\n expanded ? \"rotate(180deg)\" : \"rotate(0deg)\"};\r\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n`\r\n","import React from \"react\"\r\n\r\nfunction AccordionDetails(props) {\r\n return <div {...props} />\r\n}\r\n\r\nexport default AccordionDetails\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport { keyframes } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nfunction Skeleton({ className, ...otherProps }) {\r\n return (\r\n <StyledSkeleton\r\n className={classNames(\"KUI-Skeleton\", className)}\r\n {...otherProps}\r\n />\r\n )\r\n}\r\n\r\nexport default Skeleton\r\n\r\nconst waveAnim = keyframes`\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 50% {\r\n transform: translateX(100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n`\r\n\r\nconst StyledSkeleton = styled.span`\r\n overflow: hidden;\r\n position: relative;\r\n display: block;\r\n background-color: rgba(0, 0, 0, 0.11);\r\n height: 1.2em;\r\n &::before {\r\n content: \"\";\r\n display: block;\r\n padding-top: 100%;\r\n }\r\n &::after {\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n content: \"\";\r\n position: absolute;\r\n animation: ${waveAnim} 1.6s linear 0.5s infinite;\r\n transform: translateX(-100%);\r\n background: linear-gradient(\r\n 90deg,\r\n transparent,\r\n rgba(0, 0, 0, 0.04),\r\n transparent\r\n );\r\n }\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\n\r\nfunction AppBar({ className, isFixed, ...otherProps }) {\r\n return (\r\n <StyledAppBar\r\n isFixed={isFixed}\r\n className={classNames(\r\n \"KUI-AppBar\",\r\n isFixed && \"KUI-AppBar_fixed\",\r\n className\r\n )}\r\n {...otherProps}\r\n />\r\n )\r\n}\r\n\r\nAppBar.propTypes = {\r\n isFixed: PropTypes.bool,\r\n}\r\n\r\nAppBar.defaultProps = {\r\n isFixed: true,\r\n}\r\n\r\nexport default AppBar\r\n\r\nconst fixesBarCSS = ({ isFixed }) =>\r\n isFixed &&\r\n css`\r\n top: 0;\r\n left: auto;\r\n right: 0;\r\n position: fixed;\r\n `\r\n\r\nconst StyledAppBar = styled.header`\r\n width: 100%;\r\n display: flex;\r\n z-index: 1100;\r\n box-sizing: border-box;\r\n flex-shrink: 0;\r\n background: #fff;\r\n ${fixesBarCSS};\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { breakpoints } = theme\r\n\r\nfunction ToolBar({ className, ...otherProps }) {\r\n return (\r\n <StyledTollBar\r\n className={classNames(\"KUI-ToolBar\", className)}\r\n {...otherProps}\r\n />\r\n )\r\n}\r\n\r\nexport default ToolBar\r\n\r\nconst StyledTollBar = styled.div`\r\n display: flex;\r\n position: relative;\r\n align-items: center;\r\n padding: 0px;\r\n min-height: 64px;\r\n @media (max-width: ${breakpoints.xs}px) {\r\n min-height: 48px;\r\n }\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport { keyframes } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst palette = theme.palette\r\n\r\nfunction CircularProgress({\r\n className,\r\n svgStyles,\r\n circleStyles,\r\n ...otherProps\r\n}) {\r\n return (\r\n <StyledProgress\r\n className={classNames(\"KUI-CircularProgress\", className)}\r\n {...otherProps}\r\n >\r\n <StyledSVG\r\n className={classNames(\"KUI-CircularProgress_svg\", svgStyles)}\r\n viewBox=\"22 22 44 44\"\r\n >\r\n <StyledCircle\r\n className={classNames(\"KUI-CircularProgress_circle\", circleStyles)}\r\n cx=\"44\"\r\n cy=\"44\"\r\n r=\"20.2\"\r\n fill=\"none\"\r\n strokeWidth=\"3.6\"\r\n />\r\n </StyledSVG>\r\n </StyledProgress>\r\n )\r\n}\r\n\r\nexport default CircularProgress\r\n\r\nconst rotateAnimate = keyframes`\r\n 0% {\r\n transform-origin: 50% 50%;\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n`\r\n\r\nconst circleAnimate = keyframes`\r\n 0% {\r\n stroke-dasharray: 1px, 200px;\r\n stroke-dashoffset: 0px;\r\n }\r\n 50% {\r\n stroke-dasharray: 100px, 200px;\r\n stroke-dashoffset: -15px;\r\n }\r\n 100% {\r\n stroke-dasharray: 100px, 200px;\r\n stroke-dashoffset: -125px;\r\n }\r\n`\r\n\r\nconst StyledProgress = styled.div`\r\n color: ${palette.brand.main};\r\n width: 40px;\r\n height: 40px;\r\n display: inline-block;\r\n animation: ${rotateAnimate} 1.4s linear infinite;\r\n`\r\n\r\nconst StyledSVG = styled.svg`\r\n display: block;\r\n`\r\n\r\nconst StyledCircle = styled.circle`\r\n stroke: currentColor;\r\n animation: ${circleAnimate} 1.4s ease-in-out infinite;\r\n stroke-dasharray: 80px, 200px;\r\n stroke-dashoffset: 0px;\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nfunction LinearProgress({\r\n className,\r\n progressBarStyles,\r\n value,\r\n ...otherProps\r\n}) {\r\n let newValue = value\r\n\r\n if (value > 100) {\r\n newValue = 100\r\n }\r\n\r\n return (\r\n <StyledLinearProgress\r\n className={classNames(\"KUI-LinearProgress\", className)}\r\n aria-valuenow={newValue}\r\n {...otherProps}\r\n >\r\n <StyledLinearProgressBar\r\n className={classNames(\"KUI-LinearProgress_bar\", progressBarStyles)}\r\n style={{ transform: `translateX(${newValue - 100}%)` }}\r\n />\r\n </StyledLinearProgress>\r\n )\r\n}\r\n\r\nLinearProgress.defaultProps = {\r\n value: 0,\r\n}\r\n\r\nexport default LinearProgress\r\n\r\nconst StyledLinearProgress = styled.div`\r\n overflow: hidden;\r\n position: relative;\r\n backdrop-filter: blur(4px);\r\n background-color: rgba(255, 255, 255, 0.55);\r\n border-radius: 66px;\r\n height: 6px;\r\n`\r\n\r\nconst StyledLinearProgressBar = styled.div`\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n bottom: 0;\r\n position: absolute;\r\n transition: transform 0.4s linear;\r\n transform-origin: left;\r\n opacity: 0.9;\r\n border-radius: 66px;\r\n background-color: white;\r\n`\r\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { palette } = theme\r\n\r\nconst nextItem = (list, item) => {\r\n if (list === item) {\r\n return list.firstChild\r\n }\r\n if (item && item.nextElementSibling) {\r\n return item.nextElementSibling\r\n }\r\n return list.firstChild\r\n}\r\n\r\nconst previousItem = (list, item) => {\r\n if (list === item) {\r\n return list.lastChild\r\n }\r\n if (item && item.previousElementSibling) {\r\n return item.previousElementSibling\r\n }\r\n return list.lastChild\r\n}\r\n\r\nconst moveFocus = (list, currentFocus, traversalFunction) => {\r\n const nextFocus = traversalFunction(list, currentFocus)\r\n\r\n nextFocus.focus()\r\n}\r\n\r\nconst Tabs = forwardRef((props, ref) => {\r\n const {\r\n value,\r\n onChange,\r\n className,\r\n indicatorPos,\r\n indicatorHidden,\r\n children: childrenProp,\r\n ...otherProps\r\n } = props\r\n const tabListRef = useRef(null)\r\n const [indicatorStyles, setIndicatorStyles] = useState({})\r\n\r\n const handleKeyDown = (e) => {\r\n const list = tabListRef.current\r\n const currFocus = list.ownerDocument.activeElement\r\n switch (e.key) {\r\n case \"ArrowLeft\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, previousItem)\r\n break\r\n case \"ArrowRight\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, nextItem)\r\n break\r\n case \"Home\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, nextItem)\r\n break\r\n case \"End\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, previousItem)\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n const children = React.Children.map(childrenProp, (child, childIndex) => {\r\n if (!React.isValidElement(child)) {\r\n return null\r\n }\r\n\r\n const childValue =\r\n child.props.value === undefined ? childIndex : child.props.value\r\n const selected = childValue === value\r\n\r\n return React.cloneElement(child, {\r\n selected,\r\n onChange,\r\n value: childValue,\r\n })\r\n })\r\n\r\n useEffect(() => {\r\n const selectedTab = tabListRef.current?.children[value]\r\n setIndicatorStyles({\r\n width: selectedTab?.clientWidth,\r\n // transform: `translateX(${selectedTab?.offsetLeft})`,\r\n left: selectedTab?.offsetLeft,\r\n })\r\n }, [value])\r\n\r\n return (\r\n <StyledTabs ref={ref} className=\"KUI-Tabs\" {...otherProps}>\r\n <StyledTabList\r\n tabIndex={0}\r\n role=\"tablist\"\r\n className={classNames(\"KUI-TabList\", className)}\r\n ref={tabListRef}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {children}\r\n </StyledTabList>\r\n <StyledTabsIndicator\r\n hidden={indicatorHidden}\r\n position={indicatorPos}\r\n className={classNames(\r\n \"KUI-Tabs_indicator\",\r\n indicatorHidden && \"KUI-Tabs_hidden\"\r\n )}\r\n style={indicatorStyles}\r\n />\r\n </StyledTabs>\r\n )\r\n})\r\n\r\nTabs.propTypes = {\r\n indicatorPos: PropTypes.oneOf([\"bottom\", \"top\"]),\r\n}\r\n\r\nTabs.defaultProps = {\r\n indicatorPos: \"bottom\",\r\n}\r\n\r\nexport default Tabs\r\n\r\nconst indicatorPositionsCSS = {\r\n top: css`\r\n top: 0;\r\n border-radius: 0 0 8px 8px;\r\n `,\r\n bottom: css`\r\n bottom: 0;\r\n border-radius: 8px 8px 0px 0px;\r\n `,\r\n}\r\n\r\nconst StyledTabs = styled.div`\r\n position: relative;\r\n`\r\n\r\nconst StyledTabList = styled.div`\r\n display: flex;\r\n`\r\n\r\nconst StyledTabsIndicator = styled.span`\r\n position: absolute;\r\n background-color: ${palette.brand.main};\r\n transition: width 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\r\n left 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n height: 2px;\r\n will-change: left;\r\n opacity: ${({ hidden }) => (hidden ? 0 : 1)};\r\n ${({ position }) => indicatorPositionsCSS[position]};\r\n`\r\n","import React, { forwardRef, useRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport Caption from \"../Caption\"\r\n\r\nconst Tab = forwardRef((props, ref) => {\r\n const { selected, value, className, onChange, onClick, ...other } = props\r\n const tabRef = useRef()\r\n\r\n const handleClick = (e) => {\r\n if (!selected && onChange) {\r\n onChange(e, value)\r\n }\r\n\r\n if (onClick) {\r\n onClick(e)\r\n }\r\n }\r\n\r\n const forwardedRef = (elem) => {\r\n if (ref) {\r\n ref.current = elem\r\n }\r\n tabRef.current = elem\r\n }\r\n\r\n return (\r\n <StyledTab\r\n className={classNames(\r\n \"KUI-Tab\",\r\n selected && \"KUI-Tab_selected\",\r\n className\r\n )}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={selected}\r\n tabIndex={selected ? 0 : -1}\r\n aria-controls={`tabpanel-${value}`}\r\n id={`tab-${value}`}\r\n ref={forwardedRef}\r\n onClick={handleClick}\r\n {...other}\r\n >\r\n {typeof other.label === \"string\" ? (\r\n <Caption weight={600} size=\"sm\" color=\"white\">\r\n {other.label}\r\n </Caption>\r\n ) : (\r\n other.label\r\n )}\r\n </StyledTab>\r\n )\r\n})\r\n\r\nTab.propTypes = {\r\n label: PropTypes.string,\r\n}\r\n\r\nexport default Tab\r\n\r\nconst StyledTab = styled.button`\r\n height: 64px;\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n margin-right: 24px;\r\n padding: 0;\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n > p {\r\n white-space: nowrap;\r\n }\r\n`\r\n","import React, { forwardRef, useEffect, useRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport Tabs from \"../Tabs\"\nimport Tab from \"../Tab\"\n\nconst TabsPanel = forwardRef((props, ref) => {\n const {\n tabs,\n tabPanels,\n paths,\n activeTab,\n onChange,\n indicatorPos,\n endComponent,\n navigate,\n ...other\n } = props\n const [value, setValue] = React.useState(Number(activeTab))\n const tabsRef = useRef(null)\n\n const handleChange = (event, newValue) => {\n setValue(newValue)\n if (paths && paths.length > 0) {\n if (navigate) navigate(paths[newValue])\n else\n window.history.pushState(\n { route: paths[newValue] },\n \"\",\n paths[newValue]\n )\n }\n if (onChange) {\n onChange(event, newValue)\n }\n\n tabsRef.current?.scrollTo({\n left: event.target.offsetLeft,\n behavior: \"smooth\",\n })\n }\n\n useEffect(() => {\n setValue(Number(activeTab))\n }, [activeTab])\n\n return (\n <div ref={ref} {...other}>\n <div className=\"KUI-TabsContainer\">\n <StyledTabsWrapper ref={tabsRef} className=\"KUI-TabsWrapper\">\n <Tabs\n value={value}\n onChange={handleChange}\n indicatorPos={indicatorPos}\n >\n {tabs.map((item) => (\n <Tab label={item} key={item} />\n ))}\n </Tabs>\n\n {endComponent}\n </StyledTabsWrapper>\n </div>\n {tabPanels?.map((item, index) => (\n <div\n key={index}\n role=\"tabpanel\"\n hidden={value !== index}\n id={`tabpanel-${index}`}\n aria-labelledby={`tab-${index}`}\n >\n {value === index && item}\n </div>\n ))}\n </div>\n )\n})\n\nTabsPanel.propTypes = {\n indicatorPos: PropTypes.oneOf([\"bottom\", \"top\"]),\n}\n\nexport default TabsPanel\n\nconst StyledTabsWrapper = styled.div`\n overflow-x: scroll;\n scroll-snap-type: x mandatory;\n scroll-behavior: smooth;\n display: flex;\n justify-content: space-between;\n align-items: center;\n &::-webkit-scrollbar {\n width: 0;\n }\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n }\n\n // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n _cancelEvents2.default.subscribe(function () {\n options.data.cancel = true;\n });\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n activeStyle: _propTypes2.default.object,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var style = {};\n\n if (this.state && this.state.active) {\n style = _extends({}, this.props.style, this.props.activeStyle);\n } else {\n style = _extends({}, this.props.style);\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.style = style;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LinkElement = function (_React$Component) {\n _inherits(LinkElement, _React$Component);\n\n function LinkElement() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkElement);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n return _react2.default.createElement(\n 'a',\n _this.props,\n _this.props.children\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(LinkElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ButtonElement = function (_React$Component) {\n _inherits(ButtonElement, _React$Component);\n\n function ButtonElement() {\n _classCallCheck(this, ButtonElement);\n\n return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n }\n\n _createClass(ButtonElement, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'input',\n this.props,\n this.props.children\n );\n }\n }]);\n\n return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(ButtonElement);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ElementWrapper = function (_React$Component) {\n _inherits(ElementWrapper, _React$Component);\n\n function ElementWrapper() {\n _classCallCheck(this, ElementWrapper);\n\n return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n }\n\n _createClass(ElementWrapper, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // Remove `parentBindings` from props\n var newProps = _extends({}, this.props);\n if (newProps.parentBindings) {\n delete newProps.parentBindings;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({}, newProps, { ref: function ref(el) {\n _this2.props.parentBindings.domNode = el;\n } }),\n this.props.children\n );\n }\n }]);\n\n return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n};\n\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","\"use strict\";\n\n/* DEPRECATED */\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\nvar scrollSpy = require('./scroll-spy');\nvar defaultScroller = require('./scroller');\nvar PropTypes = require('prop-types');\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n to: PropTypes.string.isRequired,\n containerId: PropTypes.string,\n container: PropTypes.object,\n activeClass: PropTypes.string,\n spy: PropTypes.bool,\n smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n offset: PropTypes.number,\n delay: PropTypes.number,\n isDynamic: PropTypes.bool,\n onClick: PropTypes.func,\n duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n absolute: PropTypes.bool,\n onSetActive: PropTypes.func,\n onSetInactive: PropTypes.func,\n ignoreCancelEvents: PropTypes.bool,\n hashSpy: PropTypes.bool,\n spyThrottle: PropTypes.number\n};\n\nvar Helpers = {\n Scroll: function Scroll(Component, customScroller) {\n\n console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n var scroller = customScroller || defaultScroller;\n\n var Scroll = function (_React$Component) {\n _inherits(Scroll, _React$Component);\n\n function Scroll(props) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!scrollSpy.isMounted(scrollSpyContainer)) {\n scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!scrollHash.isMounted()) {\n scrollHash.mount(scroller);\n }\n scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n if (this.props.spy) {\n scrollSpy.addStateHandler(this.stateHandler);\n }\n\n scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n scrollSpy.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n\n return React.createElement(Component, props);\n }\n }]);\n\n return Scroll;\n }(React.Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.stateHandler = function () {\n if (scroller.getActiveLink() !== _this2.props.to) {\n if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n _this2.props.onSetInactive();\n }\n _this2.setState({ active: false });\n }\n };\n\n this.spyHandler = function (y) {\n\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };","import React, { useEffect, useRef } from \"react\"\r\nimport { Link, scroller, Events } from \"react-scroll\"\r\nimport styled from \"@emotion/styled\"\r\nimport Caption from \"../Caption\"\r\n\r\nconst ScrollTab = ({\r\n selected,\r\n value,\r\n label,\r\n name,\r\n onChange,\r\n offset,\r\n isScrolling,\r\n setIsScrolling,\r\n setIsIndicatorHidden,\r\n isActive,\r\n setIsActive,\r\n}) => {\r\n const activeRef = useRef(true)\r\n const scrollingRef = useRef(isScrolling)\r\n\r\n const handleSelect = (e) => {\r\n setTimeout(() => {\r\n setIsIndicatorHidden(false)\r\n setIsActive(true)\r\n })\r\n if (!isScrolling && onChange) {\r\n onChange(e, value)\r\n }\r\n }\r\n\r\n const handleInactive = () => {\r\n setIsActive(false)\r\n setTimeout(() => {\r\n if (!activeRef.current && !scrollingRef.current) {\r\n setIsIndicatorHidden(true)\r\n }\r\n }, 10)\r\n }\r\n\r\n useEffect(() => {\r\n activeRef.current = isActive\r\n }, [isActive])\r\n\r\n useEffect(() => {\r\n scrollingRef.current = isScrolling\r\n }, [isScrolling])\r\n\r\n const handleKeyDown = (e) => {\r\n switch (e.key) {\r\n case \"Enter\":\r\n handleSelect(e)\r\n scroller.scrollTo(name, { offset })\r\n break\r\n case \"Space\":\r\n handleSelect(e)\r\n scroller.scrollTo(name, { offset })\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n const startScrolling = () => {\r\n setIsScrolling(true)\r\n }\r\n\r\n const endScrolling = () => {\r\n setIsScrolling(false)\r\n }\r\n\r\n useEffect(() => {\r\n if (selected) {\r\n scroller.scrollTo(name, { offset })\r\n }\r\n\r\n Events.scrollEvent.register(\"begin\", (to, element) => {\r\n startScrolling()\r\n })\r\n\r\n Events.scrollEvent.register(\"end\", (to, element) => {\r\n setTimeout(endScrolling)\r\n })\r\n\r\n return () => {\r\n Events.scrollEvent.remove(\"begin\")\r\n Events.scrollEvent.remove(\"end\")\r\n }\r\n }, [])\r\n\r\n const handleClick = (e) => {\r\n if (!selected && onChange) {\r\n onChange(e, value)\r\n }\r\n }\r\n\r\n return (\r\n <StyledScrollTab\r\n to={name}\r\n spy\r\n smooth\r\n duration={600}\r\n offset={offset}\r\n onSetActive={handleSelect}\r\n onSetInactive={handleInactive}\r\n className=\"KUI-ScrollTab\"\r\n role=\"tab\"\r\n aria-selected={selected}\r\n tabIndex={selected ? 0 : -1}\r\n aria-controls={`tabpanel-${value}`}\r\n id={`tab-${value}`}\r\n onKeyDown={handleKeyDown}\r\n onClick={handleClick}\r\n >\r\n <Caption weight={600} size=\"sm\" color=\"white\">\r\n {label}\r\n </Caption>\r\n </StyledScrollTab>\r\n )\r\n}\r\n\r\nexport default ScrollTab\r\n\r\nconst StyledScrollTab = styled(Link)`\r\n margin-right: 24px;\r\n height: 64px;\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n padding: 0;\r\n display: flex;\r\n align-items: center;\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n`\r\n","import React, { forwardRef, useEffect, useState } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport Tabs from \"../Tabs\"\r\nimport ScrollTab from \"../ScrollTab\"\r\n\r\nconst MenuPanel = forwardRef((props, ref) => {\r\n const { tabs, tabsId, activeTab, onChange, indicatorPos, offset, ...other } =\r\n props\r\n const [value, setValue] = React.useState(Number(activeTab))\r\n const [isIndicatorHidden, setIsIndicatorHidden] = useState(false)\r\n const [isScrolling, setIsScrolling] = useState(false)\r\n const [isActive, setIsActive] = useState(true)\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue)\r\n if (onChange) {\r\n onChange(event, newValue)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setValue(Number(activeTab))\r\n }, [activeTab])\r\n\r\n return (\r\n <Tabs\r\n ref={ref}\r\n value={value}\r\n onChange={handleChange}\r\n indicatorPos={indicatorPos}\r\n indicatorHidden={isIndicatorHidden}\r\n {...other}\r\n >\r\n {tabs.map((item, index) => (\r\n <ScrollTab\r\n isScrolling={isScrolling}\r\n setIsScrolling={setIsScrolling}\r\n offset={offset}\r\n label={item}\r\n name={(tabsId && tabsId[index]) || item}\r\n key={item}\r\n setIsIndicatorHidden={setIsIndicatorHidden}\r\n isActive={isActive}\r\n setIsActive={setIsActive}\r\n />\r\n ))}\r\n </Tabs>\r\n )\r\n})\r\n\r\nMenuPanel.propTypes = {\r\n indicatorPos: PropTypes.oneOf([\"bottom\", \"top\"]),\r\n}\r\n\r\nexport default MenuPanel\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nconst IconButton = forwardRef(({ className, ...props }, ref) => (\r\n <StyledButton\r\n className={classNames(\"KUI-IconButton\", className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n))\r\n\r\nexport default IconButton\r\n\r\nconst StyledButton = styled.button`\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n padding: 0;\r\n margin: 0;\r\n`\r\n","import styled from \"@emotion/styled\"\nimport classNames from \"classnames\"\nimport React, { forwardRef } from \"react\"\n\nconst Popper = forwardRef((props, ref) => {\n const {\n open,\n children,\n spacing,\n className,\n withArrow,\n withoutMobile,\n arrowRef,\n arrowPosition,\n realPlacement,\n ...other\n } = props\n\n const getArrowTopPosition = () => {\n if (arrowPosition?.y) return `${arrowPosition?.y}px`\n if (realPlacement === \"top\") return \"unset\"\n return `-3px`\n }\n\n const arrowPlacement = {\n left: `${Number(arrowPosition?.x)}px`,\n top: getArrowTopPosition(),\n bottom: realPlacement === \"top\" ? \"-3px\" : \"unset\",\n }\n\n return (\n <StyledPopperWrapper\n ref={ref}\n className={classNames(\n \"KUI-Popper\",\n open && \"KUI-Popper_open\",\n !withoutMobile && \"KUI-Popper_withMobile\",\n className\n )}\n spacing={spacing}\n {...other}\n >\n <StyledPopper open={!!open}>\n {children}\n {withArrow && (\n <StyledArrow\n ref={arrowRef}\n style={arrowPlacement}\n className={classNames(\n \"KUI-Popper_arrow\",\n !withoutMobile && \"KUI-Popper_arrow_withMobile\"\n )}\n />\n )}\n </StyledPopper>\n </StyledPopperWrapper>\n )\n})\n\nexport default Popper\n\nconst StyledPopperWrapper = styled.div`\n position: absolute;\n max-width: 215px;\n width: max-content;\n padding: ${({ spacing }) => spacing || 0};\n z-index: -1;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: all ease-out 0.3s;\n &.KUI-Popper_open {\n opacity: 1;\n z-index: 10;\n visibility: visible;\n pointer-events: auto;\n }\n @media (max-width: 600px) {\n &.KUI-Popper_withMobile {\n position: fixed !important;\n bottom: 24px !important;\n top: auto !important;\n left: 16px !important;\n width: calc(100vw - 32px);\n max-width: unset;\n transform: none !important;\n }\n }\n`\n\nconst StyledPopper = styled.div`\n padding: 16px;\n border-radius: 12px;\n background: white;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-out;\n position: relative;\n`\n\nconst StyledArrow = styled.span`\n position: absolute;\n width: 6px;\n height: 6px;\n background: inherit;\n transform: rotate(45deg);\n border-radius: 2px;\n top: -3px;\n left: calc(50% - 3px);\n @media (max-width: 600px) {\n &.KUI-Popper_arrow_withMobile {\n display: none;\n }\n }\n`\n","function getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n continue;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. This stops `shift()` from taking action, but can\n // be worked around by calling it again after the `arrow()` if desired.\n const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? min$1 - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset + alignmentOffset\n }\n };\n }\n});\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements = alignment !== undefined || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[main], overflow[cross]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getSideObjectFromPadding(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n const {\n x,\n y\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const axis = getMainAxisFromPlacement(placement);\n const isXAxis = axis === 'x';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isXAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isXAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const safari = isSafari();\n const css = getComputedStyle$1(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n x: v,\n y: v\n});\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createEmptyCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n var _win$visualViewport, _win$visualViewport2;\n if (isFixed === void 0) {\n isFixed = true;\n }\n if (!isSafari()) {\n return noOffsets;\n }\n const win = element ? getWindow(element) : window;\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n return noOffsets;\n }\n return {\n x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createEmptyCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createEmptyCoords(1);\n const offsets = createEmptyCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n if (list === void 0) {\n list = [];\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isSafari();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createEmptyCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n clearTimeout(timeoutId);\n io && io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n let isFirstUpdate = true;\n io = new IntersectionObserver(entries => {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }, {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n });\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(update);\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo && cleanupIo();\n resizeObserver && resizeObserver.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { arrow as arrow$1, computePosition } from '@floating-ui/dom';\nexport { autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$1({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n } else if (element) {\n return arrow$1({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length, i, keys;\n if (a && b && typeof a == 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/react\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node != referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, [_setReference]);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, [_setFloating]);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n isPositioned: true\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n } else {\n update();\n }\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\nexport { arrow, useFloating };\n","import { platform, getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { hideOthers } from 'aria-hidden';\nimport { tabbable } from 'tabbable';\nimport { createPortal, flushSync } from 'react-dom';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => \"floating-ui-\" + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n index(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n if (!serverHandoffComplete) {\n serverHandoffComplete = true;\n }\n }, []);\n return id;\n}\n\n// `toString()` prevents bundlers from trying to `import { useId } from 'react'`\nconst useReactId = React[/*#__PURE__*/'useId'.toString()];\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/useId\n */\nconst useId = useReactId || useFloatingId;\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(_ref, ref) {\n let {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = _ref;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n console.warn('Floating UI: The `ref` prop is required for the `FloatingArrow`', 'component.');\n }\n }\n const clipPathId = useId();\n if (!floating) {\n return null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n strokeWidth *= 2;\n const halfStrokeWidth = strokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const [side, alignment] = placement.split('-');\n const isRTL = platform.isRTL(floating);\n const isCustomShape = !!d;\n const isVerticalSide = side === 'top' || side === 'bottom';\n const yOffsetProp = staticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = staticOffset && alignment === 'end' ? 'right' : 'left';\n if (staticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? staticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? staticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + strokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + strokeWidth / 2 + \"px)\",\n transform: \"\" + rotation + (transform != null ? transform : ''),\n ...restStyle\n }\n }), strokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: strokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: strokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + strokeWidth,\n height: width\n })));\n});\n\nfunction createPubSub() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null ? void 0 : _map$get.forEach(handler => handler(data));\n },\n on(event, listener) {\n map.set(event, [...(map.get(event) || []), listener]);\n },\n off(event, listener) {\n var _map$get2;\n map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the floating tree, returning its id.\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n index(() => {\n const node = {\n id,\n parentId\n };\n tree == null ? void 0 : tree.addNode(node);\n return () => {\n tree == null ? void 0 : tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(_ref) {\n let {\n children,\n id\n } = _ref;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId])\n }, children);\n}\n\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM (i.e. portalled to a common node, rather than their\n * respective parent).\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(_ref2) {\n let {\n children\n } = _ref2;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const events = React.useState(() => createPubSub())[0];\n return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [nodesRef, addNode, removeNode, events])\n }, children);\n}\n\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\nfunction getWindow(value) {\n return getDocument(value).defaultView || window;\n}\nfunction isElement(value) {\n return value ? value instanceof getWindow(value).Element : false;\n}\nfunction isHTMLElement(value) {\n return value ? value instanceof getWindow(value).HTMLElement : false;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n const androidRe = /Android/i;\n if ((androidRe.test(getPlatform()) || androidRe.test(getUserAgent())) && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n return event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType !== 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0;\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\n\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode && child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n\nfunction useLatestRef(value) {\n const ref = useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\nconst safePolygonIdentifier = 'data-floating-ui-safe-polygon';\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements: {\n domReference,\n floating\n },\n refs\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef();\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef();\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const isHoverOpen = React.useCallback(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n }, [dataRef]);\n\n // When dismissing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onDismiss() {\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n blockMouseMoveRef.current = true;\n }\n events.on('dismiss', onDismiss);\n return () => {\n events.off('dismiss', onDismiss);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled || !handleCloseRef.current || !open) {\n return;\n }\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event);\n }\n }\n const html = getDocument(floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [floating, open, onOpenChange, enabled, handleCloseRef, dataRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onOpenChange(false, event), closeDelay);\n } else if (runElseBranch) {\n clearTimeout(timeoutRef.current);\n onOpenChange(false, event);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = React.useCallback(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n }, []);\n const clearPointerEvents = React.useCallback(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument(refs.floating.current).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n }, [refs]);\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function isClickLikeOpenEvent() {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n }\n function onMouseEnter(event) {\n clearTimeout(timeoutRef.current);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && getDelay(delayRef.current, 'open') === 0) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = setTimeout(() => {\n onOpenChange(true, event);\n }, openDelay);\n } else {\n onOpenChange(true, event);\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n return;\n }\n unbindMouseMoveRef.current();\n const doc = getDocument(floating);\n clearTimeout(restTimeoutRef.current);\n if (handleCloseRef.current) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeout(timeoutRef.current);\n }\n handlerRef.current = handleCloseRef.current({\n ...context,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n // Should the event expose that it was closed by `safePolygon`?\n closeWithDelay(event);\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains(floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n return;\n }\n handleCloseRef.current == null ? void 0 : handleCloseRef.current({\n ...context,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n closeWithDelay(event);\n }\n })(event);\n }\n if (isElement(domReference)) {\n const ref = domReference;\n open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n floating == null ? void 0 : floating.addEventListener('mouseleave', onScrollMouseLeave);\n move && ref.addEventListener('mousemove', onMouseEnter, {\n once: true\n });\n ref.addEventListener('mouseenter', onMouseEnter);\n ref.addEventListener('mouseleave', onMouseLeave);\n return () => {\n open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n floating == null ? void 0 : floating.removeEventListener('mouseleave', onScrollMouseLeave);\n move && ref.removeEventListener('mousemove', onMouseEnter);\n ref.removeEventListener('mouseenter', onMouseEnter);\n ref.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, [domReference, floating, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, tree, delayRef, handleCloseRef, dataRef]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n index(() => {\n var _handleCloseRef$curre;\n if (!enabled) {\n return;\n }\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n const body = getDocument(floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n body.style.pointerEvents = 'none';\n performedPointerEventsMutationRef.current = true;\n if (isElement(domReference) && floating) {\n var _tree$nodesRef$curren, _tree$nodesRef$curren2;\n const ref = domReference;\n const parentFloating = tree == null ? void 0 : (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null ? void 0 : (_tree$nodesRef$curren2 = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren2.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n ref.style.pointerEvents = 'auto';\n floating.style.pointerEvents = 'auto';\n return () => {\n ref.style.pointerEvents = '';\n floating.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, floating, domReference, tree, handleCloseRef, dataRef, isHoverOpen]);\n index(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n clearPointerEvents();\n };\n }, [enabled, cleanupMouseMoveHandler, clearPointerEvents]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n reference: {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n if (open || restMs === 0) {\n return;\n }\n clearTimeout(restTimeoutRef.current);\n restTimeoutRef.current = setTimeout(() => {\n if (!blockMouseMoveRef.current) {\n onOpenChange(true, event.nativeEvent);\n }\n }, restMs);\n }\n },\n floating: {\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n onMouseLeave(event) {\n events.emit('dismiss', {\n type: 'mouseLeave',\n data: {\n returnFocus: false\n }\n });\n closeWithDelay(event.nativeEvent, false);\n }\n }\n };\n }, [events, enabled, restMs, open, onOpenChange, closeWithDelay]);\n}\n\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: () => {},\n setState: () => {},\n isInstantPhase: false\n});\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nconst FloatingDelayGroup = _ref => {\n let {\n children,\n delay,\n timeoutMs = 0\n } = _ref;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n index(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n setState({\n isInstantPhase: false\n });\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId]);\n return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setState, setCurrentId])\n }, children);\n};\nconst useDelayGroup = (_ref2, _ref3) => {\n let {\n open,\n onOpenChange\n } = _ref2;\n let {\n id\n } = _ref3;\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = useDelayGroupContext();\n index(() => {\n if (currentId) {\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }\n }, [id, onOpenChange, setState, currentId, initialDelay]);\n index(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n } else {\n unset();\n }\n }\n }, [open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n index(() => {\n if (open) {\n setCurrentId(id);\n }\n }, [open, setCurrentId, id]);\n};\n\n/**\n * Find the real active element. Traverses into shadowRoots.\n */\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null ? void 0 : (_activeElement$shadow = _activeElement.shadowRoot) == null ? void 0 : _activeElement$shadow.activeElement) != null) {\n var _activeElement, _activeElement$shadow;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction getAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n let allChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n });\n let currentChildren = allChildren;\n while (currentChildren.length) {\n currentChildren = nodes.filter(node => {\n var _currentChildren;\n return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n var _node$context2;\n return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n });\n });\n allChildren = allChildren.concat(currentChildren);\n }\n return allChildren;\n}\n\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\n\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\n\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n const allTabbable = tabbable(container, getTabbableOptions());\n if (direction === 'prev') {\n allTabbable.reverse();\n }\n const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n if (event.key === 'Tab') {\n event.target;\n clearTimeout(timeoutId);\n }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n index(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n document.addEventListener('keydown', setActiveElementOnTab);\n return () => {\n document.removeEventListener('keydown', setActiveElementOnTab);\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, {\n ref: ref,\n tabIndex: 0\n // Role is only for VoiceOver\n ,\n role: role,\n \"aria-hidden\": role ? undefined : true,\n \"data-floating-ui-focus-guard\": \"\",\n style: HIDDEN_STYLES\n }));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nfunction useFloatingPortalNode(_temp) {\n let {\n id,\n root\n } = _temp === void 0 ? {} : _temp;\n const [portalNode, setPortalNode] = React.useState(null);\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const data = React.useMemo(() => ({\n id,\n root,\n portalContext,\n uniqueId\n }), [id, root, portalContext, uniqueId]);\n const dataRef = React.useRef();\n index(() => {\n return () => {\n portalNode == null ? void 0 : portalNode.remove();\n };\n }, [portalNode, data]);\n index(() => {\n if (dataRef.current === data) return;\n dataRef.current = data;\n const {\n id,\n root,\n portalContext,\n uniqueId\n } = data;\n const existingIdRoot = id ? document.getElementById(id) : null;\n const attr = 'data-floating-ui-portal';\n if (existingIdRoot) {\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n setPortalNode(subRoot);\n } else {\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isElement(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n setPortalNode(subRoot);\n }\n }, [data]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(_ref) {\n let {\n children,\n id,\n root = null,\n preserveTabOrder = true\n } = _ref;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || focusManagerState != null && focusManagerState.modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, focusManagerState == null ? void 0 : focusManagerState.modal]);\n return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode])\n }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null ? void 0 : _beforeInsideRef$curr.focus();\n } else {\n const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n prevTabbable == null ? void 0 : prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null ? void 0 : _afterInsideRef$curre.focus();\n } else {\n const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n nextTabbable == null ? void 0 : nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent));\n }\n }\n }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n order = ['content'],\n guards = true,\n initialFocus = 0,\n returnFocus = true,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true\n } = props;\n const {\n open,\n refs,\n nodeId,\n onOpenChange,\n events,\n dataRef,\n elements: {\n domReference,\n floating\n }\n } = context;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n\n // Controlled by `useListNavigation`.\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const previouslyFocusedElementRef = React.useRef(null);\n const isPointerDownRef = React.useRef(false);\n const isInsidePortal = portalContext != null;\n\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isTypeableCombobox = domReference && domReference.getAttribute('role') === 'combobox' && isTypeableElement(domReference);\n const getTabbableContent = React.useCallback(function (container) {\n if (container === void 0) {\n container = floating;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n }, [floating]);\n const getTabbableElements = React.useCallback(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floating && type === 'floating') {\n return floating;\n }\n return content;\n }).filter(Boolean).flat();\n }, [domReference, floating, orderRef, getTabbableContent]);\n React.useEffect(() => {\n if (!modal) {\n return;\n }\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floating, activeElement(getDocument(floating))) && getTabbableContent().length === 0 && !isTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floating && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument(floating);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [domReference, floating, modal, orderRef, refs, isTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (!closeOnFocusOut) {\n return;\n }\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n queueMicrotask(() => {\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute('data-floating-ui-focus-guard') || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4;\n return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n })));\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if (relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== previouslyFocusedElementRef.current) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event);\n }\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n !modal && floating.addEventListener('focusout', handleFocusOutside);\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n !modal && floating.removeEventListener('focusout', handleFocusOutside);\n };\n }\n }, [domReference, floating, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut]);\n React.useEffect(() => {\n var _portalContext$portal;\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null ? void 0 : (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll('[data-floating-ui-portal]')) || []);\n function getDismissButtons() {\n return [startDismissButtonRef.current, endDismissButtonRef.current].filter(Boolean);\n }\n if (floating && modal) {\n const insideNodes = [floating, ...portalNodes, ...getDismissButtons()];\n const cleanup = hideOthers(orderRef.current.includes('reference') || isTypeableCombobox ? insideNodes.concat(domReference || []) : insideNodes);\n return () => {\n cleanup();\n };\n }\n }, [domReference, floating, modal, orderRef, portalContext, isTypeableCombobox]);\n React.useEffect(() => {\n if (modal && !guards && floating) {\n const tabIndexValues = [];\n const options = getTabbableOptions();\n const allTabbable = tabbable(getDocument(floating).body, options);\n const floatingTabbable = getTabbableElements();\n\n // Exclude all tabbable elements that are part of the order\n const elements = allTabbable.filter(el => !floatingTabbable.includes(el));\n elements.forEach((el, i) => {\n tabIndexValues[i] = el.getAttribute('tabindex');\n el.setAttribute('tabindex', '-1');\n });\n return () => {\n elements.forEach((el, i) => {\n const value = tabIndexValues[i];\n if (value == null) {\n el.removeAttribute('tabindex');\n } else {\n el.setAttribute('tabindex', value);\n }\n });\n };\n }\n }, [floating, modal, guards, getTabbableElements]);\n index(() => {\n if (!floating) return;\n const doc = getDocument(floating);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floating);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floating;\n const focusAlreadyInsideFloatingEl = contains(floating, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floating\n });\n }\n });\n }, [open, floating, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n index(() => {\n if (!floating) return;\n let preventReturnFocusScroll = false;\n const doc = getDocument(floating);\n const previouslyFocusedElement = activeElement(doc);\n const contextData = dataRef.current;\n previouslyFocusedElementRef.current = previouslyFocusedElement;\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onDismiss(payload) {\n if (payload.type === 'escapeKey' && refs.domReference.current) {\n previouslyFocusedElementRef.current = refs.domReference.current;\n }\n if (['referencePress', 'escapeKey'].includes(payload.type)) {\n return;\n }\n const returnFocus = payload.data.returnFocus;\n if (typeof returnFocus === 'object') {\n preventReturnFocusRef.current = false;\n preventReturnFocusScroll = returnFocus.preventScroll;\n } else {\n preventReturnFocusRef.current = !returnFocus;\n }\n }\n events.on('dismiss', onDismiss);\n return () => {\n events.off('dismiss', onDismiss);\n const activeEl = activeElement(doc);\n const shouldFocusReference = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context5;\n return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n }) || contextData.openEvent && ['click', 'mousedown'].includes(contextData.openEvent.type);\n if (shouldFocusReference && refs.domReference.current) {\n previouslyFocusedElementRef.current = refs.domReference.current;\n }\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && isHTMLElement(previouslyFocusedElementRef.current) && !preventReturnFocusRef.current) {\n enqueueFocus(previouslyFocusedElementRef.current, {\n // When dismissing nested floating elements, by the time the rAF has\n // executed, the menus will all have been unmounted. When they try\n // to get focused, the calls get ignored — leaving the root\n // reference focused as desired.\n cancelPrevious: false,\n preventScroll: preventReturnFocusScroll\n });\n }\n };\n }, [floating, returnFocusRef, dataRef, refs, events, tree, nodeId]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n index(() => {\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n ...context,\n modal,\n closeOnFocusOut,\n open\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [portalContext, modal, open, closeOnFocusOut, context]);\n index(() => {\n if (floating && typeof MutationObserver === 'function') {\n const handleMutation = () => {\n const tabIndex = floating.getAttribute('tabindex');\n if (orderRef.current.includes('floating') || activeElement(getDocument(floating)) !== refs.domReference.current && getTabbableContent().length === 0) {\n if (tabIndex !== '0') {\n floating.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1') {\n floating.setAttribute('tabindex', '-1');\n }\n };\n handleMutation();\n const observer = new MutationObserver(handleMutation);\n observer.observe(floating, {\n childList: true,\n subtree: true,\n attributes: true\n });\n return () => {\n observer.disconnect();\n };\n }\n }, [floating, refs, orderRef, getTabbableContent]);\n function renderDismissButton(location) {\n return visuallyHiddenDismiss && modal ? /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent)\n }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss') : null;\n }\n const shouldRenderGuards = guards && !isTypeableCombobox && (isInsidePortal || modal);\n return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable() || domReference;\n nextTabbable == null ? void 0 : nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null ? void 0 : _portalContext$before.focus();\n }\n }\n }\n }), !isTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable() || domReference;\n prevTabbable == null ? void 0 : prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null ? void 0 : _portalContext$afterO.focus();\n }\n }\n }\n }));\n}\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction areMapsEqual(map1, map2) {\n if (map1.size !== map2.size) {\n return false;\n }\n for (const [key, value] of map1.entries()) {\n if (value !== map2.get(key)) {\n return false;\n }\n }\n return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(_ref) {\n let {\n children,\n elementsRef,\n labelsRef\n } = _ref;\n const [map, setMap] = React.useState(() => new Map());\n const register = React.useCallback(node => {\n setMap(prevMap => new Map(prevMap).set(node, null));\n }, []);\n const unregister = React.useCallback(node => {\n setMap(prevMap => {\n const map = new Map(prevMap);\n map.delete(node);\n return map;\n });\n }, []);\n index(() => {\n const newMap = new Map(map);\n const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n nodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n if (!areMapsEqual(map, newMap)) {\n setMap(newMap);\n }\n }, [map]);\n return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef])\n }, children);\n}\nfunction useListItem(_temp) {\n let {\n label\n } = _temp === void 0 ? {} : _temp;\n const [index$1, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index$1 !== null) {\n elementsRef.current[index$1] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index$1, elementsRef, labelsRef, label]);\n index(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n index(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index$1 == null ? -1 : index$1\n }), [index$1, ref]);\n}\n\nconst identifier = 'data-floating-ui-scroll-lock';\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(_ref, ref) {\n let {\n lockScroll = false,\n ...rest\n } = _ref;\n index(() => {\n var _window$visualViewpor, _window$visualViewpor2;\n if (!lockScroll) {\n return;\n }\n const alreadyLocked = document.body.hasAttribute(identifier);\n if (alreadyLocked) {\n return;\n }\n document.body.setAttribute(identifier, '');\n\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (!/iP(hone|ad|od)|iOS/.test(getPlatform())) {\n Object.assign(document.body.style, {\n overflow: 'hidden',\n [paddingProp]: scrollbarWidth + \"px\"\n });\n return () => {\n document.body.removeAttribute(identifier);\n Object.assign(document.body.style, {\n overflow: '',\n [paddingProp]: ''\n });\n };\n }\n\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n const scrollX = window.pageXOffset;\n const scrollY = window.pageYOffset;\n Object.assign(document.body.style, {\n position: 'fixed',\n overflow: 'hidden',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0',\n [paddingProp]: scrollbarWidth + \"px\"\n });\n return () => {\n Object.assign(document.body.style, {\n position: '',\n overflow: '',\n top: '',\n left: '',\n right: '',\n [paddingProp]: ''\n });\n document.body.removeAttribute(identifier);\n window.scrollTo(scrollX, scrollY);\n };\n }, [lockScroll]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, rest, {\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n }));\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n return React.useMemo(() => {\n if (!enabled) return {};\n return {\n reference: {\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) {\n return;\n }\n if (isMouseLikePointerType(pointerTypeRef.current, true) && ignoreMouse) {\n return;\n }\n if (eventOption === 'click') {\n return;\n }\n if (open) {\n if (toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent);\n }\n },\n onClick(event) {\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerTypeRef.current, true) && ignoreMouse) {\n return;\n }\n if (open) {\n if (toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (event.key === 'Enter') {\n if (open) {\n if (toggle) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open) {\n if (toggle) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n }\n }\n }\n };\n }, [enabled, dataRef, eventOption, ignoreMouse, keyboardHandlers, domReference, toggle, open, onOpenChange]);\n}\n\n// `toString()` prevents bundlers from trying to `import { useInsertionEffect } from 'react'`\nconst useInsertionEffect = React[/*#__PURE__*/'useInsertionEffect'.toString()];\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nfunction createVirtualElement(domRef, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domRef.current || undefined,\n getBoundingClientRect() {\n var _domRef$current, _data$dataRef$current;\n const domRect = ((_domRef$current = domRef.current) == null ? void 0 : _domRef$current.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n refs,\n dataRef,\n elements: {\n floating\n }\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(refs.domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(refs.floating.current);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(refs.floating.current, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(refs.domReference.current);\n }, [dataRef, enabled, openCheck, refs, setReference, x, y]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n index(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n return React.useMemo(() => {\n if (!enabled) return {};\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n reference: {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n }\n };\n }, [enabled, handleReferenceEnterOrMove]);\n}\n\n/**\n * Check whether the event.target is within the provided node. Uses event.composedPath if available for custom element support.\n *\n * @param event The event whose target/composedPath to check\n * @param node The node to check against\n * @returns Whether the event.target/composedPath is within the node.\n */\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeBubblesProp = bubbles => {\n var _bubbles$escapeKey, _bubbles$outsidePress;\n return {\n escapeKeyBubbles: typeof bubbles === 'boolean' ? bubbles : (_bubbles$escapeKey = bubbles == null ? void 0 : bubbles.escapeKey) != null ? _bubbles$escapeKey : false,\n outsidePressBubbles: typeof bubbles === 'boolean' ? bubbles : (_bubbles$outsidePress = bubbles == null ? void 0 : bubbles.outsidePress) != null ? _bubbles$outsidePress : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n nodeId,\n elements: {\n reference,\n domReference,\n floating\n },\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles\n } = props;\n const tree = useFloatingTree();\n const nested = useFloatingParentNodeId() != null;\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const insideReactTreeRef = React.useRef(false);\n const {\n escapeKeyBubbles,\n outsidePressBubbles\n } = normalizeBubblesProp(bubbles);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n events.emit('dismiss', {\n type: 'escapeKey',\n data: {\n returnFocus: {\n preventScroll: false\n }\n }\n });\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = insideReactTreeRef.current;\n insideReactTreeRef.current = false;\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget(event);\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n // elements.\n const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n if (canScrollY) {\n const isRTL = getWindow(floating).getComputedStyle(target).direction === 'rtl';\n if (isRTL) {\n xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n }\n }\n if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n return;\n }\n }\n const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, floating) || isEventTargetWithin(event, domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n events.emit('dismiss', {\n type: 'outsidePress',\n data: {\n returnFocus: nested ? {\n preventScroll: true\n } : isVirtualClick(event) || isVirtualPointerEvent(event)\n }\n });\n onOpenChange(false, event);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n function onScroll(event) {\n onOpenChange(false, event);\n }\n const doc = getDocument(floating);\n escapeKey && doc.addEventListener('keydown', closeOnEscapeKeyDown);\n outsidePress && doc.addEventListener(outsidePressEvent, closeOnPressOutside);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(domReference)) {\n ancestors = getOverflowAncestors(domReference);\n }\n if (isElement(floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(floating));\n }\n if (!isElement(reference) && reference && reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n escapeKey && doc.removeEventListener('keydown', closeOnEscapeKeyDown);\n outsidePress && doc.removeEventListener(outsidePressEvent, closeOnPressOutside);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n };\n }, [dataRef, floating, domReference, reference, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, closeOnPressOutside]);\n React.useEffect(() => {\n insideReactTreeRef.current = false;\n }, [outsidePress, outsidePressEvent]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n reference: {\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (referencePress) {\n events.emit('dismiss', {\n type: 'referencePress',\n data: {\n returnFocus: false\n }\n });\n onOpenChange(false, event.nativeEvent);\n }\n }\n },\n floating: {\n onKeyDown: closeOnEscapeKeyDown,\n [captureHandlerKeys[outsidePressEvent]]: () => {\n insideReactTreeRef.current = true;\n }\n }\n };\n }, [enabled, events, referencePress, outsidePressEvent, referencePressEvent, onOpenChange, closeOnEscapeKeyDown]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/react\n */\nfunction useFloating(options) {\n var _options$elements;\n if (options === void 0) {\n options = {};\n }\n const {\n open = false,\n onOpenChange: unstable_onOpenChange,\n nodeId\n } = options;\n const [_domReference, setDomReference] = React.useState(null);\n const domReference = ((_options$elements = options.elements) == null ? void 0 : _options$elements.reference) || _domReference;\n const position = useFloating$1(options);\n const tree = useFloatingTree();\n const onOpenChange = useEffectEvent((open, event) => {\n if (open) {\n dataRef.current.openEvent = event;\n }\n unstable_onOpenChange == null ? void 0 : unstable_onOpenChange(open, event);\n });\n const domReferenceRef = React.useRef(null);\n const dataRef = React.useRef({});\n const events = React.useState(() => createPubSub())[0];\n const floatingId = useId();\n const setPositionReference = React.useCallback(node => {\n const positionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n contextElement: node\n } : node;\n position.refs.setReference(positionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n refs,\n elements,\n dataRef,\n nodeId,\n floatingId,\n events,\n open,\n onOpenChange\n }), [position, nodeId, floatingId, events, open, onOpenChange, refs, elements]);\n index(() => {\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n refs,\n elements: {\n floating,\n domReference\n }\n } = context;\n const {\n enabled = true,\n keyboardOnly = true\n } = props;\n const pointerTypeRef = React.useRef('');\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef();\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n const doc = getDocument(floating);\n const win = doc.defaultView || window;\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(domReference) && domReference === activeElement(getDocument(domReference))) {\n blockFocusRef.current = true;\n }\n }\n win.addEventListener('blur', onBlur);\n return () => {\n win.removeEventListener('blur', onBlur);\n };\n }, [floating, domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onDismiss(payload) {\n if (payload.type === 'referencePress' || payload.type === 'escapeKey') {\n blockFocusRef.current = true;\n }\n }\n events.on('dismiss', onDismiss);\n return () => {\n events.off('dismiss', onDismiss);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n reference: {\n onPointerDown(_ref) {\n let {\n pointerType\n } = _ref;\n pointerTypeRef.current = pointerType;\n blockFocusRef.current = !!(pointerType && keyboardOnly);\n },\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n var _dataRef$current$open;\n if (blockFocusRef.current) {\n return;\n }\n\n // Dismiss with click should ignore the subsequent `focus` trigger,\n // but only if the click originated inside the reference element.\n if (event.type === 'focus' && ((_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type) === 'mousedown' && isEventTargetWithin(dataRef.current.openEvent, domReference)) {\n return;\n }\n onOpenChange(true, event.nativeEvent);\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute('data-floating-ui-focus-guard') && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = setTimeout(() => {\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n if (contains(refs.floating.current, relatedTarget) || contains(domReference, relatedTarget) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, event.nativeEvent);\n });\n }\n }\n };\n }, [enabled, keyboardOnly, domReference, refs, dataRef, onOpenChange]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1\n }),\n ...userProps,\n ...propsList.map(value => value ? value[elementKey] : null).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null ? void 0 : _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/react#interaction-hooks\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n // The dependencies are a dynamic array, so we can't use the linter's\n // suggestion to add it to the deps array.\n const deps = propsList;\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // Granularly check for `item` changes, because the `getItemProps` getter\n // should be as referentially stable as possible since it may be passed as\n // a prop to many components. All `item` key values must therefore be\n // memoized.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n propsList.map(key => key == null ? void 0 : key.item));\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n const list = listRef.current;\n let index = startingIndex;\n do {\n var _list$index, _list$index2;\n index = index + (decrement ? -amount : amount);\n } while (index >= 0 && index <= list.length - 1 && (disabledIndices ? disabledIndices.includes(index) : list[index] == null || ((_list$index = list[index]) == null ? void 0 : _list$index.hasAttribute('disabled')) || ((_list$index2 = list[index]) == null ? void 0 : _list$index2.getAttribute('aria-disabled')) === 'true'));\n return index;\n}\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key == ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction getMinIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n refs,\n elements: {\n domReference,\n floating\n }\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n cols = 1,\n scrollItemIntoView = true\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n console.warn(['Floating UI: `useListNavigation` looping must be enabled to allow', 'escaping.'].join(' '));\n }\n if (!virtual) {\n console.warn(['Floating UI: `useListNavigation` must be virtual to allow', 'escaping.'].join(' '));\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n console.warn(['Floating UI: In grid list navigation mode (`cols` > 1), the', '`orientation` should be either \"horizontal\" or \"both\".'].join(' '));\n }\n }\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const onNavigate = useEffectEvent(unstable_onNavigate);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!floating);\n const forceSyncFocus = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const [activeId, setActiveId] = React.useState();\n const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n if (forceScrollIntoView === void 0) {\n forceScrollIntoView = false;\n }\n const item = listRef.current[indexRef.current];\n if (!item) return;\n if (virtual) {\n setActiveId(item.id);\n } else {\n enqueueFocus(item, {\n preventScroll: true,\n // Mac Safari does not move the virtual cursor unless the focus call\n // is sync. However, for the very first focus call, we need to wait\n // for the position to be ready in order to prevent unwanted\n // scrolling. This means the virtual cursor will not move to the first\n // item when first opening the floating element, but will on\n // subsequent calls. `preventScroll` is supported in modern Safari,\n // so we can use that instead.\n // iOS Safari must be async or the first item will not be focused.\n sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n });\n }\n requestAnimationFrame(() => {\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n item.scrollIntoView == null ? void 0 : item.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n index(() => {\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n }, []);\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n index(() => {\n if (!enabled) {\n return;\n }\n if (open && floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n onNavigate(selectedIndex);\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current(null);\n }\n }, [enabled, open, floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n index(() => {\n if (!enabled) {\n return;\n }\n if (open && floating) {\n if (activeIndex == null) {\n forceSyncFocus.current = false;\n if (selectedIndex != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n }\n\n // Initial sync.\n if (!previousMountedRef.current && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate(indexRef.current);\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n forceScrollIntoViewRef.current = false;\n }\n }\n }, [enabled, open, floating, activeIndex, selectedIndex, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n index(() => {\n if (!enabled) {\n return;\n }\n if (previousMountedRef.current && !floating && tree) {\n var _nodes$find, _nodes$find$context;\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null ? void 0 : (_nodes$find$context = _nodes$find.context) == null ? void 0 : _nodes$find$context.elements.floating;\n const activeEl = activeElement(getDocument(floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl) {\n parent.focus({\n preventScroll: true\n });\n }\n }\n }, [enabled, floating, tree, parentId]);\n index(() => {\n previousOnNavigateRef.current = onNavigate;\n previousMountedRef.current = !!floating;\n });\n index(() => {\n if (!open) {\n keyRef.current = null;\n }\n }, [open]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!open) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1) {\n onNavigate(index);\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n ...(focusItemOnHover && {\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n syncCurrentTarget(currentTarget);\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n onNavigate(null);\n if (!virtual) {\n enqueueFocus(refs.floating.current, {\n preventScroll: true\n });\n }\n }\n })\n };\n return props;\n }, [open, refs, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n const disabledIndices = disabledIndicesRef.current;\n function onKeyDown(event) {\n isPointerModalityRef.current = false;\n forceSyncFocus.current = true;\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === refs.floating.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent);\n if (isHTMLElement(domReference)) {\n domReference.focus();\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinIndex(listRef, disabledIndices);\n const maxIndex = getMaxIndex(listRef, disabledIndices);\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(indexRef.current);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(indexRef.current);\n }\n\n // Grid navigation.\n if (cols > 1) {\n const prevIndex = indexRef.current;\n if (event.key === ARROW_UP) {\n stopEvent(event);\n if (prevIndex === -1) {\n indexRef.current = maxIndex;\n } else {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || indexRef.current < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n indexRef.current = maxIndex;\n } else {\n indexRef.current = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n indexRef.current = prevIndex;\n }\n onNavigate(indexRef.current);\n }\n if (event.key === ARROW_DOWN) {\n stopEvent(event);\n if (prevIndex === -1) {\n indexRef.current = minIndex;\n } else {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n indexRef.current = prevIndex;\n }\n onNavigate(indexRef.current);\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = Math.floor(prevIndex / cols);\n if (event.key === ARROW_RIGHT) {\n stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = prevIndex;\n }\n }\n if (event.key === ARROW_LEFT) {\n stopEvent(event);\n if (prevIndex % cols !== 0) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices,\n decrement: true\n });\n if (loop && isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = prevIndex;\n }\n }\n const lastRow = Math.floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n if (loop && lastRow) {\n indexRef.current = event.key === ARROW_LEFT ? maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n indexRef.current = prevIndex;\n }\n }\n onNavigate(indexRef.current);\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(indexRef.current);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n onNavigate(null);\n } else {\n onNavigate(indexRef.current);\n }\n }\n }\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n const ariaActiveDescendantProp = virtual && open && hasActiveIndex && {\n 'aria-activedescendant': activeId\n };\n return {\n reference: {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.indexOf('Arrow') === 0;\n if (virtual && open) {\n return onKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n const isNavigationKey = isArrowKey || event.key === 'Enter' || event.key.trim() === '';\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isCrossKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n if (isNavigationKey) {\n keyRef.current = nested && isMainKey ? null : event.key;\n }\n if (nested) {\n if (isCrossKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinIndex(listRef, disabledIndices);\n onNavigate(indexRef.current);\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent);\n } else {\n onKeyDown(event);\n }\n if (open) {\n onNavigate(indexRef.current);\n }\n }\n },\n onFocus() {\n if (open) {\n onNavigate(null);\n }\n },\n onPointerDown: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n },\n floating: {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...ariaActiveDescendantProp,\n onKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n },\n item\n };\n }, [domReference, refs, activeId, disabledIndicesRef, latestOpenRef, listRef, enabled, orientation, rtl, virtual, open, hasActiveIndex, nested, selectedIndex, openOnArrowKeyDown, allowEscape, cols, loop, focusItemOnOpen, onNavigate, onOpenChange, item]);\n}\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nfunction useMergeRefs(refs) {\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n refs.forEach(ref => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n floatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const referenceId = useId();\n return React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n role\n };\n if (!enabled) {\n return {};\n }\n if (role === 'tooltip') {\n return {\n reference: {\n 'aria-describedby': open ? floatingId : undefined\n },\n floating: floatingProps\n };\n }\n return {\n reference: {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': role === 'alertdialog' ? 'dialog' : role,\n 'aria-controls': open ? floatingId : undefined,\n ...(role === 'listbox' && {\n role: 'combobox'\n }),\n ...(role === 'menu' && {\n id: referenceId\n })\n },\n floating: {\n ...floatingProps,\n ...(role === 'menu' && {\n 'aria-labelledby': referenceId\n })\n }\n };\n }, [enabled, role, open, floatingId, referenceId]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [initiated, setInitiated] = React.useState(false);\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n\n // `initiated` check prevents this `setState` call from breaking\n // <FloatingPortal />. This call is necessary to ensure subsequent opens\n // after the initial one allows the correct side animation to play when the\n // placement has changed.\n index(() => {\n if (initiated && !isMounted) {\n setStatus('unmounted');\n }\n }, [initiated, isMounted]);\n index(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n setStatus('open');\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n } else {\n setInitiated(true);\n setStatus('close');\n }\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n index(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n index(() => {\n if (open) {\n clearTimeout(timeoutIdRef.current);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n index(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n function setTypingChange(value) {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n }\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n function onKeyDown(event) {\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n }\n return {\n reference: {\n onKeyDown\n },\n floating: {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n }\n };\n }, [enabled, open, dataRef, listRef, resetMs, ignoreKeysRef, findMatchRef, onMatch, onTypingChange]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside\n * of it is anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = props;\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n console.warn(['Floating UI: `placement` side must be \"bottom\" when using the', '`inner` middleware.'].join(' '));\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const el = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, el.scrollHeight), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = Math.max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const maxHeight = Math.max(0, el.scrollHeight - diffY - Math.max(0, overflow.bottom));\n el.style.maxHeight = maxHeight + \"px\";\n el.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n if (el.offsetHeight < item.offsetHeight * Math.min(minItemsVisible, listRef.current.length - 1) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold) {\n flushSync(() => onFallbackChange(true));\n } else {\n flushSync(() => onFallbackChange(false));\n }\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, el.offsetHeight), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n floating: {\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }\n };\n }, [enabled, overflowRef, elements.floating, scrollRef, onChange]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safePolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n let timeoutId;\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = performance.now();\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeout(timeoutId);\n onClose();\n }\n clearTimeout(timeoutId);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n let {\n context\n } = _ref2;\n return context == null ? void 0 : context.open;\n })) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref3) {\n let [x, y] = _ref3;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n } else if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutId = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import * as React from \"react\"\nimport { forwardRef, useEffect, useRef, useState } from \"react\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport {\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\"\nimport Popper from \"../Popper\"\n\nconst Tooltip = forwardRef((props, ref) => {\n const {\n content,\n onOpen,\n onClose,\n onChange,\n open: controlledOpen,\n defaultOpen,\n children,\n cursor,\n toggleMethod,\n withArrow,\n placement,\n ...popper\n } = props\n const [isOpen, setOpen] = useState(!!(defaultOpen ?? controlledOpen))\n const arrowRef = useRef(null)\n\n const handleOpen = () => {\n if (toggleMethod !== \"click\") {\n if (typeof controlledOpen !== \"boolean\") {\n setOpen(true)\n }\n if (onOpen) onOpen()\n }\n }\n\n const handleClose = () => {\n if (toggleMethod !== \"click\") {\n if (typeof controlledOpen !== \"boolean\") {\n setOpen(false)\n }\n if (onClose) onClose()\n }\n }\n\n useEffect(() => {\n if (typeof controlledOpen === \"boolean\") setOpen(controlledOpen)\n }, [controlledOpen])\n\n const {\n refs,\n floatingStyles,\n context,\n middlewareData,\n placement: realPlacement,\n } = useFloating({\n open: isOpen,\n onOpenChange: setOpen,\n middleware: [\n offset(),\n flip(),\n shift({ padding: 6 }),\n ...(withArrow\n ? [\n arrow({\n element: arrowRef,\n }),\n ]\n : []),\n ],\n placement,\n whileElementsMounted: autoUpdate,\n })\n\n const click = useClick(context)\n const dismiss = useDismiss(context)\n const role = useRole(context)\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ...(toggleMethod === \"click\" ? [click] : []),\n ])\n\n useEffect(() => {\n setOpen(!!controlledOpen)\n }, [controlledOpen])\n\n useEffect(() => {\n if (onChange) onChange(!!isOpen)\n }, [isOpen])\n\n return (\n <StyledWrapper onMouseLeave={handleClose} ref={ref}>\n <StyledContentWrapper\n onMouseEnter={handleOpen}\n ref={refs.setReference}\n cursor={cursor}\n {...getReferenceProps()}\n >\n <StyledContent>{children}</StyledContent>\n </StyledContentWrapper>\n <Popper\n open={isOpen}\n {...popper}\n ref={refs.setFloating}\n arrowRef={arrowRef}\n style={floatingStyles}\n withArrow={withArrow}\n arrowPosition={middlewareData.arrow}\n realPlacement={realPlacement}\n {...getFloatingProps()}\n >\n {content}\n </Popper>\n </StyledWrapper>\n )\n})\n\nexport default Tooltip\n\nconst containerCSS = css`\n display: inline-flex;\n width: fit-content;\n height: fit-content;\n max-width: 100%;\n`\n\nconst StyledWrapper = styled.div`\n ${containerCSS};\n position: relative;\n`\n\nconst StyledContentWrapper = styled.div`\n ${containerCSS};\n cursor: ${({ cursor }) => cursor};\n z-index: 1;\n`\n\nconst StyledContent = styled.div`\n ${containerCSS};\n z-index: -1;\n`\n","import React from \"react\"\r\nimport styled from \"@emotion/styled\"\r\nimport Container from \"../Container\"\r\nimport Caption from \"../Caption\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst ErrorComponent = ({ message, icon, ...otherProps }) => (\r\n <Container {...otherProps}>\r\n <StyledTitle>{message}</StyledTitle>\r\n <StyledIconWrapper>{icon}</StyledIconWrapper>\r\n </Container>\r\n)\r\n\r\nexport default ErrorComponent\r\n\r\nconst StyledTitle = styled(Caption)`\r\n font-size: 24px;\r\n line-height: 32px;\r\n margin: 104px auto 16px;\r\n text-align: center;\r\n max-width: 530px;\r\n @media (max-width: ${theme.breakpoints.sm}px) {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n`\r\n\r\nconst StyledIconWrapper = styled.div`\r\n svg {\r\n width: 100%;\r\n height: auto;\r\n min-height: 200px;\r\n max-height: calc(100vh - 200px);\r\n }\r\n`\r\n"],"names":["colors","primary","main","pressed","hover","light","light2","secondary","gray60","gray50","gray40","gray30","gray15","white","disabled","background","light3","success","green70","green60","green10","green5","error","red70","red60","red10","red5","info","blue70","blue60","blue10","blue5","purple","purple70","purple60","purple10","purple5","shadows","shadow1","shadow2","shadow3","shadow4","breakpoints","xxs","xs","sm","md","lg","xl","settings","spacing","columns","themeOld","palette","theme","brand","_objectSpread","grey","seventy","sixty","fiftyP","fourty","thirty","fifteenB","zero","light1","light4","green","ten","five","red","blue","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","window","b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isAsyncMode","console","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","require$$0","require$$1","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","map","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","val","TypeError","toObject","s","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","getPropType","element","elementType","ReactIs","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","require$$2","headingSizes","hero","h1","h2","h3","h4","headingVariants","size","height","mobSize","mobHeight","Heading","forwardRef","ref","children","className","otherProps","_objectWithoutProperties","_excluded","_jsx","StyledHeading","as","defaultProps","color","colorGroup","disableUserSelect","weight","propTypes","headingSettingsCSS","css","align","_styled","label","captionSizes","high","Caption","StyledCaption","variant","displayName","captionSettingsCSS","_ref","disSelect","textVariants","Text","StyledText","textSettingsCSS","buttonSizes","buttonBorders","lightGray","lightOrange","buttonVariants","active","orange","hoverColor","border","whiteWithOrangeHover","whiteWithGray","whiteWithBrand","grayLightWithBorder","grayLight","grayDark","backgroundLight","backgroundWithBorder","blur","backdrop","blurDark","transparent","withoutShadow","orangeWithHoverLight","orangeWithBorder","transparentLight","transparentWithBorder","transparentWithDarkBorder","transparentWithBoldBorder","Button","fullWidth","isCircle","captionSize","disabledStyle","startIcon","endIcon","captionWeight","withoutChildrenWrapper","buttonProps","StyledButton","StyledCircleButtonContainer","_jsxs","StyledContentContainer","withIcon","StyledStartIcon","StyledEndIcon","circleButtonCSS","_ref2","buttonSettingsCSS","buttonVariantCSS","concat","styles","_EMOTION_STRINGIFIED_CSS_ERROR__","iconContainerCSS","_ref3","ErrorIcon","width","viewBox","fill","xmlns","fillRule","clipRule","WarningIcon","SuccessIcon","messageVariants","icon","warning","InputMessage","_messageRef$current2","msg","messageRef","useRef","_useState2","_slicedToArray","useState","messageRefHeight","setMessageRefHeight","useEffect","_messageRef$current","current","clientHeight","StyledMessage","style","bottom","StyledIconWrapper","StyledTitle","messageVariantCSS","TextareaGrabIcon","useForkRef","_len","refs","_key","React","useMemo","instance","setRef","Input","isTextArea","inputRefProp","inputRef","inputStyles","labelStyles","messageClassName","labelInlineStyles","messageVariant","rows","placeholder","inputProps","isFilled","setIsFilled","isInvalid","forwardedRef","autoHeight","scrollHeight","_inputRef$current","commonProps","onInput","currentValue","replace","withMessage","withLabel","StyledContainer","StyledTextarea","StyledInput","StyledInputLabel","StyledTextareaIcon","labelActiveCSS","inputStates","inputCSS","inputStateCSS","InputWithAdornments","_startIconRef$current2","_endIconRef$current2","cornerLabel","startIconRef","endIconRef","startIconWidth","setStartIconWidth","_useState4","endIconWidth","setEndIconWidth","labelWidth","getLabelWidth","inputStyle","paddingLeft","paddingRight","labelStyle","left","maxWidth","_startIconRef$current","clientWidth","_endIconRef$current","isCornerLabel","StyledCornerLabel","errorMessage","cornerLabelCSS","StyledIcon","isString","str","isObject","obj","_obj$constructor","pick","_","includes","reduce","acc","DIRECTION","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","ActionDetails","opts","slice","startChangePos","oldValue","oldSelection","start","Math","min","cursorPos","insertedCount","inserted","substr","removedCount","max","end","removed","head","substring","tail","removeDirection","IMask","el","InputMask","maskedClass","mask","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","Masked","MaskedFunction","warn","normalizeOpts","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","HTMLMaskElement","input","super","_handlers","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","document","activeElement","bindEvents","handlers","event","_toggleEventHandler","EVENTS_MAP","unbindEvents","handler","removeEventListener","addEventListener","selectionChange","drop","click","focus","commit","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","typedValue","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","listeners","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newDisplayValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","isComplete","clearTimeout","nearestInputPos","on","off","hIndex","indexOf","splice","details","oldRawValue","rawInputValue","offset","raw","doCommit","preventDefault","stopPropagation","destroy","ChangeDetails","static","prep","rawInserted","skip","tailShift","aggregate","ContinuousTailDetails","stop","extend","appendTo","append","_appendPlaceholder","state","unshift","beforePos","shiftChar","shift","_update","DEFAULTS","_initialized","withValueRefresh","_rawInputValue","reset","resolve","flags","parse","format","extractInput","direction","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","doSkipInvalid","eager","remove","fn","_refreshing","rawInput","ret","runIsolated","_isolated","Boolean","skipInvalid","normalize","prepare","prepareChar","parent","deleteCount","tailPos","eagerRemove","forceDirection","valLength","tval","EMPTY_VALUES","undefined","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","index","_stops","phDetails","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","ok","block","_blockStartPos","pushState","popState","pop","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","PatternFixedDefinition","isUnmasking","_isRawInput","maxPos","appendEager","isResolved","char","PatternInputDefinition","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","search","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","bNames","filter","bName","sort","expose","blockOpts","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","autofix","patternOpts","fromStr","padStart","toStr","sameCharsCount","repeat","boundaries","minstr","maxstr","num","match","padEnd","nextVal","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","getMonth","getDate","bk","date","isDateExist","day","month","year","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","i1","i2","MaskedEnum","enum","_enum","eopts","lengths","requiredLength","optionalLength","some","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","isNaN","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","test","dropFractional","UNMASKED_RADIX","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","pipe","globalThis","MASK_PROPS","unmask","onAccept","onComplete","MASK_PROPS_NAMES","NON_MASK_OPTIONS_PROPS_NAMES","MASK_OPTIONS_PROPS_NAMES","pName","IMaskMixin","ComposedComponent","_class","MaskedComponent","Component","_inputRef","componentDidMount","initMask","componentDidUpdate","maskOptions","_extractMaskOptionsFromProps","_this$element","maskRef","maskValue","destroyMask","componentWillUnmount","_onAccept","_onComplete","cloneProps","prop","nonMaskProp","_extractNonMaskProps","maskProp","defaultValue","render","createElement","nestedComponentName","IMaskInputClass","MaskedField","InputWithMask","onChange","onFocus","onBlur","other","_excluded2","formattedValue","_ref$current","_ref$current2","_ref$current3","CountryItem","item","selectCountryIndex","countryIcon","nameCode","toUpperCase","fromCodePoint","charCodeAt","StyledCountry","onClick","StyledCountryName","nameRus","StyledCountryPhone","phoneCode","SearchIcon","Dropdown","isOpen","setIsOpenDropDown","buttonRef","countries","filteredCountries","setFilteredCountries","dropdownRef","closePopUp","contains","_buttonRef$current","inputWrapper","parentElement","zIndex","StyledSearchWrapper","StyledSearch","StyledSearchInput","query","toLowerCase","StyledDropdown","HalfArrowIcon","InputWithCountryDropdown","onSelectCountry","hiddenInputProps","selectedCountryCode","selectedCountryIndex","findIndex","country","selectedCountry","setSelectedCountry","isDropdownOpen","setIsDropdownOpen","StyledDropdownWrapper","StyledPhoneCodeButton","StyledPhoneCodeIcon","isReverse","display","readOnly","Checkbox","checkboxProps","StyledLabel","StyledCheckbox","StyledCustomCheckbox","StyledCheckboxLabel","errorCSS","CloseIcon","Modal","handleClose","isScrollable","title","description","isHasHeader","modalRef","body","classList","add","createPortal","Global","StyledModal","StyledHeaderWrapper","StyledModalTitle","StyledDescriptionWrapper","StyledDescription","StyledHeadingIconsWrapper","switchVariants","before","Switch","switchProps","StyledSwitch","StyledCustomSwitch","StyledSwitchLabel","switchVariantCSS","switchErrorCSS","Radio","checked","isSquare","radioProps","StyledRadio","StyledCustomRadio","StyledRadioLabel","FileIcon","InputFile","setValue","StyledWrapper","files","titleActiveCSS","Divider","StyledDivider","Container","Grid","container","StyledGrid","justify","alignItems","alignContent","containerCSS","wrap","containerSpacingCSS","itemSizeCSS","_excluded3","Box","StyledBox","pt","pb","pr","pl","mt","mb","mr","ml","_ref4","_ref5","_ref6","_ref7","_ref8","Accordion","expanded","detailsBlock","_React$Children$toArr","Children","toArray","_React$Children$toArr2","summary","otherChildren","StyledAccordion","cloneElement","StyledCollapse","onTransitionEnd","AccordionSummary","defaultExpanded","expandIcon","contentStyles","expandedStyles","iconStyles","setExpanded","_detailsBlock$current","_detailsBlock$current2","getComputedStyle","getPropertyValue","StyledAccordionSummary","prev","StyledSummaryContent","StyledSummaryIcon","shouldForwardProp","AccordionDetails","Skeleton","StyledSkeleton","waveAnim","keyframes","_templateObject","_taggedTemplateLiteral","AppBar","StyledAppBar","fixesBarCSS","ToolBar","StyledTollBar","CircularProgress","svgStyles","circleStyles","StyledProgress","StyledSVG","StyledCircle","cx","cy","strokeWidth","rotateAnimate","circleAnimate","_templateObject2","LinearProgress","progressBarStyles","StyledLinearProgress","StyledLinearProgressBar","transform","nextItem","list","nextElementSibling","previousItem","previousElementSibling","moveFocus","currentFocus","traversalFunction","Tabs","indicatorPos","indicatorHidden","childrenProp","tabListRef","indicatorStyles","setIndicatorStyles","child","childIndex","childValue","selected","_tabListRef$current","selectedTab","offsetLeft","StyledTabs","StyledTabList","tabIndex","role","onKeyDown","currFocus","ownerDocument","StyledTabsIndicator","hidden","position","indicatorPositionsCSS","top","Tab","tabRef","StyledTab","id","elem","TabsPanel","tabs","tabPanels","paths","activeTab","endComponent","navigate","_React$useState2","tabsRef","StyledTabsWrapper","_tabsRef$current","history","route","scrollTo","behavior","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","objectToString","nativeMax","nativeMin","now","debounce","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","toNumber","cancel","flush","isObjectLike","valueOf","isBinary","lodash_throttle","defineProperty","addPassiveEventListener","eventName","listener","supportsPassiveOption","get","passive","removePassiveEventListener","_lodash2","_lodash","__esModule","scrollSpy","spyCallbacks","spySetState","scrollSpyContainers","mount","scrollSpyContainer","throttle","eventHandler","throttleAmount","eventThrottler","scrollHandler","_passiveEventListeners","isMounted","currentPositionX","supportPageOffset","pageYOffset","isCSS1Compat","compatMode","pageXOffset","documentElement","scrollLeft","currentPositionY","scrollTop","addStateHandler","addSpyHandler","updateStates","unmount","stateHandler","spyHandler","update","getElementOffsetInfoUntil","predicate","offsetTop","currentOffsetParent","offsetParent","updateHash","hash","historyUpdate","hashVal","hashToUpdate","curLoc","urlToPush","pathname","replaceState","getHash","filterElementInContainer","compareDocumentPosition","scrollOffset","horizontal","getBoundingClientRect","scrollX","scrollY","_getElementOffsetInfo","isDocument","defaultEasing","pow","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","events","subscribe","cancelEvent","Events","registered","scrollEvent","register","evtName","callback","_extends","_interopRequireDefault","_utils","_smooth2","_smooth","_cancelEvents2","_cancelEvents","_scrollEvents2","_scrollEvents","getAnimationType","smooth","requestAnimationFrameHelper","requestAnimationFrame","webkitRequestAnimationFrame","currentWindowProperties","delay","containerElement","animateScroll","easing","timestamp","ignoreCancelEvents","delta","round","targetPosition","startPosition","progress","percent","duration","currentPosition","ceil","easedAnimate","setContainer","containerId","getElementById","nodeType","animateTopScroll","delayTimeout","absolute","parseFloat","proceedOptions","scrollToTop","scrollToBottom","scrollWidth","offsetWidth","html","scrollContainerWidth","offsetHeight","scrollContainerHeight","toPosition","scrollMore","_utils2","_animateScroll2","_animateScroll","__mapped","__activeLink","unregister","getElementsByName","getElementsByClassName","setActiveLink","link","getActiveLink","scrollHash","mountFlag","initialized","scroller","containers","handleHashChange","initStateFromHash","mapContainer","isInitialized","_this","isInit","changeHash","saveHashHistory","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_react","_scrollSpy2","_scrollSpy","_scroller2","_scroller","_propTypes2","_propTypes","_scrollHash2","_scrollHash","protoTypes","activeClass","activeStyle","spy","isDynamic","onSetActive","onSetInactive","hashSpy","spyThrottle","customScroller","Link","_React$PureComponent","_classCallCheck","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","_initialiseProps","subClass","superClass","create","setPrototypeOf","_inherits","getScrollSpyContainer","setState","trim","handleClick","PureComponent","_this2","isInside","isOutside","elemLeftBound","elemRightBound","containerLeft","cords","offsetX","floor","elemTopBound","elemBottomBound","containerTop","_cords","offsetY","activeLink","_props$saveHashHistor","_props$saveHashHistor2","_saveHashHistory","_scrollLink2","_scrollLink","LinkElement","_React$Component","_temp","ButtonElement","_reactDom","childBindings","domNode","registerElems","prevProps","parentBindings","_scrollElement2","_scrollElement","ElementWrapper","newProps","Helpers","Scroll","defaultScroller","_React$Component2","_this3","Helpers_1","ScrollLink","_Link2","_Link","_Button2","_Button","_Element2","_Element","_Helpers2","_Helpers","ScrollElement","ScrollTab","isScrolling","setIsScrolling","setIsIndicatorHidden","setIsActive","activeRef","scrollingRef","handleSelect","endScrolling","StyledScrollTab","MenuPanel","tabsId","isIndicatorHidden","_useState6","IconButton","Popper","open","withArrow","withoutMobile","arrowRef","arrowPosition","realPlacement","arrowPlacement","StyledPopperWrapper","StyledPopper","StyledArrow","getAlignment","placement","getLengthFromAxis","axis","getSide","getMainAxisFromPlacement","computeCoordsFromPlacement","rtl","reference","floating","commonX","commonY","mainAxis","commonAlign","isVertical","coords","evaluate","param","getSideObjectFromPadding","padding","right","expandPaddingObject","rectToClientRect","rect","async","detectOverflow","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","within","min$1","max$1","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","center","alignmentOffset","centerOffset","oppositeSideMap","getOppositePlacement","side","oppositeAlignmentMap","getOppositeAlignmentPlacement","alignment","flip","_middlewareData$flip","middlewareData","initialPlacement","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","detectOverflowOptions","isBasePlacement","isRTL","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","getOppositeAxisPlacements","placements","overflow","overflows","overflowsData","cross","mainAlignmentSide","getAlignmentSides","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$map$so","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","alignmentAxis","convertValueToCoords","getWindow","_node$ownerDocument","defaultView","getComputedStyle$1","Node","getNodeName","nodeName","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","overflowY","isTableElement","isContainingBlock","safari","isSafari","perspective","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","createEmptyCoords","getCssDimensions","hasOffset","shouldFallback","$","unwrapElement","domElement","isFinite","noOffsets","getVisualOffsets","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","clientTop","paddingTop","getNodeScroll","getWindowScrollBarX","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","scroll","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","set","getClippingElementAncestors","_c","firstClippingAncestor","clippingRect","accRect","getOffsetParentFn","getDimensionsFn","getClientRects","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","threshold","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","ratio","intersectionRatio","rootMargin","observe","observeMove","frameId","resizeObserver","ResizeObserver","prevRefRect","frameLoop","nextRefRect","cancelAnimationFrame","computePosition","Map","mergedOptions","platformWithCache","config","middleware","validMiddleware","getElementRects","statefulPlacement","resetCount","nextX","nextY","computePosition$1","arrow$1","useLayoutEffect","deepEqual","getDPR","devicePixelRatio","roundByDPR","dpr","useLatestRef","serverHandoffComplete","genId","useId","setId","FloatingNodeContext","createContext","FloatingTreeContext","useFloatingTree","useContext","getDocument","isVirtualClick","mozInputSource","isTrusted","androidRe","uaData","navigator","userAgentData","getPlatform","brands","version","userAgent","getUserAgent","pointerType","buttons","detail","isVirtualPointerEvent","pressure","isMouseLikePointerType","strict","getChildren","nodes","allChildren","_node$context","parentId","context","currentChildren","_currentChildren","_node$context2","TYPEABLE_SELECTOR","isButtonTarget","isSpaceIgnored","matches","isTypeableElement","useSafeInsertionEffect","useEffectEvent","useCallback","isEventTargetWithin","composedPath","bubbleHandlerKeys","pointerdown","mousedown","captureHandlerKeys","useDismiss","onOpenChange","nodeId","domReference","dataRef","enabled","escapeKey","outsidePress","unstable_outsidePress","outsidePressEvent","referencePress","referencePressEvent","bubbles","tree","nested","_React$useContext","outsidePressFn","insideReactTreeRef","escapeKeyBubbles","outsidePressBubbles","_bubbles$escapeKey","_bubbles$outsidePress","normalizeBubblesProp","closeOnEscapeKeyDown","nodesRef","shouldDismiss","_child$context","__escapeKeyBubbles","emit","returnFocus","preventScroll","isReactEvent","nativeEvent","closeOnPressOutside","insideReactTree","getTarget","canScrollX","canScrollY","xCond","targetIsInsideChildren","_child$context2","__outsidePressBubbles","onScroll","doc","_doc$defaultView","useFloating","_options$elements","unstable_onOpenChange","_domReference","setDomReference","externalReference","externalFloating","whileElementsMounted","setData","isPositioned","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","whileElementsMountedRef","platformRef","then","fullData","isMountedRef","ReactDOM","flushSync","floatingStyles","initialStyles","useFloating$1","openEvent","domReferenceRef","_map$get","_map$get2","createPubSub","floatingId","setPositionReference","positionReference","find","mergeProps","userProps","propsList","elementKey","Tooltip","content","onOpen","onClose","controlledOpen","defaultOpen","toggleMethod","popper","setOpen","_useFloating","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_toConsumableArray","eventOption","toggle","ignoreMouse","keyboardHandlers","pointerTypeRef","didKeyDownRef","onPointerDown","onMouseDown","button","defaultPrevented","onKeyUp","useClick","dismiss","referenceId","floatingProps","useRole","_useInteractions","deps","getReferenceProps","getFloatingProps","getItemProps","useInteractions","onMouseLeave","StyledContentWrapper","onMouseEnter","StyledContent","ErrorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/theme/colors/index.js","../src/theme/shadows/index.js","../src/theme/breakpoints/index.js","../src/theme/settings/index.js","../src/theme/index.js","../../../node_modules/classnames/index.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../../../node_modules/prop-types/node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../node_modules/prop-types/index.js","../src/components/Heading/variants.js","../src/components/Heading/index.js","../src/components/Caption/variants.js","../src/components/Caption/index.js","../src/components/Text/variants.js","../src/components/Text/index.js","../src/components/Button/variants.js","../src/components/Button/index.js","../src/icons/ErrorIcon.js","../src/icons/WarningIcon.js","../src/icons/SuccessIcon.js","../src/components/InputMessage/variants.js","../src/components/InputMessage/index.js","../src/icons/TextareaGrabIcon.js","../src/utils/useForkRef.js","../src/components/Input/index.js","../src/components/InputWithAdornments/index.js","../../../node_modules/imask/esm/core/utils.js","../../../node_modules/imask/esm/core/action-details.js","../../../node_modules/imask/esm/core/holder.js","../../../node_modules/imask/esm/masked/factory.js","../../../node_modules/imask/esm/controls/mask-element.js","../../../node_modules/imask/esm/controls/html-mask-element.js","../../../node_modules/imask/esm/controls/html-input-mask-element.js","../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../node_modules/imask/esm/controls/input.js","../../../node_modules/imask/esm/core/change-details.js","../../../node_modules/imask/esm/core/continuous-tail-details.js","../../../node_modules/imask/esm/masked/base.js","../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../node_modules/imask/esm/masked/pattern/cursor.js","../../../node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../node_modules/imask/esm/masked/pattern/input-definition.js","../../../node_modules/imask/esm/masked/regexp.js","../../../node_modules/imask/esm/masked/pattern.js","../../../node_modules/imask/esm/masked/range.js","../../../node_modules/imask/esm/masked/date.js","../../../node_modules/imask/esm/masked/dynamic.js","../../../node_modules/imask/esm/masked/enum.js","../../../node_modules/imask/esm/masked/function.js","../../../node_modules/imask/esm/masked/number.js","../../../node_modules/imask/esm/masked/pipe.js","../../../node_modules/imask/esm/index.js","../../../node_modules/react-imask/esm/mixin.js","../../../node_modules/react-imask/esm/input.js","../src/components/InputWithMask/index.js","../src/components/InputWithCountryDropdown/Dropdown/CountryItem/index.js","../src/icons/SearchIcon.js","../src/components/InputWithCountryDropdown/Dropdown/index.js","../src/icons/HalfArrowIcon.js","../src/components/InputWithCountryDropdown/index.js","../src/components/Checkbox/index.js","../src/icons/CloseIcon.js","../src/components/Modal/index.js","../src/components/Switch/variants.js","../src/components/Switch/index.js","../src/components/Radio/index.js","../src/icons/FileIcon.js","../src/components/InputFile/index.js","../src/components/Divider/index.js","../src/components/Container/index.js","../src/components/Grid/index.js","../src/components/Box/index.js","../src/components/Accordion/index.js","../src/components/AccordionSummary/index.js","../src/components/AccordionDetails/index.js","../src/components/Skeleton/index.js","../src/components/AppBar/index.js","../src/components/ToolBar/index.js","../src/components/CircularProgress/index.js","../src/components/LinearProgress/index.js","../src/components/Tabs/index.js","../src/components/Tab/index.js","../src/components/TabsPanel/index.js","../../../node_modules/lodash.throttle/index.js","../../../node_modules/react-scroll/modules/mixins/passive-event-listeners.js","../../../node_modules/react-scroll/modules/mixins/scroll-spy.js","../../../node_modules/react-scroll/modules/mixins/utils.js","../../../node_modules/react-scroll/modules/mixins/smooth.js","../../../node_modules/react-scroll/modules/mixins/cancel-events.js","../../../node_modules/react-scroll/modules/mixins/scroll-events.js","../../../node_modules/react-scroll/modules/mixins/animate-scroll.js","../../../node_modules/react-scroll/modules/mixins/scroller.js","../../../node_modules/react-scroll/modules/mixins/scroll-hash.js","../../../node_modules/react-scroll/modules/mixins/scroll-link.js","../../../node_modules/react-scroll/modules/components/Link.js","../../../node_modules/react-scroll/modules/components/Button.js","../../../node_modules/react-scroll/modules/mixins/scroll-element.js","../../../node_modules/react-scroll/modules/components/Element.js","../../../node_modules/react-scroll/modules/mixins/Helpers.js","../../../node_modules/react-scroll/modules/index.js","../src/components/ScrollTab/index.js","../src/components/MenuPanel/index.js","../src/components/IconButton/index.js","../src/components/Popper/index.js","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js","../../../node_modules/@floating-ui/react/dist/floating-ui.react.esm.js","../src/components/Tooltip/index.js","../src/components/ErrorComponent/index.js"],"sourcesContent":["const colors = {\r\n primary: {\r\n main: \"#ED713C\",\r\n pressed: \"#D24C13\",\r\n hover: \"#EA5A1D\",\r\n light: \"#FCEAE2\",\r\n light2: \"#FEF7F3\",\r\n },\r\n secondary: {\r\n main: \"#18191F\",\r\n gray60: \"#474A57\",\r\n gray50: \"#7F8285\",\r\n gray40: \"#949494\",\r\n gray30: \"#BFBFBF\",\r\n gray15: \"#EAECEF\",\r\n white: \"#FFFFFF\",\r\n light: \"#C4C4C4\",\r\n disabled: \"#A6AEBC\",\r\n },\r\n background: {\r\n main: \"#FBFBFD\",\r\n light2: \"#F7F8F9\",\r\n light3: \"#F2F3F5\",\r\n },\r\n success: {\r\n green70: \"#259E58\",\r\n green60: \"#23A65A\",\r\n main: \"#27AE60\",\r\n green10: \"#EAFCF7\",\r\n green5: \"#F0FDF9\",\r\n },\r\n error: {\r\n red70: \"#D03C1A\",\r\n red60: \"#DA421F\",\r\n main: \"#EB4620\",\r\n red10: \"#FCE3DE\",\r\n red5: \"#FDF0ED\",\r\n },\r\n info: {\r\n blue70: \"#0098B6\",\r\n blue60: \"#009CBB\",\r\n main: \"#00ABCD\",\r\n blue10: \"#D9F2F8\",\r\n blue5: \"#E5F7FA\",\r\n },\r\n purple: {\r\n purple70: \"#914BD2\",\r\n purple60: \"#974EDB\",\r\n main: \"#9B51E0\",\r\n purple10: \"#F0E5FA\",\r\n purple5: \"#F7F1FD\",\r\n },\r\n}\r\n\r\nexport default colors\r\n","const shadows = {\r\n shadow1: \"0px 5px 16px rgba(0, 0, 0, 0.1)\",\r\n shadow2: \"0px 12px 16px rgba(0, 0, 0, 0.08)\",\r\n shadow3: \"0px 26px 34px rgba(0, 0, 0, 0.1)\",\r\n shadow4: \"0px 10px 20px rgba(0, 0, 0, 0.1)\",\r\n}\r\n\r\nexport default shadows\r\n","const breakpoints = {\r\n xxs: 375,\r\n xs: 600,\r\n sm: 900,\r\n md: 1200,\r\n lg: 1440,\r\n xl: 1536,\r\n}\r\n\r\nexport default breakpoints\r\n","const settings = {\r\n spacing: 8,\r\n columns: 12,\r\n}\r\n\r\nexport default settings\r\n","import colors from \"./colors\"\r\nimport shadows from \"./shadows\"\r\nimport breakpoints from \"./breakpoints\"\r\nimport settings from \"./settings\"\r\n\r\nconst palette = {\r\n brand: {\r\n ...colors.primary,\r\n background: colors.primary.light2,\r\n },\r\n grey: {\r\n seventy: colors.secondary.main,\r\n sixty: colors.secondary.gray60,\r\n fiftyP: colors.secondary.gray50,\r\n fourty: colors.secondary.gray40,\r\n thirty: colors.secondary.gray30,\r\n fifteenB: colors.secondary.gray15,\r\n zero: colors.secondary.white,\r\n },\r\n background: {\r\n ...colors.background,\r\n light1: colors.background.main,\r\n light4: \"#C5C6C7\",\r\n },\r\n green: {\r\n fiftyP: colors.success.main,\r\n seventy: colors.success.green70,\r\n sixty: colors.success.green60,\r\n ten: colors.success.green10,\r\n five: colors.success.green5,\r\n },\r\n red: {\r\n fiftyP: colors.error.main,\r\n seventy: colors.error.red70,\r\n sixty: colors.error.red60,\r\n ten: colors.error.red10,\r\n five: colors.error.red5,\r\n },\r\n blue: {\r\n fiftyP: colors.info.main,\r\n seventy: colors.info.blue70,\r\n sixty: colors.info.blue60,\r\n ten: colors.info.blue10,\r\n five: colors.info.blue5,\r\n },\r\n purple: {\r\n fiftyP: colors.purple.main,\r\n seventy: colors.purple.purple70,\r\n sixty: colors.purple.purple60,\r\n ten: colors.purple.purple10,\r\n five: colors.purple.purple5,\r\n },\r\n}\r\n\r\nconst themeOld = {\r\n palette: colors,\r\n breakpoints,\r\n shadows,\r\n settings,\r\n}\r\n\r\nconst theme = {\r\n palette,\r\n breakpoints,\r\n shadows,\r\n settings,\r\n}\r\n\r\nexport { themeOld, theme }\r\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","const headingSizes = {\r\n hero: \"h1\",\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n}\r\n\r\nconst headingVariants = {\r\n hero: {\r\n size: 56,\r\n height: 72,\r\n mobSize: 32,\r\n mobHeight: 48,\r\n },\r\n h1: {\r\n size: 32,\r\n height: 48,\r\n mobSize: 24,\r\n mobHeight: 32,\r\n },\r\n h2: {\r\n size: 24,\r\n height: 32,\r\n mobSize: 18,\r\n mobHeight: 24,\r\n },\r\n h3: {\r\n size: 18,\r\n height: 24,\r\n mobSize: 16,\r\n mobHeight: 24,\r\n },\r\n h4: {\r\n size: 16,\r\n height: 24,\r\n mobSize: 14,\r\n mobHeight: 24,\r\n },\r\n}\r\n\r\nexport { headingVariants, headingSizes }\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport { theme } from \"../../theme\"\r\nimport { headingSizes, headingVariants } from \"./variants\"\r\n\r\nconst { breakpoints, palette } = theme\r\n\r\nconst Heading = forwardRef((props, ref) => {\r\n const { size, children, className, ...otherProps } = props\r\n\r\n return (\r\n <StyledHeading\r\n as={headingSizes[size]}\r\n size={headingVariants[size]}\r\n className={classNames(\"KUI-Heading\", className)}\r\n ref={ref}\r\n {...otherProps}\r\n >\r\n {children}\r\n </StyledHeading>\r\n )\r\n})\r\n\r\nHeading.defaultProps = {\r\n size: \"h1\",\r\n color: \"seventy\",\r\n colorGroup: \"grey\",\r\n disableUserSelect: false,\r\n weight: 700,\r\n}\r\n\r\nHeading.propTypes = {\r\n size: PropTypes.oneOf([\"hero\", \"h1\", \"h2\", \"h3\", \"h4\"]),\r\n disableUserSelect: PropTypes.bool,\r\n weight: PropTypes.number,\r\n}\r\n\r\nexport default Heading\r\n\r\nconst headingSettingsCSS = (props) => css`\r\n font-size: ${props.size.size}px;\r\n line-height: ${props.size.height}px;\r\n text-align: ${props.align};\r\n color: ${palette[props.colorGroup][props.color]\r\n ? palette[props.colorGroup][props.color]\r\n : palette.grey.seventy};\r\n font-weight: ${props.weight};\r\n ${props.disableUserSelect && \"user-select: none\"};\r\n @media (max-width: ${breakpoints.sm}px) {\r\n font-size: ${props.size.mobSize}px;\r\n line-height: ${props.size.mobHeight}px;\r\n }\r\n`\r\n\r\nconst StyledHeading = styled.h1`\r\n font-family: \"Inter\", sans-serif;\r\n letter-spacing: normal;\r\n text-transform: none;\r\n margin: 0;\r\n font-weight: 700;\r\n ${headingSettingsCSS};\r\n`\r\n","const captionSizes = {\r\n xs: {\r\n size: 12,\r\n height: 14,\r\n },\r\n sm: {\r\n size: 13,\r\n height: 14,\r\n high: 20,\r\n },\r\n s: {\r\n size: 14,\r\n height: 18,\r\n high: 22,\r\n },\r\n m: {\r\n size: 16,\r\n height: 24,\r\n },\r\n l: {\r\n size: 18,\r\n height: 28,\r\n },\r\n}\r\n\r\nexport default captionSizes\r\n","import React, { forwardRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport captionSizes from \"./variants\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst Caption = forwardRef((props, ref) => {\r\n const { children, size, className, ...otherProps } = props\r\n\r\n return (\r\n <StyledCaption\r\n size={captionSizes[size]}\r\n className={classNames(\"KUI-Caption\", className)}\r\n ref={ref}\r\n {...otherProps}\r\n >\r\n {children}\r\n </StyledCaption>\r\n )\r\n})\r\n\r\nCaption.defaultProps = {\r\n size: \"m\",\r\n weight: 400,\r\n color: \"seventy\",\r\n colorGroup: \"grey\",\r\n disableUserSelect: false,\r\n variant: \"default\",\r\n}\r\n\r\nCaption.displayName = \"Caption\"\r\n\r\nCaption.propTypes = {\r\n size: PropTypes.oneOf([\"xs\", \"sm\", \"s\", \"m\", \"l\"]),\r\n weight: PropTypes.oneOf([400, 500, 600, 700]),\r\n disableUserSelect: PropTypes.bool,\r\n variant: PropTypes.oneOf([\"default\", \"high\"]),\r\n}\r\n\r\nexport default Caption\r\n\r\nconst captionSettingsCSS = ({\r\n size,\r\n weight,\r\n align,\r\n color,\r\n colorGroup,\r\n disSelect,\r\n variant,\r\n}) => css`\r\n font-size: ${size.size}px;\r\n line-height: ${variant === \"high\" ? size.high || size.height : size.height}px;\r\n font-weight: ${weight};\r\n text-align: ${align};\r\n ${disSelect && \"user-select: none\"};\r\n color: ${theme.palette[colorGroup][color]\r\n ? theme.palette[colorGroup][color]\r\n : theme.palette.grey.seventy};\r\n`\r\n\r\nconst StyledCaption = styled.p`\r\n font-family: \"Inter\", sans-serif;\r\n letter-spacing: normal;\r\n text-transform: none;\r\n margin: 0;\r\n ${captionSettingsCSS};\r\n`\r\n","const textVariants = {\r\n xs: {\r\n size: 13,\r\n height: 20,\r\n },\r\n s: {\r\n size: 14,\r\n height: 22,\r\n },\r\n m: {\r\n size: 18,\r\n height: 28,\r\n },\r\n}\r\n\r\nexport default textVariants\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport { css } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\nimport textVariants from \"./variants\"\r\n\r\nfunction Text(props) {\r\n const { children, size, className, ...otherProps } = props\r\n\r\n return (\r\n <StyledText\r\n size={textVariants[size]}\r\n className={classNames(\"KUI-Text\", className)}\r\n {...otherProps}\r\n >\r\n {children}\r\n </StyledText>\r\n )\r\n}\r\n\r\nText.defaultProps = {\r\n size: \"s\",\r\n color: \"seventy\",\r\n disableUserSelect: false,\r\n weight: 400,\r\n}\r\n\r\nText.propTypes = {\r\n size: PropTypes.oneOf([\"xs\", \"s\", \"m\"]),\r\n weight: PropTypes.oneOf([400, 500, 600]),\r\n color: PropTypes.oneOf([\r\n \"seventy\",\r\n \"sixty\",\r\n \"fiftyP\",\r\n \"fourty\",\r\n \"zero\",\r\n \"brand\",\r\n ]),\r\n disableUserSelect: PropTypes.bool,\r\n}\r\n\r\nexport default Text\r\n\r\nconst textSettingsCSS = ({ size, weight, color, disSelect }) => css`\r\n font-size: ${size.size}px;\r\n line-height: ${size.height}px;\r\n font-weight: ${weight};\r\n ${disSelect && \"user-select: none\"};\r\n color: ${theme.palette.grey[color]\r\n ? theme.palette.grey[color]\r\n : theme.palette.brand.main};\r\n`\r\n\r\nconst StyledText = styled.p`\r\n font-family: \"Inter\", sans-serif;\r\n letter-spacing: normal;\r\n text-transform: none;\r\n margin: 0;\r\n ${textSettingsCSS};\r\n`\r\n","import { theme } from \"../../theme\"\r\n\r\nconst palette = theme.palette\r\n\r\nconst buttonSizes = {\r\n xs: 32,\r\n s: 40,\r\n m: 48,\r\n l: 56,\r\n}\r\n\r\nconst buttonBorders = {\r\n brand: palette.brand.main,\r\n lightGray: palette.grey.fifteenB,\r\n lightOrange: palette.brand.light,\r\n}\r\n\r\nconst buttonVariants = {\r\n primary: {\r\n background: palette.brand.main,\r\n color: palette.grey.zero,\r\n hover: palette.brand.hover,\r\n active: palette.brand.pressed,\r\n },\r\n orange: {\r\n background: palette.brand.light,\r\n color: palette.brand.main,\r\n hover: palette.brand.hover,\r\n active: palette.brand.pressed,\r\n hoverColor: palette.grey.zero,\r\n },\r\n white: {\r\n background: palette.grey.zero,\r\n color: palette.grey.seventy,\r\n hover: palette.background.light1,\r\n active: palette.grey.fifteenB,\r\n border: palette.grey.fifteenB,\r\n },\r\n whiteWithOrangeHover: {\r\n color: palette.grey.sixty,\r\n hover: palette.brand.light,\r\n active: palette.brand.light,\r\n hoverColor: palette.brand.main,\r\n },\r\n whiteWithGray: {\r\n background: palette.grey.zero,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light1,\r\n active: palette.grey.fifteenB,\r\n hoverColor: palette.grey.seventy,\r\n border: palette.background.light3,\r\n },\r\n whiteWithBrand: {\r\n background: palette.grey.zero,\r\n color: palette.brand.main,\r\n },\r\n grayLightWithBorder: {\r\n background: palette.background.light1,\r\n color: palette.grey.fiftyP,\r\n border: palette.grey.fifteenB,\r\n hover: palette.background.light2,\r\n hoverColor: palette.grey.seventy,\r\n active: palette.grey.fifteenB,\r\n },\r\n grayLight: {\r\n background: palette.background.light2,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n active: palette.grey.fifteenB,\r\n },\r\n grayDark: {\r\n background: palette.grey.fiftyP,\r\n color: palette.grey.zero,\r\n hover: palette.grey.sixty,\r\n hoverColor: palette.grey.zero,\r\n pressed: palette.grey.sixty,\r\n },\r\n backgroundLight: {\r\n background: palette.background.light2,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light1,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n },\r\n backgroundWithBorder: {\r\n background: palette.background.light1,\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.fifteenB,\r\n },\r\n blur: {\r\n background: \"rgba(0, 0, 0, 0.6)\",\r\n color: palette.grey.zero,\r\n hover: \"rgba(0, 0, 0, 0.7)\",\r\n active: \"rgba(0, 0, 0, 0.8)\",\r\n backdrop: \"blur(4px)\",\r\n },\r\n blurDark: {\r\n background: \"rgba(0, 0, 0, 0.6)\",\r\n color: palette.grey.zero,\r\n hover: \"rgba(0, 0, 0, 0.8)\",\r\n hoverColor: palette.grey.zero,\r\n pressed: \"rgba(0, 0, 0, 1)\",\r\n },\r\n green: {\r\n background: palette.green.fiftyP,\r\n color: palette.grey.zero,\r\n hover: palette.green.sixty,\r\n active: palette.green.seventy,\r\n },\r\n red: {\r\n background: palette.red.fiftyP,\r\n color: palette.grey.zero,\r\n hover: palette.red.sixty,\r\n active: palette.red.seventy,\r\n },\r\n error: {\r\n background: palette.red.five,\r\n color: palette.red.fiftyP,\r\n hover: palette.red.ten,\r\n hoverColor: palette.red.fiftyP,\r\n pressed: palette.red.ten,\r\n },\r\n transparent: {\r\n withoutShadow: true,\r\n },\r\n orangeWithHoverLight: {\r\n background: palette.brand.background,\r\n color: palette.brand.main,\r\n hover: palette.brand.background,\r\n hoverColor: palette.brand.main,\r\n pressed: palette.brand.background,\r\n },\r\n orangeWithBorder: {\r\n background: palette.brand.light,\r\n color: palette.brand.main,\r\n hover: palette.brand.background,\r\n hoverColor: palette.brand.main,\r\n pressed: palette.brand.background,\r\n border: palette.brand.main,\r\n },\r\n transparentLight: {\r\n color: palette.grey.thirty,\r\n hoverColor: palette.grey.fiftyP,\r\n pressed: palette.grey.fifteenB,\r\n withoutShadow: true,\r\n },\r\n transparentWithBorder: {\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.fifteenB,\r\n },\r\n transparentWithDarkBorder: {\r\n color: palette.grey.fiftyP,\r\n hover: palette.background.light3,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.fiftyP,\r\n },\r\n transparentWithBoldBorder: {\r\n color: palette.grey.thirty,\r\n hover: palette.background.light1,\r\n hoverColor: palette.grey.seventy,\r\n pressed: palette.grey.fifteenB,\r\n border: palette.grey.thirty,\r\n },\r\n}\r\n\r\nexport { buttonSizes, buttonBorders, buttonVariants }\r\n","import React, { forwardRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport { css } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\nimport Caption from \"../Caption\"\r\nimport { buttonSizes, buttonBorders, buttonVariants } from \"./variants\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst Button = forwardRef((props, ref) => {\r\n const {\r\n children,\r\n variant,\r\n size,\r\n className,\r\n fullWidth,\r\n isCircle,\r\n captionSize,\r\n disabledStyle,\r\n border,\r\n startIcon,\r\n endIcon,\r\n captionWeight,\r\n withoutChildrenWrapper,\r\n ...buttonProps\r\n } = props\r\n\r\n return (\r\n <StyledButton\r\n ref={ref}\r\n size={size}\r\n variant={variant}\r\n border={border}\r\n fullWidth={fullWidth}\r\n isCircle={isCircle}\r\n className={classNames(\r\n \"KUI-Button\",\r\n buttonProps.disabled && \"KUI-Button_disabled\",\r\n buttonProps.disabled && disabledStyle,\r\n className\r\n )}\r\n {...buttonProps}\r\n >\r\n {isCircle ? (\r\n <StyledCircleButtonContainer className=\"KUI-Button_circle-container\">\r\n {children}\r\n </StyledCircleButtonContainer>\r\n ) : (\r\n <StyledContentContainer\r\n withIcon={startIcon || endIcon}\r\n className={classNames(\r\n (startIcon || endIcon) && \"KUI-Button_icon-container\"\r\n )}\r\n >\r\n {startIcon && (\r\n <StyledStartIcon className=\"KUI-Button_start-icon\">\r\n {startIcon}\r\n </StyledStartIcon>\r\n )}\r\n\r\n {withoutChildrenWrapper ? (\r\n children\r\n ) : (\r\n <Caption\r\n size={captionSize}\r\n weight={captionWeight}\r\n className=\"KUI-Button-text\"\r\n >\r\n {children}\r\n </Caption>\r\n )}\r\n\r\n {endIcon && (\r\n <StyledEndIcon className=\"KUI-Button_end-icon\">\r\n {endIcon}\r\n </StyledEndIcon>\r\n )}\r\n </StyledContentContainer>\r\n )}\r\n </StyledButton>\r\n )\r\n})\r\n\r\nButton.defaultProps = {\r\n variant: \"primary\",\r\n size: \"m\",\r\n fullWidth: false,\r\n endIcon: null,\r\n startIcon: null,\r\n disabled: false,\r\n isCircle: false,\r\n captionSize: \"s\",\r\n border: null,\r\n captionWeight: 600,\r\n}\r\n\r\nButton.propTypes = {\r\n size: PropTypes.oneOf([\"xs\", \"s\", \"m\", \"l\"]),\r\n fullWidth: PropTypes.bool,\r\n endIcon: PropTypes.element,\r\n startIcon: PropTypes.element,\r\n disabled: PropTypes.bool,\r\n isCircle: PropTypes.bool,\r\n captionSize: PropTypes.oneOf([\"xs\", \"sm\", \"s\", \"m\", \"l\"]),\r\n border: PropTypes.oneOf([\"brand\", \"lightGray\", \"lightOrange\"]),\r\n}\r\n\r\nButton.displayName = \"Button\"\r\n\r\nexport default Button\r\n\r\nconst buttonVariantCSS = (variant) => css`\r\n background-color: ${variant.background ? variant.background : \"transparent\"};\r\n & .KUI-Button-text {\r\n ${variant.color && `color: ${variant.color}`};\r\n }\r\n svg path {\r\n ${variant.color && `fill: ${variant.color}`};\r\n }\r\n border: 1px solid ${variant.border ? variant.border : \"transparent\"};\r\n ${variant.backdrop && `backdrop-filter: ${variant.backdrop}`};\r\n @media (hover: hover) {\r\n &:hover {\r\n box-shadow: ${variant.withoutShadow ? \"none\" : theme.shadows.shadow1};\r\n ${variant.hover && `background-color: ${variant.hover}`};\r\n & .KUI-Button-text {\r\n ${variant.hoverColor && `color: ${variant.hoverColor}`};\r\n }\r\n svg path {\r\n ${variant.hoverColor && `fill: ${variant.hoverColor}`};\r\n }\r\n }\r\n &:active {\r\n ${variant.active && `background-color: ${variant.active}`};\r\n }\r\n }\r\n`\r\n\r\nconst circleButtonCSS = ({ isCircle, size }) =>\r\n isCircle &&\r\n css`\r\n padding: 0;\r\n border-radius: 50%;\r\n display: inline-flex;\r\n width: ${buttonSizes[size]}px;\r\n `\r\n\r\nconst buttonSettingsCSS = (props) => css`\r\n width: ${props.fullWidth ? \"100%\" : \"max-content\"};\r\n height: ${buttonSizes[props.size]}px;\r\n ${buttonVariantCSS(buttonVariants[props.variant])};\r\n ${props.border && `border-color: ${buttonBorders[props.border]}`};\r\n`\r\n\r\nconst StyledButton = styled.button`\r\n position: relative;\r\n border-radius: 66px;\r\n padding: 0 16px;\r\n transition: all linear 0.3s;\r\n width: max-content;\r\n text-align: center;\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n ${buttonSettingsCSS};\r\n ${circleButtonCSS};\r\n & .KUI-Button-text,\r\n svg path {\r\n transition: all linear 0.3s;\r\n }\r\n &:disabled,\r\n &:disabled:hover,\r\n &:disabled:active {\r\n cursor: default;\r\n background-color: ${theme.palette.background.light3};\r\n box-shadow: none;\r\n & .KUI-Button-text {\r\n color: #a6aebc;\r\n }\r\n svg path {\r\n fill: #a6aebc;\r\n }\r\n }\r\n`\r\n\r\nconst StyledCircleButtonContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n width: inherit;\r\n`\r\n\r\nconst iconContainerCSS = ({ withIcon }) =>\r\n withIcon &&\r\n css`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n `\r\n\r\nconst StyledContentContainer = styled.div`\r\n ${iconContainerCSS};\r\n`\r\n\r\nconst StyledStartIcon = styled.span`\r\n margin-right: 8px;\r\n display: flex;\r\n`\r\n\r\nconst StyledEndIcon = styled.span`\r\n margin-left: 8px;\r\n display: flex;\r\n`\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst ErrorIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-label=\"error\"\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M7.99935 15.3334C12.0494 15.3334 15.3327 12.0502 15.3327 8.00008C15.3327 3.94999 12.0494 0.666748 7.99935 0.666748C3.94926 0.666748 0.666016 3.94999 0.666016 8.00008C0.666016 12.0502 3.94926 15.3334 7.99935 15.3334ZM7.99935 13.3334C10.9449 13.3334 13.3327 10.9456 13.3327 8.00008C13.3327 5.05456 10.9449 2.66675 7.99935 2.66675C5.05383 2.66675 2.66602 5.05456 2.66602 8.00008C2.66602 10.9456 5.05383 13.3334 7.99935 13.3334ZM9.52795 5.52868C9.78829 5.26833 10.2104 5.26833 10.4708 5.52868C10.7311 5.78903 10.7311 6.21114 10.4708 6.47149L8.94216 8.00008L10.4708 9.52868C10.7311 9.78903 10.7311 10.2111 10.4708 10.4715C10.2104 10.7318 9.78829 10.7318 9.52795 10.4715L7.99935 8.94289L6.47075 10.4715C6.2104 10.7318 5.78829 10.7318 5.52794 10.4715C5.2676 10.2111 5.2676 9.78903 5.52794 9.52868L7.05654 8.00008L5.52794 6.47149C5.2676 6.21114 5.2676 5.78903 5.52794 5.52868C5.78829 5.26833 6.2104 5.26833 6.47075 5.52868L7.99935 7.05727L9.52795 5.52868Z\"\r\n fill=\"#EB5757\"\r\n />\r\n </svg>\r\n)\r\n\r\nErrorIcon.defaultProps = {\r\n width: 16,\r\n height: 16,\r\n}\r\n\r\nErrorIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default ErrorIcon\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst WarningIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-label=\"warning\"\r\n >\r\n <path\r\n d=\"M6.99999 0.142883C10.7871 0.142883 13.8571 3.21293 13.8571 7.00002C13.8571 10.7871 10.7871 13.8572 6.99999 13.8572C3.2129 13.8572 0.142853 10.7871 0.142853 7.00002C0.142853 3.21293 3.2129 0.142883 6.99999 0.142883ZM6.99999 1.28574C3.84408 1.28574 1.28571 3.84411 1.28571 7.00002C1.28571 10.1559 3.84408 12.7143 6.99999 12.7143C10.1559 12.7143 12.7143 10.1559 12.7143 7.00002C12.7143 3.84411 10.1559 1.28574 6.99999 1.28574ZM6.99999 9.05717C7.44182 9.05717 7.79999 9.41534 7.79999 9.85717C7.79999 10.299 7.44182 10.6572 6.99999 10.6572C6.55817 10.6572 6.2 10.299 6.2 9.85717C6.2 9.41534 6.55817 9.05717 6.99999 9.05717ZM7.04206 3.57145C7.17783 3.57145 7.26306 3.59267 7.33756 3.63251C7.41206 3.67235 7.47052 3.73082 7.51036 3.80532C7.55021 3.87982 7.57142 3.96504 7.57142 4.10081V7.61352C7.57142 7.74929 7.55021 7.83452 7.51036 7.90902C7.47052 7.98352 7.41206 8.04198 7.33756 8.08182C7.26306 8.12166 7.17783 8.14288 7.04206 8.14288H6.95793C6.82215 8.14288 6.73693 8.12166 6.66243 8.08182C6.58793 8.04198 6.52947 7.98352 6.48962 7.90902C6.44978 7.83452 6.42857 7.74929 6.42857 7.61352V4.10081C6.42857 3.96504 6.44978 3.87982 6.48962 3.80532C6.52947 3.73082 6.58793 3.67235 6.66243 3.63251C6.73693 3.59267 6.82215 3.57145 6.95793 3.57145H7.04206Z\"\r\n fill=\"#ED713C\"\r\n />\r\n </svg>\r\n)\r\n\r\nWarningIcon.defaultProps = {\r\n width: 16,\r\n height: 16,\r\n}\r\n\r\nWarningIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default WarningIcon\r\n","import PropTypes from \"prop-types\"\r\nimport React from \"react\"\r\n\r\nconst SuccessIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-label=\"success\"\r\n >\r\n <path\r\n d=\"M6.99999 0.142883C10.7871 0.142883 13.8571 3.21293 13.8571 7.00002C13.8571 10.7871 10.7871 13.8572 6.99999 13.8572C3.2129 13.8572 0.142853 10.7871 0.142853 7.00002C0.142853 3.21293 3.2129 0.142883 6.99999 0.142883ZM6.99999 1.28574C3.84408 1.28574 1.28571 3.84411 1.28571 7.00002C1.28571 10.1559 3.84408 12.7143 6.99999 12.7143C10.1559 12.7143 12.7143 10.1559 12.7143 7.00002C12.7143 3.84411 10.1559 1.28574 6.99999 1.28574ZM9.45142 4.88003C9.67458 4.65687 10.0397 4.65687 10.2629 4.88003C10.486 5.10318 10.486 5.4683 10.2629 5.69145L6.2612 9.6898C6.03804 9.91296 5.67623 9.91296 5.45308 9.6898L3.45308 7.6898C3.22992 7.46664 3.22992 7.10484 3.45308 6.88168C3.67623 6.65852 4.03804 6.65852 4.2612 6.88168L5.85714 8.47762L9.45142 4.88003Z\"\r\n fill=\"#27AE60\"\r\n />\r\n </svg>\r\n)\r\n\r\nSuccessIcon.defaultProps = {\r\n width: 16,\r\n height: 16,\r\n}\r\n\r\nSuccessIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default SuccessIcon\r\n","import React from \"react\"\r\nimport ErrorIcon from \"../../icons/ErrorIcon\"\r\nimport WarningIcon from \"../../icons/WarningIcon\"\r\nimport SuccessIcon from \"../../icons/SuccessIcon\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst messageVariants = {\r\n error: {\r\n background: theme.palette.red.five,\r\n color: theme.palette.red.fiftyP,\r\n icon: <ErrorIcon />,\r\n },\r\n warning: {\r\n background: theme.palette.purple.ten,\r\n color: theme.palette.purple.seventy,\r\n icon: <WarningIcon />,\r\n },\r\n success: {\r\n background: theme.palette.green.five,\r\n color: theme.palette.green.fiftyP,\r\n icon: <SuccessIcon />,\r\n },\r\n}\r\n\r\nexport default messageVariants\r\n","import React, { useEffect, useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport Caption from \"../Caption\"\nimport messageVariants from \"./variants\"\n\nfunction InputMessage(props) {\n const { msg, variant, className, ...otherProps } = props\n const messageRef = useRef(null)\n const [messageRefHeight, setMessageRefHeight] = useState(32)\n\n useEffect(() => {\n setMessageRefHeight(messageRef?.current?.clientHeight)\n }, [messageRef?.current?.clientHeight])\n\n return (\n <StyledMessage\n ref={messageRef}\n variant={messageVariants[variant]}\n className={classNames(\n \"KUI-InputMessage\",\n `KUI-InputMessage_${variant}`,\n className\n )}\n style={{ bottom: `-${messageRefHeight}px` }}\n {...otherProps}\n >\n <StyledIconWrapper className=\"KUI-InputMessage_icon\">\n {messageVariants[variant].icon}\n </StyledIconWrapper>\n <StyledTitle className=\"KUI-InputMessage_title\" size=\"xs\" weight={600}>\n {msg}\n </StyledTitle>\n </StyledMessage>\n )\n}\n\nInputMessage.defaultProps = {\n msg: \"\",\n className: \"\",\n variant: \"error\",\n}\n\nInputMessage.propTypes = {\n msg: PropTypes.string,\n className: PropTypes.string,\n variant: PropTypes.oneOf([\"error\", \"warning\", \"success\"]),\n}\n\nexport default InputMessage\n\nconst StyledTitle = styled(Caption)`\n padding-left: 8px;\n`\n\nconst messageVariantCSS = ({ variant }) => css`\n background-color: ${variant.background};\n svg {\n path {\n fill: ${variant.color};\n }\n }\n .KUI-InputMessage_title {\n color: ${variant.color};\n }\n`\n\nconst StyledMessage = styled.div`\n z-index: 2;\n position: absolute;\n left: 0px;\n bottom: 0;\n padding: 8px 15px;\n width: 100%;\n box-sizing: border-box;\n border-radius: 0 0 8px 8px;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n box-shadow: 0px 0px 1px rgba(10, 31, 68, 0.08),\n 0px 3px 4px rgba(10, 31, 68, 0.1);\n ${messageVariantCSS};\n`\n\nconst StyledIconWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`\n","import React from \"react\"\r\n\r\nconst TextareaGrabIcon = (props) => (\r\n <svg\r\n width=\"9\"\r\n height=\"8\"\r\n viewBox=\"0 0 9 8\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M0.21967 7.80474C0.512563 8.06509 0.987437 8.06509 1.28033 7.80474L8.78033 1.13807C9.07322 0.877722 9.07322 0.455612 8.78033 0.195262C8.48744 -0.0650874 8.01256 -0.0650874 7.71967 0.195262L0.21967 6.86193C-0.0732233 7.12228 -0.0732233 7.54439 0.21967 7.80474ZM3.96957 7.80441C4.26246 8.06476 4.73734 8.06476 5.03023 7.80441L8.78021 4.47108C9.0731 4.21073 9.0731 3.78862 8.78021 3.52827C8.48732 3.26792 8.01245 3.26792 7.71956 3.52827L3.96957 6.8616C3.67668 7.12195 3.67668 7.54406 3.96957 7.80441Z\"\r\n fill=\"#EAECEF\"\r\n />\r\n </svg>\r\n)\r\n\r\nexport default TextareaGrabIcon\r\n","import React from \"react\"\n\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n ref(value)\n } else if (ref) {\n ref.current = value\n }\n}\n\nfunction useForkRef(...refs) {\n return React.useMemo(() => {\n if (refs.every((ref) => ref == null)) {\n return null\n }\n\n return (instance) => {\n refs.forEach((ref) => {\n setRef(ref, instance)\n })\n }\n }, refs)\n}\n\nexport default useForkRef\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport Caption from \"../Caption\"\nimport InputMessage from \"../InputMessage\"\nimport TextareaGrabIcon from \"../../icons/TextareaGrabIcon\"\nimport { theme } from \"../../theme\"\nimport useForkRef from \"../../utils/useForkRef\"\n\nconst { palette } = theme\n\nconst Input = forwardRef((props, ref) => {\n const {\n isTextArea,\n inputRef: inputRefProp,\n className,\n inputStyles,\n labelStyles,\n label,\n startIcon,\n endIcon,\n messageClassName,\n labelInlineStyles,\n message,\n messageVariant,\n value,\n type,\n rows,\n placeholder,\n ...inputProps\n } = props\n const [isFilled, setIsFilled] = useState(false)\n const inputRef = useRef(null)\n const isInvalid = !!message && messageVariant !== \"success\"\n\n const forwardedRef = useForkRef(inputRef, ref, inputRefProp)\n\n const autoHeight = () => {\n if (isTextArea) {\n const target = inputRef.current\n if (target.scrollHeight > target.clientHeight) {\n target.style.height = \"5px\"\n target.style.height = `${target.scrollHeight}px`\n }\n }\n }\n\n useEffect(() => {\n if (inputRef.current?.value) setIsFilled(true)\n else setIsFilled(false)\n }, [inputRef])\n\n useEffect(() => {\n if (value || typeof value === \"number\") setIsFilled(true)\n else setIsFilled(false)\n autoHeight()\n }, [value])\n\n const handleChange = (e) => {\n const currentValue = e.target.value\n if (currentValue && String(currentValue).replace(/_/g, \"\")) {\n setIsFilled(true)\n } else {\n setIsFilled(false)\n }\n if (inputProps.onInput) {\n inputProps.onInput(e)\n }\n\n autoHeight()\n }\n\n const commonProps = {\n ref: forwardedRef,\n value,\n onInput: handleChange,\n withMessage: !!message,\n messageVariant: messageVariant || \"error\",\n withLabel: !!label,\n placeholder,\n ...inputProps,\n }\n\n return (\n <StyledContainer\n className={classNames(\n \"KUI-Input_container\",\n !isTextArea && \"KUI-Input_InputContainer\",\n className\n )}\n >\n {startIcon && startIcon}\n {isTextArea ? (\n <StyledTextarea\n rows={rows}\n className={classNames(\n \"KUI-Input\",\n \"KUI-Textarea\",\n inputStyles,\n isInvalid && \"KUI-Input_invalid\"\n )}\n {...commonProps}\n />\n ) : (\n <StyledInput\n type={type}\n className={classNames(\n \"KUI-Input\",\n inputStyles,\n isInvalid && \"KUI-Input_invalid\"\n )}\n {...commonProps}\n />\n )}\n <StyledInputLabel\n size=\"s\"\n color=\"fiftyP\"\n active={isFilled || placeholder}\n className={classNames(\n \"KUI-Input_label\",\n (isFilled || placeholder) && \"KUI-Input_label-active\",\n labelStyles\n )}\n style={labelInlineStyles}\n >\n {label}\n </StyledInputLabel>\n {isTextArea && <StyledTextareaIcon className=\"KUI-Textarea_icon\" />}\n {endIcon && endIcon}\n {!!message && (\n <InputMessage\n variant={messageVariant || \"error\"}\n msg={message}\n className={messageClassName}\n />\n )}\n </StyledContainer>\n )\n})\n\nInput.defaultProps = {\n disabled: false,\n isTextArea: false,\n label: \"\",\n rows: 3,\n type: \"text\",\n}\n\nInput.propTypes = {\n disabled: PropTypes.bool,\n isTextArea: PropTypes.bool,\n label: PropTypes.string,\n message: PropTypes.string,\n rows: PropTypes.number,\n type: PropTypes.oneOf([\n \"text\",\n \"number\",\n \"password\",\n \"phone\",\n \"email\",\n \"phone\",\n ]),\n}\n\nInput.displayName = \"Input\"\n\nexport default Input\n\nconst StyledContainer = styled.div`\n position: relative;\n &.KUI-Input_InputContainer {\n height: 56px;\n }\n`\n\nconst StyledTextareaIcon = styled(TextareaGrabIcon)`\n display: block;\n width: 9px;\n height: 8px;\n position: absolute;\n right: 4px;\n bottom: 8px;\n pointer-events: none;\n cursor: none;\n`\n\nconst labelActiveCSS = css`\n font-size: 12px;\n top: 6px;\n & + div.KUI-InputAdornment_corner-label p {\n opacity: 1;\n }\n`\n\nconst StyledInputLabel = styled(Caption)`\n transition: top ease-out 0.2s, font-size ease-out 0.2s;\n user-select: none;\n pointer-events: none;\n position: absolute;\n top: 19px;\n left: 16px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(100% - 30px);\n ${({ active }) => active && labelActiveCSS};\n`\n\nconst inputStates = {\n error: palette.red.fiftyP,\n warning: palette.purple.seventy,\n success: palette.green.fiftyP,\n}\n\nconst inputStateCSS = (messageVariant) => css`\n border-radius: 8px 8px 0px 0px;\n border-color: ${inputStates[messageVariant]} !important;\n color: ${inputStates[messageVariant]};\n`\n\nconst inputCSS = ({ withMessage, messageVariant, withLabel }) => css`\n box-sizing: border-box;\n border: 1.5px solid ${palette.grey.fifteenB};\n border-radius: 8px;\n background-color: ${palette.grey.zero};\n caret-color: ${palette.brand.main};\n color: ${palette.grey.seventy};\n font-weight: 500;\n padding: ${withLabel ? \"27px 8px 6px 17px\" : \"16px 8px 12px 17px\"};\n font-family: \"Inter\", sans-serif;\n -moz-appearance: textfield;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n &:-webkit-autofill {\n box-shadow: inset 0 0 0 1000px #fff;\n }\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n }\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n &:focus {\n outline: none;\n border-color: ${palette.brand.main};\n & + .KUI-Input_label {\n ${labelActiveCSS}\n }\n }\n ${withMessage && inputStateCSS(messageVariant)};\n &:disabled {\n background-color: ${palette.background.light1};\n }\n`\n\nconst StyledInput = styled.input`\n height: 64px;\n font-size: 16px;\n transform: scale(calc(14 / 16));\n transform-origin: left top;\n width: calc(100% * (16 / 14));\n margin-right: -14%;\n ${inputCSS};\n`\n\nconst StyledTextarea = styled.textarea`\n resize: vertical;\n max-height: 168px;\n min-height: 64px;\n height: auto;\n width: 100%;\n font-size: 14px;\n ::-webkit-scrollbar {\n width: 0;\n }\n ::-webkit-resizer,\n ::-webkit-scrollbar-button,\n ::-webkit-scrollbar-corner {\n display: none;\n }\n ${inputCSS};\n`\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\nimport classNames from \"classnames\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport Input from \"../Input\"\nimport Caption from \"../Caption\"\n\nconst getLabelWidth = (startIconWidth, endIconWidth) => {\n if (startIconWidth && endIconWidth) return startIconWidth + endIconWidth + 34\n if (startIconWidth) return startIconWidth + 30\n if (endIconWidth) return endIconWidth + 34\n return 30\n}\n\nconst InputWithAdornments = forwardRef((props, ref) => {\n const { cornerLabel, startIcon, endIcon, ...inputProps } = props\n\n const startIconRef = useRef(null)\n const endIconRef = useRef(null)\n const [startIconWidth, setStartIconWidth] = useState(0)\n const [endIconWidth, setEndIconWidth] = useState(0)\n const labelWidth = getLabelWidth(startIconWidth, endIconWidth)\n\n const inputStyle = {\n paddingLeft: startIconWidth > 0 ? (startIconWidth + 20) * (16 / 14) : 16,\n paddingRight: endIconWidth > 0 ? endIconWidth + 24 : 8,\n }\n\n const labelStyle = {\n left: startIconWidth > 0 ? startIconWidth + 22 : 16,\n maxWidth: `calc(100% - ${labelWidth}px)`,\n }\n\n useEffect(() => {\n setStartIconWidth(startIconRef?.current?.clientWidth)\n }, [startIconRef?.current?.clientWidth])\n\n useEffect(() => {\n setEndIconWidth(endIconRef?.current?.clientWidth)\n }, [endIconRef?.current?.clientWidth])\n\n return (\n <Input\n ref={ref}\n startIcon={\n startIcon && (\n <StyledStartIcon\n ref={startIconRef}\n className=\"KUI-InputAdornment_start-icon\"\n >\n {startIcon}\n </StyledStartIcon>\n )\n }\n endIcon={\n (endIcon || cornerLabel) && (\n <StyledEndIcon\n ref={endIconRef}\n isCornerLabel={!!cornerLabel}\n className={classNames(\n \"KUI-InputAdornment_end-icon\",\n cornerLabel && \"KUI-InputAdornment_corner-label\"\n )}\n >\n {cornerLabel ? (\n <StyledCornerLabel size=\"s\" weight={500} color=\"fiftyP\">\n {cornerLabel}\n </StyledCornerLabel>\n ) : (\n endIcon\n )}\n </StyledEndIcon>\n )\n }\n style={inputStyle}\n labelInlineStyles={labelStyle}\n {...inputProps}\n />\n )\n})\n\nInputWithAdornments.defaultProps = {\n cornerLabel: null,\n startIcon: null,\n endIcon: null,\n}\n\nInputWithAdornments.propTypes = {\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n cornerLabel: PropTypes.string,\n disabled: PropTypes.bool,\n startIcon: PropTypes.element,\n endIcon: PropTypes.element,\n type: PropTypes.oneOf([\"text\", \"number\", \"password\"]),\n}\n\nInputWithAdornments.displayName = \"InputWithAdornments\"\n\nexport default InputWithAdornments\n\nconst cornerLabelCSS = css`\n align-items: flex-end;\n bottom: 12px;\n right: 12px;\n`\n\nconst StyledIcon = styled.div`\n position: absolute;\n top: 8px;\n bottom: 8px;\n display: flex;\n align-items: center;\n z-index: 1;\n`\n\nconst StyledStartIcon = styled(StyledIcon)`\n left: 8px;\n`\n\nconst StyledEndIcon = styled(StyledIcon)`\n right: 16px;\n z-index: 0;\n ${({ isCornerLabel }) => isCornerLabel && cornerLabelCSS};\n`\n\nconst StyledCornerLabel = styled(Caption)`\n transition: all ease-out 0.3s;\n opacity: 0;\n`\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\n\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\n/** Mapping between HTMLElement events and mask internal events */\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n this._handlers = {};\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts;\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n ...blockOpts\n } = normalizeOpts(this.blocks[bName]);\n const maskedBlock = createMask({\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...blockOpts,\n parent: this\n });\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) return [ch, details];\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n super({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = void 0;\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n */\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n Is positive allowed\n */\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport IMask from 'imask/esm/imask';\n\nconst MASK_PROPS = {\n // common\n mask: PropTypes.oneOfType([PropTypes.array, PropTypes.func, PropTypes.string, PropTypes.instanceOf(RegExp), PropTypes.oneOf([Date, Number, IMask.Masked]), PropTypes.instanceOf(IMask.Masked)]),\n value: PropTypes.any,\n unmask: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['typed'])]),\n prepare: PropTypes.func,\n prepareChar: PropTypes.func,\n validate: PropTypes.func,\n commit: PropTypes.func,\n overwrite: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['shift'])]),\n eager: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['append', 'remove'])]),\n skipInvalid: PropTypes.bool,\n // events\n onAccept: PropTypes.func,\n onComplete: PropTypes.func,\n // pattern\n placeholderChar: PropTypes.string,\n displayChar: PropTypes.string,\n lazy: PropTypes.bool,\n definitions: PropTypes.object,\n blocks: PropTypes.object,\n // enum\n enum: PropTypes.arrayOf(PropTypes.string),\n // range\n maxLength: PropTypes.number,\n from: PropTypes.number,\n to: PropTypes.number,\n // date\n pattern: PropTypes.string,\n format: PropTypes.func,\n parse: PropTypes.func,\n autofix: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['pad'])]),\n // number\n radix: PropTypes.string,\n thousandsSeparator: PropTypes.string,\n mapToRadix: PropTypes.arrayOf(PropTypes.string),\n scale: PropTypes.number,\n normalizeZeros: PropTypes.bool,\n padFractionalZeros: PropTypes.bool,\n min: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n max: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n // dynamic\n dispatch: PropTypes.func,\n // ref\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })])\n};\nconst MASK_PROPS_NAMES = Object.keys(MASK_PROPS).filter(p => p !== 'value');\nconst NON_MASK_OPTIONS_PROPS_NAMES = ['value', 'unmask', 'onAccept', 'onComplete', 'inputRef'];\nconst MASK_OPTIONS_PROPS_NAMES = MASK_PROPS_NAMES.filter(pName => NON_MASK_OPTIONS_PROPS_NAMES.indexOf(pName) < 0);\nfunction IMaskMixin(ComposedComponent) {\n var _class;\n const MaskedComponent = (_class = class MaskedComponent extends React.Component {\n constructor(props) {\n super(props);\n this._inputRef = this._inputRef.bind(this);\n }\n componentDidMount() {\n if (!this.props.mask) return;\n this.initMask();\n }\n componentDidUpdate() {\n const props = this.props;\n const maskOptions = this._extractMaskOptionsFromProps(props);\n if (maskOptions.mask) {\n if (this.maskRef) {\n this.maskRef.updateOptions(maskOptions); // TODO fix\n if ('value' in props && props.value !== undefined) this.maskValue = props.value;\n } else {\n this.initMask(maskOptions);\n }\n } else {\n this.destroyMask();\n if ('value' in props && props.value !== undefined) {\n var _this$element;\n if ((_this$element = this.element) != null && _this$element.isContentEditable && this.element.tagName !== 'INPUT' && this.element.tagName !== 'TEXTAREA') this.element.textContent = props.value;else this.element.value = props.value;\n }\n }\n }\n componentWillUnmount() {\n this.destroyMask();\n }\n _inputRef(el) {\n this.element = el;\n if (this.props.inputRef) {\n if (Object.prototype.hasOwnProperty.call(this.props.inputRef, 'current')) this.props.inputRef.current = el;else this.props.inputRef(el);\n }\n }\n initMask(maskOptions) {\n if (maskOptions === void 0) {\n maskOptions = this._extractMaskOptionsFromProps(this.props);\n }\n this.maskRef = IMask(this.element, maskOptions).on('accept', this._onAccept.bind(this)).on('complete', this._onComplete.bind(this));\n if ('value' in this.props && this.props.value !== undefined) this.maskValue = this.props.value;\n }\n destroyMask() {\n if (this.maskRef) {\n this.maskRef.destroy();\n delete this.maskRef;\n }\n }\n _extractMaskOptionsFromProps(props) {\n const {\n ...cloneProps\n } = props;\n\n // keep only mask options\n Object.keys(cloneProps).filter(prop => MASK_OPTIONS_PROPS_NAMES.indexOf(prop) < 0).forEach(nonMaskProp => {\n delete cloneProps[nonMaskProp];\n });\n return cloneProps;\n }\n _extractNonMaskProps(props) {\n const {\n ...cloneProps\n } = props;\n MASK_PROPS_NAMES.forEach(maskProp => {\n delete cloneProps[maskProp];\n });\n if (!('defaultValue' in cloneProps)) cloneProps.defaultValue = props.mask ? '' : cloneProps.value;\n delete cloneProps.value;\n return cloneProps;\n }\n get maskValue() {\n if (!this.maskRef) return '';\n if (this.props.unmask === 'typed') return this.maskRef.typedValue;\n if (this.props.unmask) return this.maskRef.unmaskedValue;\n return this.maskRef.value;\n }\n set maskValue(value) {\n if (!this.maskRef) return;\n value = value == null && this.props.unmask !== 'typed' ? '' : value;\n if (this.props.unmask === 'typed') this.maskRef.typedValue = value;else if (this.props.unmask) this.maskRef.unmaskedValue = value;else this.maskRef.value = value;\n }\n _onAccept(e) {\n if (this.props.onAccept && this.maskRef) this.props.onAccept(this.maskValue, this.maskRef, e);\n }\n _onComplete(e) {\n if (this.props.onComplete && this.maskRef) this.props.onComplete(this.maskValue, this.maskRef, e);\n }\n render() {\n return React.createElement(ComposedComponent, {\n ...this._extractNonMaskProps(this.props),\n inputRef: this._inputRef\n });\n }\n }, _class.displayName = void 0, _class.propTypes = void 0, _class);\n const nestedComponentName = ComposedComponent.displayName || ComposedComponent.name || 'Component';\n MaskedComponent.displayName = \"IMask(\" + nestedComponentName + \")\";\n MaskedComponent.propTypes = MASK_PROPS;\n return React.forwardRef((props, ref) => React.createElement(MaskedComponent, {\n ...props,\n ref\n }));\n}\n\nexport { IMaskMixin as default };\n","import React from 'react';\nimport IMaskMixin from './mixin.js';\nimport 'prop-types';\nimport 'imask/esm/imask';\n\nconst IMaskInputClass = IMaskMixin(_ref => {\n let {\n inputRef,\n ...props\n } = _ref;\n return React.createElement('input', {\n ...props,\n ref: inputRef\n });\n});\nconst IMaskInputFn = (props, ref) => React.createElement(IMaskInputClass, {\n ...props,\n ref\n}) // TODO fix no idea\n;\n\nconst IMaskInput = React.forwardRef(IMaskInputFn);\n\nexport { IMaskInput as default };\n","import React, { forwardRef, useRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { IMaskMixin } from \"react-imask\"\nimport InputWithAdornments from \"../InputWithAdornments\"\n\nconst MaskedField = IMaskMixin(({ defaultValue, ...props }) => (\n <InputWithAdornments value={defaultValue} {...props} />\n))\n\nconst InputWithMask = forwardRef((props, inputRef) => {\n const {\n onChange,\n onFocus,\n onBlur,\n value: defaultValue,\n mask,\n ...other\n } = props\n const ref = useRef()\n const formattedValue =\n mask === Number\n ? defaultValue?.toString().replace(/\\./g, \",\")\n : defaultValue\n\n const handleChange = (value) => {\n if (onChange) {\n onChange({ target: { name: other.name, value }, type: \"change\" })\n }\n }\n\n const handleFocus = (e) => {\n ref.current?.maskRef?.updateOptions({ lazy: false })\n if (onFocus) onFocus(e)\n }\n\n const handleBlur = (e) => {\n if (!ref.current?.maskRef.unmaskedValue) {\n ref.current?.maskRef?.updateOptions({ lazy: true })\n }\n if (onBlur) onBlur(e)\n }\n\n return (\n <MaskedField\n {...other}\n mask={mask}\n inputRef={inputRef}\n ref={ref}\n onAccept={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n defaultValue={formattedValue}\n />\n )\n})\n\nInputWithMask.displayName = \"InputWithMask\"\n\nInputWithMask.propTypes = {\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n cornerLabel: PropTypes.string,\n disabled: PropTypes.bool,\n startIcon: PropTypes.element,\n endIcon: PropTypes.element,\n mask: PropTypes.string,\n}\n\nexport default InputWithMask\n","import React, { useMemo } from \"react\"\nimport styled from \"@emotion/styled\"\nimport { theme } from \"../../../../theme\"\n\nconst { palette } = theme\n\nfunction CountryItem({ item, selectCountryIndex }) {\n const countryIcon = useMemo(\n () =>\n item.nameCode\n .toUpperCase()\n .replace(/./g, (char) =>\n String.fromCodePoint(char.charCodeAt(0) + 127397)\n ),\n [item.nameCode]\n )\n\n const handleClick = () => {\n selectCountryIndex(item)\n }\n\n return (\n <StyledCountry className=\"KUI-Country\" onClick={handleClick}>\n <StyledTitle className=\"KUI-Country_title\">\n <StyledIcon className=\"KUI-Country_icon\">{countryIcon}</StyledIcon>\n <StyledCountryName className=\"KUI-Country_name\">\n {item.nameRus}\n </StyledCountryName>\n </StyledTitle>\n <div>\n <StyledCountryPhone className=\"KUI-Country_phone\">\n +{item.phoneCode}\n </StyledCountryPhone>\n </div>\n </StyledCountry>\n )\n}\n\nexport default CountryItem\n\nconst StyledCountry = styled.div`\n border-radius: 12px;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 11px;\n cursor: pointer;\n box-sizing: border-box;\n &:hover {\n background-color: ${palette.background.light2};\n }\n`\n\nconst StyledTitle = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst StyledIcon = styled.span`\n padding-bottom: 1px;\n width: 28px;\n`\n\nconst StyledCountryName = styled.p`\n font-family: \"Inter\", sans-serif;\n letter-spacing: normal;\n margin: 0;\n padding-top: 3px;\n font-size: 14px;\n line-height: 18px;\n font-weight: 600;\n color: ${theme.palette.grey.seventy};\n`\n\nconst StyledCountryPhone = styled.p`\n font-family: \"Inter\", sans-serif;\n letter-spacing: normal;\n margin: 0;\n font-size: 12px;\n line-height: 14px;\n font-weight: 500;\n color: ${palette.grey.fiftyP};\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst SearchIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M5.15016 0.333008C7.81034 0.333008 9.96683 2.4895 9.96683 5.14967C9.96683 6.27563 9.58049 7.31135 8.93313 8.13151L11.5009 10.699C11.7222 10.9203 11.7222 11.2791 11.5009 11.5004C11.2796 11.7217 10.9208 11.7217 10.6995 11.5004L8.132 8.93264C7.31184 9.58 6.27612 9.96634 5.15016 9.96634C2.48999 9.96634 0.333496 7.80985 0.333496 5.14967C0.333496 2.4895 2.48999 0.333008 5.15016 0.333008ZM5.15016 1.46634C3.11591 1.46634 1.46683 3.11543 1.46683 5.14967C1.46683 7.18392 3.11591 8.83301 5.15016 8.83301C7.18441 8.83301 8.8335 7.18392 8.8335 5.14967C8.8335 3.11543 7.18441 1.46634 5.15016 1.46634Z\"\r\n fill=\"#7F8285\"\r\n />\r\n </svg>\r\n)\r\n\r\nSearchIcon.defaultProps = {\r\n width: 12,\r\n height: 12,\r\n}\r\n\r\nSearchIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default SearchIcon\r\n","import React, { useEffect, useRef, useState } from \"react\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport countries from \"../../../utils/countries.json\"\nimport CountryItem from \"./CountryItem\"\nimport SearchIcon from \"../../../icons/SearchIcon\"\nimport { theme } from \"../../../theme\"\n\nconst { palette } = theme\n\nfunction Dropdown({\n isOpen,\n selectCountryIndex,\n setIsOpenDropDown,\n buttonRef,\n}) {\n const [filteredCountries, setFilteredCountries] = useState(countries)\n const dropdownRef = useRef()\n\n const closePopUp = (e) => {\n if (dropdownRef.current && buttonRef.current) {\n if (\n !dropdownRef.current.contains(e.target) &&\n !buttonRef.current.contains(e.target)\n ) {\n setIsOpenDropDown(false)\n }\n }\n }\n\n useEffect(() => {\n const inputWrapper = buttonRef?.current?.parentElement?.parentElement\n if (inputWrapper) {\n if (isOpen) {\n inputWrapper.style.zIndex = \"4\"\n } else {\n inputWrapper.style.zIndex = \"1\"\n }\n }\n }, [isOpen])\n\n useEffect(() => {\n document.addEventListener(\"click\", closePopUp)\n return () => {\n document.removeEventListener(\"click\", closePopUp)\n }\n }, [])\n\n if (!isOpen) {\n return null\n }\n\n const filterCountries = (e) => {\n const query = e.target.value\n\n if (query.length > 0) {\n setFilteredCountries(\n countries.filter(\n (item) =>\n item.nameRus.toLowerCase().indexOf(query.toLowerCase()) !== -1\n )\n )\n } else {\n setFilteredCountries(countries)\n }\n }\n\n return (\n <StyledContainer\n isOpen={isOpen}\n className={classNames(\n \"KUI-DropdownContainer\",\n isOpen && \"KUI-Dropdown_open\"\n )}\n ref={dropdownRef}\n >\n <StyledSearchWrapper className=\"KUI-SearchWrapper\">\n <StyledSearch className=\"KUI-Search\">\n <StyledSearchInput\n type=\"text\"\n placeholder=\"Поиск...\"\n onChange={filterCountries}\n className=\"KUI-SearchInput\"\n />\n <span>\n <SearchIcon />\n </span>\n </StyledSearch>\n </StyledSearchWrapper>\n <StyledDropdown className=\"KUI-Dropdown\">\n {filteredCountries.map((item, key) => (\n <CountryItem\n key={key}\n item={item}\n selectCountryIndex={selectCountryIndex}\n />\n ))}\n </StyledDropdown>\n </StyledContainer>\n )\n}\n\nexport default Dropdown\n\nconst StyledContainer = styled.div`\n width: 100%;\n max-height: 283px;\n display: ${({ isOpen }) => (isOpen ? \"block\" : \"none\")};\n position: absolute;\n background-color: ${palette.grey.zero};\n z-index: 3;\n top: 50px;\n box-shadow: ${theme.shadows.shadow3};\n border-radius: 0 0 8px 8px;\n user-select: none;\n padding: 5px 8px 8px;\n box-sizing: border-box;\n`\n\nconst StyledSearchWrapper = styled.div`\n padding: 8px 0;\n position: sticky;\n top: 0;\n background-color: ${palette.grey.zero};\n border-radius: 8px;\n`\n\nconst StyledSearch = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: 40px;\n background-color: ${palette.background.light2};\n padding: 0 12px;\n border-radius: 8px;\n`\n\nconst StyledSearchInput = styled.input`\n border: none;\n width: calc(100% - 18px);\n background-color: transparent;\n height: 100%;\n outline: none;\n`\n\nconst StyledDropdown = styled.div`\n width: 100%;\n max-height: 219px;\n padding: 0 8px 0 0;\n box-sizing: border-box;\n overflow: auto;\n -ms-overflow-style: none;\n scrollbar-width: none;\n overflow-y: scroll;\n overflow-x: hidden;\n user-select: none;\n ::-webkit-scrollbar {\n width: 4px;\n position: absolute;\n right: 8px;\n }\n ::-webkit-scrollbar-track,\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n transition: all ease-out 0.3s;\n }\n\n ::-webkit-resizer,\n ::-webkit-scrollbar-button,\n ::-webkit-scrollbar-corner {\n display: none;\n }\n ::-webkit-scrollbar-track {\n background: ${theme.palette.grey.fifteenB};\n }\n\n ::-webkit-scrollbar-thumb {\n background: ${theme.palette.grey.thirty};\n }\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst HalfArrowIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n clipRule=\"evenodd\"\r\n d=\"M6.86193 0.195262L4 3.05719L1.13807 0.195262C0.877722 -0.0650874 0.455612 -0.0650874 0.195262 0.195262C-0.0650874 0.455612 -0.0650874 0.877722 0.195262 1.13807L3.5286 4.4714C3.78895 4.73175 4.21105 4.73175 4.4714 4.4714L7.80474 1.13807C8.06509 0.877722 8.06509 0.455612 7.80474 0.195262C7.54439 -0.0650874 7.12228 -0.0650874 6.86193 0.195262Z\"\r\n fill=\"#8A94A6\"\r\n />\r\n </svg>\r\n)\r\n\r\nHalfArrowIcon.defaultProps = {\r\n width: 8,\r\n height: 5,\r\n}\r\n\r\nHalfArrowIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default HalfArrowIcon\r\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport InputWithMask from \"../InputWithMask\"\nimport countries from \"../../utils/countries.json\"\nimport Caption from \"../Caption\"\nimport Dropdown from \"./Dropdown\"\nimport HalfArrowIcon from \"../../icons/HalfArrowIcon\"\nimport { theme } from \"../../theme\"\nimport useForkRef from \"../../utils/useForkRef\"\n\nconst { palette } = theme\n\nconst InputWithCountryDropdown = forwardRef(\n ({ onSelectCountry, hiddenInputProps, ...inputProps }, ref) => {\n const selectedCountryCode = hiddenInputProps?.value\n ? String(hiddenInputProps.value)\n : \"7\"\n const selectedCountryIndex = countries.findIndex(\n (country) => country.phoneCode === selectedCountryCode\n )\n const [selectedCountry, setSelectedCountry] = useState(\n selectedCountryIndex < 0 ? 168 : selectedCountryIndex\n )\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n const buttonRef = useRef()\n const inputRef = useRef()\n\n const selectCountryIndex = (item) => {\n setSelectedCountry(\n countries.reduce(\n (acc, country, index) => (country.name === item.name ? index : acc),\n 0\n )\n )\n setIsDropdownOpen(false)\n if (onSelectCountry) {\n onSelectCountry(item)\n }\n }\n\n const handleClick = () => {\n setIsDropdownOpen(!isDropdownOpen)\n }\n\n useEffect(() => {\n if (isDropdownOpen && inputRef.current) {\n inputRef.current.focus()\n }\n }, [isDropdownOpen])\n\n const forwardedRef = useForkRef(ref, inputRef)\n\n return (\n <StyledDropdownWrapper className=\"KUI-InputDropdown_wrapper\">\n <StyledInput\n ref={forwardedRef}\n label=\"Номер телефона\"\n mask={countries[selectedCountry].mask}\n isDropdownOpen={isDropdownOpen}\n startIcon={\n <StyledPhoneCodeButton\n type=\"button\"\n className=\"KUI-InputDropdown_button-phone-code\"\n onClick={handleClick}\n ref={buttonRef}\n >\n <Caption size=\"s\" weight={500}>\n +{countries[selectedCountry].phoneCode}\n </Caption>\n <StyledPhoneCodeIcon isReverse={isDropdownOpen}>\n <HalfArrowIcon />\n </StyledPhoneCodeIcon>\n </StyledPhoneCodeButton>\n }\n {...inputProps}\n />\n <Dropdown\n isOpen={isDropdownOpen}\n selectCountryIndex={selectCountryIndex}\n setIsOpenDropDown={setIsDropdownOpen}\n buttonRef={buttonRef}\n />\n <input\n style={{ display: \"none\" }}\n readOnly\n aria-label=\"phone_code\"\n {...hiddenInputProps}\n value={countries[selectedCountry].phoneCode}\n />\n </StyledDropdownWrapper>\n )\n }\n)\n\nInputWithCountryDropdown.displayName = \"InputWithCountryDropdown\"\n\nInputWithCountryDropdown.propTypes = {\n label: PropTypes.string,\n errorMessage: PropTypes.string,\n disabled: PropTypes.bool,\n}\n\nexport default InputWithCountryDropdown\n\nconst StyledDropdownWrapper = styled.div`\n position: relative;\n`\n\nconst StyledPhoneCodeButton = styled.button`\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 80px;\n height: 40px;\n box-sizing: border-box;\n background: ${palette.background.light2};\n border-radius: 8px;\n border: none;\n margin: 0;\n box-shadow: none;\n cursor: pointer;\n padding: 8px 14px 8px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n user-select: none;\n`\n\nconst StyledPhoneCodeIcon = styled.span`\n display: flex;\n justify-content: center;\n align-items: center;\n svg {\n transition: all linear 0.2s;\n transform: ${({ isReverse }) => (isReverse ? \"rotate(180deg)\" : \"none\")};\n }\n`\n\nconst StyledInput = styled(InputWithMask)`\n .KUI-InputMessage {\n opacity: ${({ isDropdownOpen }) => (isDropdownOpen ? 0 : 1)};\n }\n`\n","import React, { forwardRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport { theme } from \"../../theme\"\n\nconst palette = theme.palette\n\nconst Checkbox = forwardRef((props, ref) => {\n const { className, label, error, inputRef, ...checkboxProps } = props\n\n return (\n <StyledLabel className={classNames(\"KUI-Checkbox_label\", className)}>\n <StyledCheckbox\n ref={inputRef}\n type=\"checkbox\"\n className=\"KUI-Checkbox\"\n {...checkboxProps}\n />\n <StyledCustomCheckbox\n error={!!error}\n className={classNames(\n \"KUI-Checkbox_custom\",\n !!error && \"KUI-Checkbox_error\"\n )}\n />\n {!!label && (\n <StyledCheckboxLabel className=\"KUI-Label_checkbox\">\n {label}\n </StyledCheckboxLabel>\n )}\n </StyledLabel>\n )\n})\n\nCheckbox.defaultProps = {\n label: \"\",\n}\n\nCheckbox.propTypes = {\n label: PropTypes.any,\n error: PropTypes.bool,\n disabled: PropTypes.bool,\n}\n\nCheckbox.displayName = \"Checkbox\"\n\nexport default Checkbox\n\nconst errorCSS = ({ error }) =>\n error &&\n css`\n border-color: ${palette.red.fiftyP};\n `\n\nconst StyledCustomCheckbox = styled.span`\n border-radius: 6px;\n padding: 1px;\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 1px solid ${palette.grey.fifteenB};\n transition: all linear 0.3s;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n ${errorCSS};\n &:before {\n content: \"\";\n display: block;\n width: 16px;\n height: 16px;\n border-radius: 4px;\n background-color: ${palette.grey.zero};\n transition: all linear 0.2s;\n }\n`\n\nconst StyledCheckbox = styled.input`\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n width: 16px;\n height: 16px;\n cursor: pointer;\n &:checked + .KUI-Checkbox_custom:before {\n background-color: ${palette.brand.main};\n background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"%3E%3Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z\" fill=\"%23fff\"/%3E%3C/svg%3E');\n }\n &:disabled + .KUI-Checkbox_custom {\n background-color: ${palette.background.light2};\n border-color: ${palette.background.light2};\n &:before {\n background-color: ${palette.background.light2};\n }\n }\n &:disabled:checked + .KUI-Checkbox_custom:before {\n background-color: ${palette.grey.fifteenB};\n }\n`\n\nconst StyledLabel = styled.label`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n &:hover {\n .KUI-Checkbox:not(:disabled):not(:checked) + .KUI-Checkbox_custom {\n border-color: ${palette.brand.main};\n }\n .KUI-Checkbox:not(:disabled):checked + .KUI-Checkbox_custom {\n border-color: ${palette.brand.light};\n }\n }\n`\n\nconst StyledCheckboxLabel = styled.span`\n margin-left: 10px;\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst CloseIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox=\"0 0 26 26\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.93909 6.93909C7.27382 6.60435 7.81654 6.60435 8.15127 6.93909L13 11.7878L17.8487 6.93909C18.1835 6.60435 18.7262 6.60435 19.0609 6.93909C19.3957 7.27382 19.3957 7.81653 19.0609 8.15127L14.2122 13L19.0609 17.8487C19.3957 18.1835 19.3957 18.7262 19.0609 19.0609C18.7262 19.3956 18.1835 19.3956 17.8487 19.0609L13 14.2122L8.15127 19.0609C7.81654 19.3956 7.27382 19.3956 6.93909 19.0609C6.60435 18.7262 6.60435 18.1835 6.93909 17.8487L11.7878 13L6.93909 8.15127C6.60435 7.81653 6.60435 7.27382 6.93909 6.93909Z\"\r\n fill=\"#7F8285\"\r\n />\r\n </svg>\r\n)\r\n\r\nCloseIcon.defaultProps = {\r\n width: 26,\r\n height: 26,\r\n}\r\n\r\nCloseIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default CloseIcon\r\n","import React, { useEffect, useRef } from \"react\"\nimport classNames from \"classnames\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport { css, Global } from \"@emotion/react\"\nimport { createPortal } from \"react-dom\"\nimport Heading from \"../Heading\"\nimport CloseIcon from \"../../icons/CloseIcon\"\nimport { theme } from \"../../theme\"\nimport Caption from \"../Caption\"\nimport Button from \"../Button\"\n\nconst { breakpoints, palette } = theme\n\nfunction Modal(props) {\n const {\n isOpen,\n handleClose,\n isScrollable,\n title,\n description,\n children,\n isHasHeader,\n className,\n size,\n icon,\n ...otherProps\n } = props\n const modalRef = useRef(null)\n const modalBaseRef = useRef(null)\n\n useEffect(() => {\n if (isOpen) {\n document.body.classList.add(\"KUI-Modal_body\")\n } else {\n document.body.classList.remove(\"KUI-Modal_body\")\n }\n }, [isOpen])\n\n useEffect(\n () => () => {\n document.body.classList.remove(\"KUI-Modal_body\")\n },\n []\n )\n\n const closeModal = (e) => {\n if (\n modalBaseRef.current &&\n modalRef.current &&\n modalBaseRef.current.contains(e.target) &&\n !modalRef.current.contains(e.target)\n ) {\n handleClose()\n }\n }\n\n if (!isOpen) {\n return null\n }\n\n return createPortal(\n <StyledContainer\n className=\"KUI-Modal_container\"\n onClick={closeModal}\n ref={modalBaseRef}\n {...otherProps}\n >\n <Global\n styles={css`\n .KUI-Modal_body {\n overflow: hidden;\n padding-right: 17px;\n }\n `}\n />\n <StyledModal\n ref={modalRef}\n isOpen={isOpen}\n size={size}\n className={classNames(\n \"KUI-Modal\",\n isOpen && \"KUI-Modal_open\",\n isScrollable && \"KUI-Modal_scrollable\",\n className\n )}\n >\n <StyledHeaderWrapper className=\"KUI-Modal_header\">\n {title && (\n <StyledModalTitle className=\"KUI-Modal_title\">\n {title}\n </StyledModalTitle>\n )}\n {description && (\n <StyledDescriptionWrapper className=\"KUI-Modal_description\">\n <StyledDescription size=\"s\" color=\"fiftyP\">\n {description}\n </StyledDescription>\n </StyledDescriptionWrapper>\n )}\n <StyledHeadingIconsWrapper>\n <div>{icon}</div>\n <Button\n className=\"KUI-Modal_close-button\"\n isCircle\n size=\"xxs\"\n variant=\"transparent\"\n onClick={handleClose}\n >\n <CloseIcon />\n </Button>\n </StyledHeadingIconsWrapper>\n </StyledHeaderWrapper>\n {children}\n </StyledModal>\n </StyledContainer>,\n document.body\n )\n}\n\nModal.defaultProps = {\n isOpen: false,\n handleClose: null,\n title: \"\",\n size: \"small\",\n}\n\nModal.propTypes = {\n isOpen: PropTypes.bool,\n handleClose: PropTypes.func,\n title: PropTypes.string,\n size: PropTypes.oneOf([\"small\", \"large\"]),\n}\n\nexport default Modal\n\nconst StyledContainer = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n z-index: 1500;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: all linear 0.2s;\n`\n\nconst StyledModal = styled.div`\n border-radius: 12px;\n overflow: visible;\n overflow-y: visible;\n box-shadow: 0px 11px 15px -7px rgb(0 0 0 / 20%),\n 0px 24px 38px 3px rgb(0 0 0 / 14%), 0px 9px 46px 8px rgb(0 0 0 / 12%);\n -ms-overflow-style: none;\n scrollbar-width: none;\n background-color: ${palette.grey.zero};\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n max-height: 720px;\n width: ${({ size }) => (size === \"small\" ? 480 : 720)}px;\n display: ${({ isOpen }) => (isOpen ? \"block\" : \"none\")};\n &::-webkit-scrollbar {\n width: 0;\n }\n @media (max-width: 720px) {\n max-height: 90vh;\n }\n @media (max-width: ${breakpoints.xs}px) {\n position: absolute;\n bottom: 0;\n width: 100vw;\n border-radius: 12px 12px 0 0;\n }\n &.KUI-Modal_scrollable {\n overflow: auto;\n overflow-y: auto;\n }\n`\n\nconst StyledHeaderWrapper = styled.div`\n top: 0;\n width: 100%;\n background: ${theme.palette.grey.zero};\n z-index: 5;\n border-radius: 12px 12px 0 0;\n position: sticky;\n box-sizing: border-box;\n text-align: center;\n @media (max-width: 600px) {\n padding: 0 16px;\n }\n`\n\nconst StyledModalTitle = styled(Heading)`\n font-weight: 700;\n padding: 36px 40px 8px;\n @media (max-width: 661px) {\n padding: 40px 24px 13px;\n font-size: 18px;\n line-height: 24px;\n }\n`\n\nconst StyledDescriptionWrapper = styled.div`\n padding: 0 40px;\n @media (max-width: 900px) {\n padding: 0 24px;\n }\n`\n\nconst StyledDescription = styled(Caption)`\n @media (max-width: 600px) {\n font-size: 13px;\n line-height: 20px;\n }\n`\n\nconst StyledHeadingIconsWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n cursor: pointer;\n padding: 16px;\n z-index: 5;\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-sizing: border-box;\n`\n","const switchVariants = {\n s: {\n width: 40,\n height: 22,\n before: 14,\n },\n m: {\n width: 36,\n height: 24,\n before: 16,\n },\n l: {\n width: 56,\n height: 34,\n before: 26,\n },\n}\n\nexport default switchVariants\n","import React, { forwardRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport classNames from \"classnames\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport { theme } from \"../../theme\"\nimport switchVariants from \"./variants\"\nimport useForkRef from \"../../utils/useForkRef\"\n\nconst { palette } = theme\n\nconst Switch = forwardRef((props, ref) => {\n const { size, className, label, error, inputRef, ...switchProps } = props\n const forwardedRef = useForkRef(inputRef, ref)\n\n return (\n <StyledLabel className={classNames(\"KUI-Switch_label\", className)}>\n <StyledSwitch\n variant={switchVariants[size]}\n ref={forwardedRef}\n type=\"checkbox\"\n className=\"KUI-Switch\"\n {...switchProps}\n />\n <StyledCustomSwitch\n variant={switchVariants[size]}\n error={!!error}\n className={classNames(\n \"KUI-Switch_custom\",\n !!error && \"KUI-Switch_error\"\n )}\n />\n {!!label && (\n <StyledSwitchLabel className=\"KUI-Label_switch\">\n {label}\n </StyledSwitchLabel>\n )}\n </StyledLabel>\n )\n})\n\nSwitch.defaultProps = {\n size: \"s\",\n}\n\nSwitch.propTypes = {\n label: PropTypes.string,\n size: PropTypes.oneOf([\"s\", \"m\", \"l\"]),\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n}\n\nSwitch.displayName = \"Switch\"\n\nexport default Switch\n\nconst switchVariantCSS = ({ variant }) => css`\n width: ${variant.width}px;\n height: ${variant.height}px;\n &::before {\n width: ${variant.before}px;\n }\n`\n\nconst switchErrorCSS = ({ error }) =>\n error &&\n css`\n border-color: ${palette.red.fiftyP};\n background-color: ${palette.red.five};\n `\n\nconst StyledCustomSwitch = styled.span`\n background: #c9ced6;\n border-radius: 24px;\n padding: 3px;\n box-sizing: border-box;\n border: 1px solid transparent;\n transition: all linear 0.3s;\n display: flex;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n &:before {\n content: \"\";\n background: ${palette.grey.zero};\n border-radius: 50%;\n height: 100%;\n transition: all ease-out 0.3s;\n margin-left: 0;\n }\n ${switchVariantCSS};\n ${switchErrorCSS};\n`\n\nconst StyledSwitch = styled.input`\n opacity: 0;\n position: absolute;\n z-index: -1;\n &:checked + .KUI-Switch_custom {\n background-color: ${palette.brand.main};\n &:before {\n margin-left: calc(100% - ${({ variant }) => `${variant.before}px`});\n }\n }\n &:disabled + .KUI-Switch_custom {\n background-color: ${palette.grey.zero};\n border-color: ${palette.grey.fifteenB};\n &:before {\n background-color: ${palette.grey.fifteenB};\n }\n }\n &:checked:disabled + .KUI-Switch_custom {\n background-color: ${palette.background.light1};\n }\n`\n\nconst StyledLabel = styled.label`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n`\n\nconst StyledSwitchLabel = styled.span`\n margin-left: 14px;\n`\n","import React, { forwardRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport classNames from \"classnames\"\nimport { theme } from \"../../theme\"\nimport Caption from \"../Caption\"\n\nconst { palette } = theme\n\nconst Radio = forwardRef((props, ref) => {\n const {\n label,\n value,\n inputRef,\n fullWidth,\n className,\n checked,\n isSquare,\n ...radioProps\n } = props\n\n return (\n <StyledLabel\n ref={ref}\n className={classNames(\n \"KUI-Radio_label\",\n checked && \"KUI-Radio_label-checked\",\n isSquare && \"KUI-Radio_label-square\",\n label && \"KUI-Radio_with-label\",\n fullWidth && \"KUI-Radio_label-fullwidth\",\n className\n )}\n >\n <StyledRadio\n ref={inputRef}\n value={value}\n type=\"radio\"\n className=\"KUI-Radio\"\n checked={checked}\n {...radioProps}\n />\n <StyledCustomRadio className=\"KUI-Radio_custom\" />\n {!!label && (\n <StyledRadioLabel\n size=\"s\"\n colorGroup={checked ? \"brand\" : \"grey\"}\n color={checked ? \"main\" : \"fiftyP\"}\n weight={500}\n className=\"KUI-Label_radio\"\n >\n {label}\n </StyledRadioLabel>\n )}\n </StyledLabel>\n )\n})\n\nRadio.defaultProps = {\n label: \"\",\n value: \"\",\n name: \"radio\",\n}\n\nRadio.propTypes = {\n label: PropTypes.string,\n disabled: PropTypes.bool,\n}\n\nRadio.displayName = \"Radio\"\n\nexport default Radio\n\nconst StyledCustomRadio = styled.span`\n border-radius: 50%;\n padding: 1px;\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 1px solid ${palette.grey.fifteenB};\n transition: all linear 0.3s;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n &:before {\n content: \"\";\n display: block;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: ${palette.grey.zero};\n transition: all linear 0.2s;\n }\n`\n\nconst StyledRadio = styled.input`\n opacity: 0;\n position: absolute;\n z-index: -1;\n &:checked + .KUI-Radio_custom:before {\n background-color: ${palette.brand.main};\n background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"%3E%3Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z\" fill=\"%23fff\"/%3E%3C/svg%3E');\n }\n &:disabled + .KUI-Radio_custom {\n background-color: ${palette.background.light2};\n border-color: ${palette.background.light2};\n &:before {\n background-color: ${palette.background.light2};\n }\n }\n &:disabled:checked + .KUI-Radio_custom:before {\n background-color: ${palette.grey.fifteenB};\n }\n`\n\nconst StyledLabel = styled.label`\n display: flex;\n align-items: center;\n cursor: pointer;\n border-radius: 66px;\n width: fit-content;\n &.KUI-Radio_label-checked {\n background: ${palette.brand.light};\n }\n &.KUI-Radio_label-square {\n border-radius: 12px;\n }\n &.KUI-Radio_with-label {\n padding: 6px 9px 6px 6px;\n input:checked + .KUI-Radio_custom {\n border-color: transparent;\n }\n }\n &.KUI-Radio_label-fullwidth {\n width: 100%;\n }\n &:hover {\n .KUI-Radio:not(:disabled):not(:checked) + .KUI-Radio_custom {\n border-color: ${palette.brand.main};\n }\n .KUI-Radio:not(:disabled):checked + .KUI-Radio_custom {\n border-color: ${palette.brand.light};\n }\n }\n`\n\nconst StyledRadioLabel = styled(Caption)`\n margin-left: 5px;\n`\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\n\r\nconst FileIcon = ({ width, height }) => (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox={`0 0 ${width} ${height}`}\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.10782 5.22682C6.33097 5.00366 6.69278 5.00366 6.91594 5.22682C7.13909 5.44998 7.13909 5.81179 6.91594 6.03494L4.53198 8.4189C4.20799 8.74289 4.18918 9.28829 4.53198 9.63109C4.87477 9.97388 5.42017 9.95507 5.74416 9.63109L10.1888 5.18642C11.104 4.2712 11.054 2.81907 10.1888 1.95393C9.32369 1.08879 7.87156 1.03871 6.95634 1.95393L2.51167 6.3986C1.05411 7.85616 1.08129 10.221 2.51167 11.6514C3.94205 13.0818 6.3069 13.109 7.76447 11.6514L10.1484 9.26743C10.3716 9.04427 10.7334 9.04427 10.9565 9.26743C11.1797 9.49059 11.1797 9.8524 10.9565 10.0756L8.57259 12.4595C6.6645 14.3676 3.57614 14.3321 1.70355 12.4595C-0.169037 10.5869 -0.204535 7.49856 1.70355 5.59048L6.14822 1.14581C7.52269 -0.228658 9.69748 -0.153665 10.997 1.14581C12.2964 2.44528 12.3714 4.62007 10.997 5.99454L6.55228 10.4392C5.79396 11.1975 4.5259 11.2413 3.72386 10.4392C2.92181 9.63716 2.96554 8.3691 3.72386 7.61078L6.10782 5.22682Z\"\r\n fill=\"#7F8285\"\r\n />\r\n </svg>\r\n)\r\n\r\nFileIcon.defaultProps = {\r\n width: 12,\r\n height: 14,\r\n}\r\n\r\nFileIcon.propTypes = {\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n}\r\n\r\nexport default FileIcon\r\n","import React, { forwardRef, useState } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport Text from \"../Text\"\r\nimport FileIcon from \"../../icons/FileIcon\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { palette } = theme\r\n\r\nconst InputFile = forwardRef((props, ref) => {\r\n const { className, label, name, ...inputProps } = props\r\n const [value, setValue] = useState(label)\r\n\r\n const setFileName = (e) => {\r\n if (e.target.files[0]) {\r\n setValue(e.target.files[0].name)\r\n } else {\r\n setValue(label)\r\n }\r\n\r\n if (inputProps.onInput) inputProps.onInput(e)\r\n }\r\n\r\n return (\r\n <StyledWrapper className={classNames(\"KUI-InputFile_wrapper\", className)}>\r\n <StyledLabel className=\"KUI-InputFile_label\">\r\n <StyledInput\r\n type=\"file\"\r\n className=\"KUI-InputFile\"\r\n {...inputProps}\r\n onInput={setFileName}\r\n />\r\n\r\n <StyledTitle\r\n active={value !== label}\r\n size=\"s\"\r\n className={classNames(\r\n \"KUI-InputFile_title\",\r\n value !== label && \"KUI-InputFile_value\"\r\n )}\r\n >\r\n {value}\r\n </StyledTitle>\r\n <FileIcon />\r\n </StyledLabel>\r\n </StyledWrapper>\r\n )\r\n})\r\n\r\nInputFile.displayName = \"InputFile\"\r\n\r\nInputFile.propTypes = {\r\n label: PropTypes.string,\r\n}\r\n\r\nexport default InputFile\r\n\r\nconst StyledWrapper = styled.div`\r\n background-color: ${palette.grey.zero};\r\n border: 1px solid ${palette.grey.fifteenB};\r\n height: 56px;\r\n box-sizing: border-box;\r\n border-radius: 8px;\r\n padding: 0 16px;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n`\r\n\r\nconst StyledInput = styled.input`\r\n display: none;\r\n`\r\n\r\nconst StyledLabel = styled.label`\r\n display: flex;\r\n cursor: pointer;\r\n justify-content: space-between;\r\n align-items: center;\r\n height: 100%;\r\n`\r\nconst titleActiveCSS = css`\r\n color: ${palette.grey.seventy};\r\n font-weight: 500;\r\n`\r\n\r\nconst StyledTitle = styled(Text)`\r\n color: ${palette.grey.fiftyP};\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n max-width: calc(100% - 20px);\r\n ${({ active }) => active && titleActiveCSS};\r\n`\r\n","import React from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nfunction Divider({ className }) {\r\n return <StyledDivider className={classNames(\"KUI-Divider\", className)} />\r\n}\r\n\r\nDivider.defaultProps = {\r\n className: \"\",\r\n}\r\n\r\nDivider.propTypes = {\r\n className: PropTypes.string,\r\n}\r\n\r\nexport default Divider\r\n\r\nconst StyledDivider = styled.hr`\r\n height: 1px;\r\n border: none;\r\n background-color: ${theme.palette.grey.fifteenB};\r\n margin: 0;\r\n`\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst breakpoints = theme.breakpoints\r\n\r\nconst Container = forwardRef(({ className, ...props }, ref) => (\r\n <StyledContainer\r\n ref={ref}\r\n className={classNames(\"KUI-Container\", className)}\r\n {...props}\r\n />\r\n))\r\n\r\nContainer.displayName = \"Container\"\r\n\r\nexport default Container\r\n\r\nconst StyledContainer = styled.div`\r\n margin: 0 auto;\r\n box-sizing: border-box;\r\n padding: 0 16px;\r\n width: 100%;\r\n @media (min-width: 1280px) {\r\n max-width: 1280px;\r\n }\r\n @media (min-width: ${breakpoints.xs}px) {\r\n padding: 0 24px;\r\n }\r\n`\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst breakpoints = theme.breakpoints\r\n\r\nconst Grid = forwardRef(\r\n ({ item, container, className, ...otherProps }, ref) => (\r\n <StyledGrid\r\n ref={ref}\r\n item={item}\r\n container={container}\r\n className={classNames(\r\n item && \"KUI-Grid_Item\",\r\n container && \"KUI-Grid_Container\",\r\n className\r\n )}\r\n {...otherProps}\r\n />\r\n )\r\n)\r\n\r\nGrid.displayName = \"Grid\"\r\n\r\nGrid.propTypes = {\r\n spacing: PropTypes.number,\r\n justify: PropTypes.oneOf([\r\n \"center\",\r\n \"flex-start\",\r\n \"flex-end\",\r\n \"space-between\",\r\n ]),\r\n alignItems: PropTypes.oneOf([\"center\", \"flex-start\", \"flex-end\"]),\r\n alignContent: PropTypes.oneOf([\"center\", \"flex-start\", \"flex-end\"]),\r\n direction: PropTypes.oneOf([\"column\", \"row\"]),\r\n}\r\n\r\nexport default Grid\r\n\r\nconst containerSpacingCSS = (spacing) => css`\r\n width: calc(100% + (${theme.settings.spacing} * ${spacing}px));\r\n margin-top: calc(0px - ((${theme.settings.spacing} * ${spacing}px)));\r\n margin-left: calc(0px - ((${theme.settings.spacing} * ${spacing}px)));\r\n & > .KUI-Grid_Item {\r\n padding-left: calc((${theme.settings.spacing} * ${spacing}px));\r\n padding-top: calc((${theme.settings.spacing} * ${spacing}px));\r\n }\r\n`\r\n\r\nconst containerCSS = (props) => css`\r\n display: flex;\r\n flex-wrap: ${props.wrap || \"wrap\"};\r\n box-sizing: border-box;\r\n width: 100%;\r\n justify-content: ${props.justify || \"unset\"};\r\n align-items: ${props.alignItems || \"unset\"};\r\n align-content: ${props.alignContent || \"unset\"};\r\n flex-direction: ${props.direction || \"unset\"};\r\n ${props.spacing && containerSpacingCSS(props.spacing)}\r\n`\r\n\r\nconst itemSizeCSS = (size) =>\r\n size &&\r\n css`\r\n max-width: ${size === \"auto\"\r\n ? \"auto\"\r\n : `calc(100% / (${theme.settings.columns} / ${size}))`};\r\n flex-basis: ${size === \"auto\"\r\n ? \"auto\"\r\n : `calc(100% / (${theme.settings.columns} / ${size}))`};\r\n `\r\n\r\nconst itemCSS = (props) => css`\r\n margin: 0;\r\n box-sizing: border-box;\r\n flex-grow: 0;\r\n @media (min-width: 0px) {\r\n ${itemSizeCSS(props.xs)};\r\n }\r\n @media (min-width: ${breakpoints.xs + 1}px) {\r\n ${itemSizeCSS(props.sm)};\r\n }\r\n @media (min-width: ${breakpoints.sm + 1}px) {\r\n ${itemSizeCSS(props.md)};\r\n }\r\n @media (min-width: ${breakpoints.md + 1}px) {\r\n ${itemSizeCSS(props.lg)};\r\n }\r\n @media (min-width: ${breakpoints.xl}px) {\r\n ${itemSizeCSS(props.xl)};\r\n }\r\n`\r\n\r\nconst StyledGrid = styled.div`\r\n ${({ item, ...other }) => item && itemCSS(other)}\r\n ${({ container, ...other }) => container && containerCSS(other)}\r\n`\r\n","import React, { forwardRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { spacing } = theme.settings\r\nconst Box = forwardRef((props, ref) => <StyledBox ref={ref} {...props} />)\r\n\r\nBox.propTypes = {\r\n pt: PropTypes.number,\r\n pb: PropTypes.number,\r\n pr: PropTypes.number,\r\n pl: PropTypes.number,\r\n mt: PropTypes.number,\r\n mb: PropTypes.number,\r\n mr: PropTypes.number,\r\n ml: PropTypes.number,\r\n}\r\n\r\nBox.displayName = \"Box\"\r\n\r\nexport default Box\r\n\r\nconst StyledBox = styled.div`\r\n ${({ mt }) => mt && `margin-top: ${mt * spacing}px`};\r\n ${({ mb }) => mb && `margin-bottom: ${mb * spacing}px`};\r\n ${({ mr }) => mr && `margin-right: ${mr * spacing}px`};\r\n ${({ ml }) => ml && `margin-left: ${ml * spacing}px`};\r\n\r\n ${({ pt }) => pt && `padding-top: ${pt * spacing}px`};\r\n ${({ pb }) => pb && `padding-bottom: ${pb * spacing}px`};\r\n ${({ pr }) => pr && `padding-right: ${pr * spacing}px`};\r\n ${({ pl }) => pl && `padding-left: ${pl * spacing}px`};\r\n`\r\n","import React, { useRef } from \"react\"\r\nimport styled from \"@emotion/styled\"\r\nimport classNames from \"classnames\"\r\n\r\nfunction Accordion(props) {\r\n const { children, onChange, expanded, className, disabled, ...otherProps } =\r\n props\r\n const detailsBlock = useRef(null)\r\n const [summary, ...otherChildren] = React.Children.toArray(children)\r\n\r\n const handleTransitionEnd = () => {\r\n if (detailsBlock.current.style.height !== \"0px\") {\r\n detailsBlock.current.style.height = \"auto\"\r\n }\r\n }\r\n\r\n return (\r\n <StyledAccordion\r\n className={classNames(\"KUI-Accordion\", className)}\r\n {...otherProps}\r\n >\r\n <div>\r\n {React.cloneElement(summary, {\r\n detailsBlock,\r\n onChange,\r\n expanded,\r\n disabled,\r\n })}\r\n </div>\r\n <StyledCollapse\r\n className=\"KUI-Collapse\"\r\n onTransitionEnd={handleTransitionEnd}\r\n ref={detailsBlock}\r\n >\r\n {otherChildren}\r\n </StyledCollapse>\r\n </StyledAccordion>\r\n )\r\n}\r\n\r\nexport default Accordion\r\n\r\nconst StyledAccordion = styled.div`\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: transparent;\r\n`\r\n\r\nconst StyledCollapse = styled.div`\r\n height: 0;\r\n overflow: hidden;\r\n transition: height 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n`\r\n","import React, { useEffect, useState } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nfunction AccordionSummary({\r\n detailsBlock,\r\n expanded: defaultExpanded,\r\n onChange,\r\n className,\r\n children,\r\n expandIcon,\r\n contentStyles,\r\n expandedStyles,\r\n iconStyles,\r\n disabled,\r\n ...otherProps\r\n}) {\r\n const [expanded, setExpanded] = useState(!!defaultExpanded)\r\n\r\n const handleClick = () => {\r\n setExpanded((prev) => !prev)\r\n }\r\n\r\n useEffect(() => {\r\n setExpanded(defaultExpanded)\r\n }, [defaultExpanded])\r\n\r\n useEffect(() => {\r\n if (detailsBlock) {\r\n if (expanded) {\r\n detailsBlock.current.style.height = `${detailsBlock.current?.scrollHeight}px`\r\n } else {\r\n detailsBlock.current.style.height = `${detailsBlock.current?.scrollHeight}px`\r\n window\r\n .getComputedStyle(detailsBlock.current, null)\r\n .getPropertyValue(\"height\")\r\n detailsBlock.current.style.height = \"0\"\r\n }\r\n }\r\n if (onChange) {\r\n onChange(expanded)\r\n }\r\n }, [expanded])\r\n\r\n return (\r\n <StyledAccordionSummary\r\n onClick={handleClick}\r\n className={classNames(\r\n \"KUI-Accordion_Summary\",\r\n disabled && \"KUI-Accordion_Summary-disabled\",\r\n className\r\n )}\r\n {...otherProps}\r\n >\r\n <StyledSummaryContent\r\n className={classNames(\r\n \"KUI-Accordion_Summary-Content\",\r\n expanded && \"KUI-Accordion_expanded\",\r\n expanded && expandedStyles,\r\n contentStyles\r\n )}\r\n expanded={expanded}\r\n >\r\n {children}\r\n </StyledSummaryContent>\r\n <StyledSummaryIcon\r\n expanded={expanded}\r\n className={classNames(\r\n \"KUI-Accordion_Summary-Icon\",\r\n expanded && \"KUI-Accordion_expanded\",\r\n expanded && expandedStyles,\r\n iconStyles\r\n )}\r\n >\r\n {expandIcon}\r\n </StyledSummaryIcon>\r\n </StyledAccordionSummary>\r\n )\r\n}\r\n\r\nAccordionSummary.propTypes = {\r\n expandIcon: PropTypes.element,\r\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\r\n}\r\n\r\nexport default AccordionSummary\r\n\r\nconst StyledAccordionSummary = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n`\r\n\r\nconst StyledSummaryContent = styled(\"div\", {\r\n shouldForwardProp: (prop) => prop !== \"expanded\",\r\n})`\r\n margin: 12px 0;\r\n display: flex;\r\n width: 100%;\r\n transition: margin 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n .KUI-Accordion_Summary-disabled {\r\n pointer-events: none;\r\n }\r\n`\r\n\r\nconst StyledSummaryIcon = styled(\"div\", {\r\n shouldForwardProp: (prop) => prop !== \"expanded\",\r\n})`\r\n transform: ${({ expanded }) =>\r\n expanded ? \"rotate(180deg)\" : \"rotate(0deg)\"};\r\n transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n`\r\n","import React from \"react\"\r\n\r\nfunction AccordionDetails(props) {\r\n return <div {...props} />\r\n}\r\n\r\nexport default AccordionDetails\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport { keyframes } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nfunction Skeleton({ className, ...otherProps }) {\r\n return (\r\n <StyledSkeleton\r\n className={classNames(\"KUI-Skeleton\", className)}\r\n {...otherProps}\r\n />\r\n )\r\n}\r\n\r\nexport default Skeleton\r\n\r\nconst waveAnim = keyframes`\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 50% {\r\n transform: translateX(100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n`\r\n\r\nconst StyledSkeleton = styled.span`\r\n overflow: hidden;\r\n position: relative;\r\n display: block;\r\n background-color: rgba(0, 0, 0, 0.11);\r\n height: 1.2em;\r\n &::before {\r\n content: \"\";\r\n display: block;\r\n padding-top: 100%;\r\n }\r\n &::after {\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n content: \"\";\r\n position: absolute;\r\n animation: ${waveAnim} 1.6s linear 0.5s infinite;\r\n transform: translateX(-100%);\r\n background: linear-gradient(\r\n 90deg,\r\n transparent,\r\n rgba(0, 0, 0, 0.04),\r\n transparent\r\n );\r\n }\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\n\r\nfunction AppBar({ className, isFixed, ...otherProps }) {\r\n return (\r\n <StyledAppBar\r\n isFixed={isFixed}\r\n className={classNames(\r\n \"KUI-AppBar\",\r\n isFixed && \"KUI-AppBar_fixed\",\r\n className\r\n )}\r\n {...otherProps}\r\n />\r\n )\r\n}\r\n\r\nAppBar.propTypes = {\r\n isFixed: PropTypes.bool,\r\n}\r\n\r\nAppBar.defaultProps = {\r\n isFixed: true,\r\n}\r\n\r\nexport default AppBar\r\n\r\nconst fixesBarCSS = ({ isFixed }) =>\r\n isFixed &&\r\n css`\r\n top: 0;\r\n left: auto;\r\n right: 0;\r\n position: fixed;\r\n `\r\n\r\nconst StyledAppBar = styled.header`\r\n width: 100%;\r\n display: flex;\r\n z-index: 1100;\r\n box-sizing: border-box;\r\n flex-shrink: 0;\r\n background: #fff;\r\n ${fixesBarCSS};\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { breakpoints } = theme\r\n\r\nfunction ToolBar({ className, ...otherProps }) {\r\n return (\r\n <StyledTollBar\r\n className={classNames(\"KUI-ToolBar\", className)}\r\n {...otherProps}\r\n />\r\n )\r\n}\r\n\r\nexport default ToolBar\r\n\r\nconst StyledTollBar = styled.div`\r\n display: flex;\r\n position: relative;\r\n align-items: center;\r\n padding: 0px;\r\n min-height: 64px;\r\n @media (max-width: ${breakpoints.xs}px) {\r\n min-height: 48px;\r\n }\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport { keyframes } from \"@emotion/react\"\r\nimport styled from \"@emotion/styled\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst palette = theme.palette\r\n\r\nfunction CircularProgress({\r\n className,\r\n svgStyles,\r\n circleStyles,\r\n ...otherProps\r\n}) {\r\n return (\r\n <StyledProgress\r\n className={classNames(\"KUI-CircularProgress\", className)}\r\n {...otherProps}\r\n >\r\n <StyledSVG\r\n className={classNames(\"KUI-CircularProgress_svg\", svgStyles)}\r\n viewBox=\"22 22 44 44\"\r\n >\r\n <StyledCircle\r\n className={classNames(\"KUI-CircularProgress_circle\", circleStyles)}\r\n cx=\"44\"\r\n cy=\"44\"\r\n r=\"20.2\"\r\n fill=\"none\"\r\n strokeWidth=\"3.6\"\r\n />\r\n </StyledSVG>\r\n </StyledProgress>\r\n )\r\n}\r\n\r\nexport default CircularProgress\r\n\r\nconst rotateAnimate = keyframes`\r\n 0% {\r\n transform-origin: 50% 50%;\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n`\r\n\r\nconst circleAnimate = keyframes`\r\n 0% {\r\n stroke-dasharray: 1px, 200px;\r\n stroke-dashoffset: 0px;\r\n }\r\n 50% {\r\n stroke-dasharray: 100px, 200px;\r\n stroke-dashoffset: -15px;\r\n }\r\n 100% {\r\n stroke-dasharray: 100px, 200px;\r\n stroke-dashoffset: -125px;\r\n }\r\n`\r\n\r\nconst StyledProgress = styled.div`\r\n color: ${palette.brand.main};\r\n width: 40px;\r\n height: 40px;\r\n display: inline-block;\r\n animation: ${rotateAnimate} 1.4s linear infinite;\r\n`\r\n\r\nconst StyledSVG = styled.svg`\r\n display: block;\r\n`\r\n\r\nconst StyledCircle = styled.circle`\r\n stroke: currentColor;\r\n animation: ${circleAnimate} 1.4s ease-in-out infinite;\r\n stroke-dasharray: 80px, 200px;\r\n stroke-dashoffset: 0px;\r\n`\r\n","import React from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nfunction LinearProgress({\r\n className,\r\n progressBarStyles,\r\n value,\r\n ...otherProps\r\n}) {\r\n let newValue = value\r\n\r\n if (value > 100) {\r\n newValue = 100\r\n }\r\n\r\n return (\r\n <StyledLinearProgress\r\n className={classNames(\"KUI-LinearProgress\", className)}\r\n aria-valuenow={newValue}\r\n {...otherProps}\r\n >\r\n <StyledLinearProgressBar\r\n className={classNames(\"KUI-LinearProgress_bar\", progressBarStyles)}\r\n style={{ transform: `translateX(${newValue - 100}%)` }}\r\n />\r\n </StyledLinearProgress>\r\n )\r\n}\r\n\r\nLinearProgress.defaultProps = {\r\n value: 0,\r\n}\r\n\r\nexport default LinearProgress\r\n\r\nconst StyledLinearProgress = styled.div`\r\n overflow: hidden;\r\n position: relative;\r\n backdrop-filter: blur(4px);\r\n background-color: rgba(255, 255, 255, 0.55);\r\n border-radius: 66px;\r\n height: 6px;\r\n`\r\n\r\nconst StyledLinearProgressBar = styled.div`\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n bottom: 0;\r\n position: absolute;\r\n transition: transform 0.4s linear;\r\n transform-origin: left;\r\n opacity: 0.9;\r\n border-radius: 66px;\r\n background-color: white;\r\n`\r\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport PropTypes from \"prop-types\"\r\nimport styled from \"@emotion/styled\"\r\nimport { css } from \"@emotion/react\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst { palette } = theme\r\n\r\nconst nextItem = (list, item) => {\r\n if (list === item) {\r\n return list.firstChild\r\n }\r\n if (item && item.nextElementSibling) {\r\n return item.nextElementSibling\r\n }\r\n return list.firstChild\r\n}\r\n\r\nconst previousItem = (list, item) => {\r\n if (list === item) {\r\n return list.lastChild\r\n }\r\n if (item && item.previousElementSibling) {\r\n return item.previousElementSibling\r\n }\r\n return list.lastChild\r\n}\r\n\r\nconst moveFocus = (list, currentFocus, traversalFunction) => {\r\n const nextFocus = traversalFunction(list, currentFocus)\r\n\r\n nextFocus.focus()\r\n}\r\n\r\nconst Tabs = forwardRef((props, ref) => {\r\n const {\r\n value,\r\n onChange,\r\n className,\r\n indicatorPos,\r\n indicatorHidden,\r\n children: childrenProp,\r\n ...otherProps\r\n } = props\r\n const tabListRef = useRef(null)\r\n const [indicatorStyles, setIndicatorStyles] = useState({})\r\n\r\n const handleKeyDown = (e) => {\r\n const list = tabListRef.current\r\n const currFocus = list.ownerDocument.activeElement\r\n switch (e.key) {\r\n case \"ArrowLeft\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, previousItem)\r\n break\r\n case \"ArrowRight\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, nextItem)\r\n break\r\n case \"Home\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, nextItem)\r\n break\r\n case \"End\":\r\n e.preventDefault()\r\n moveFocus(list, currFocus, previousItem)\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n const children = React.Children.map(childrenProp, (child, childIndex) => {\r\n if (!React.isValidElement(child)) {\r\n return null\r\n }\r\n\r\n const childValue =\r\n child.props.value === undefined ? childIndex : child.props.value\r\n const selected = childValue === value\r\n\r\n return React.cloneElement(child, {\r\n selected,\r\n onChange,\r\n value: childValue,\r\n })\r\n })\r\n\r\n useEffect(() => {\r\n const selectedTab = tabListRef.current?.children[value]\r\n setIndicatorStyles({\r\n width: selectedTab?.clientWidth,\r\n // transform: `translateX(${selectedTab?.offsetLeft})`,\r\n left: selectedTab?.offsetLeft,\r\n })\r\n }, [value])\r\n\r\n return (\r\n <StyledTabs ref={ref} className=\"KUI-Tabs\" {...otherProps}>\r\n <StyledTabList\r\n tabIndex={0}\r\n role=\"tablist\"\r\n className={classNames(\"KUI-TabList\", className)}\r\n ref={tabListRef}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {children}\r\n </StyledTabList>\r\n <StyledTabsIndicator\r\n hidden={indicatorHidden}\r\n position={indicatorPos}\r\n className={classNames(\r\n \"KUI-Tabs_indicator\",\r\n indicatorHidden && \"KUI-Tabs_hidden\"\r\n )}\r\n style={indicatorStyles}\r\n />\r\n </StyledTabs>\r\n )\r\n})\r\n\r\nTabs.propTypes = {\r\n indicatorPos: PropTypes.oneOf([\"bottom\", \"top\"]),\r\n}\r\n\r\nTabs.defaultProps = {\r\n indicatorPos: \"bottom\",\r\n}\r\n\r\nexport default Tabs\r\n\r\nconst indicatorPositionsCSS = {\r\n top: css`\r\n top: 0;\r\n border-radius: 0 0 8px 8px;\r\n `,\r\n bottom: css`\r\n bottom: 0;\r\n border-radius: 8px 8px 0px 0px;\r\n `,\r\n}\r\n\r\nconst StyledTabs = styled.div`\r\n position: relative;\r\n`\r\n\r\nconst StyledTabList = styled.div`\r\n display: flex;\r\n`\r\n\r\nconst StyledTabsIndicator = styled.span`\r\n position: absolute;\r\n background-color: ${palette.brand.main};\r\n transition: width 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\r\n left 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\r\n height: 2px;\r\n will-change: left;\r\n opacity: ${({ hidden }) => (hidden ? 0 : 1)};\r\n ${({ position }) => indicatorPositionsCSS[position]};\r\n`\r\n","import React, { forwardRef, useRef } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\nimport Caption from \"../Caption\"\r\n\r\nconst Tab = forwardRef((props, ref) => {\r\n const { selected, value, className, onChange, onClick, ...other } = props\r\n const tabRef = useRef()\r\n\r\n const handleClick = (e) => {\r\n if (!selected && onChange) {\r\n onChange(e, value)\r\n }\r\n\r\n if (onClick) {\r\n onClick(e)\r\n }\r\n }\r\n\r\n const forwardedRef = (elem) => {\r\n if (ref) {\r\n ref.current = elem\r\n }\r\n tabRef.current = elem\r\n }\r\n\r\n return (\r\n <StyledTab\r\n className={classNames(\r\n \"KUI-Tab\",\r\n selected && \"KUI-Tab_selected\",\r\n className\r\n )}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={selected}\r\n tabIndex={selected ? 0 : -1}\r\n aria-controls={`tabpanel-${value}`}\r\n id={`tab-${value}`}\r\n ref={forwardedRef}\r\n onClick={handleClick}\r\n {...other}\r\n >\r\n {typeof other.label === \"string\" ? (\r\n <Caption weight={600} size=\"sm\" color=\"white\">\r\n {other.label}\r\n </Caption>\r\n ) : (\r\n other.label\r\n )}\r\n </StyledTab>\r\n )\r\n})\r\n\r\nTab.propTypes = {\r\n label: PropTypes.string,\r\n}\r\n\r\nexport default Tab\r\n\r\nconst StyledTab = styled.button`\r\n height: 64px;\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n margin-right: 24px;\r\n padding: 0;\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n > p {\r\n white-space: nowrap;\r\n }\r\n`\r\n","import React, { forwardRef, useEffect, useRef } from \"react\"\nimport PropTypes from \"prop-types\"\nimport styled from \"@emotion/styled\"\nimport Tabs from \"../Tabs\"\nimport Tab from \"../Tab\"\n\nconst TabsPanel = forwardRef((props, ref) => {\n const {\n tabs,\n tabPanels,\n paths,\n activeTab,\n onChange,\n indicatorPos,\n endComponent,\n navigate,\n ...other\n } = props\n const [value, setValue] = React.useState(Number(activeTab))\n const tabsRef = useRef(null)\n\n const handleChange = (event, newValue) => {\n setValue(newValue)\n if (paths && paths.length > 0) {\n if (navigate) navigate(paths[newValue])\n else\n window.history.pushState(\n { route: paths[newValue] },\n \"\",\n paths[newValue]\n )\n }\n if (onChange) {\n onChange(event, newValue)\n }\n\n tabsRef.current?.scrollTo({\n left: event.target.offsetLeft,\n behavior: \"smooth\",\n })\n }\n\n useEffect(() => {\n setValue(Number(activeTab))\n }, [activeTab])\n\n return (\n <div ref={ref} {...other}>\n <div className=\"KUI-TabsContainer\">\n <StyledTabsWrapper ref={tabsRef} className=\"KUI-TabsWrapper\">\n <Tabs\n value={value}\n onChange={handleChange}\n indicatorPos={indicatorPos}\n >\n {tabs.map((item) => (\n <Tab label={item} key={item} />\n ))}\n </Tabs>\n\n {endComponent}\n </StyledTabsWrapper>\n </div>\n {tabPanels?.map((item, index) => (\n <div\n key={index}\n role=\"tabpanel\"\n hidden={value !== index}\n id={`tabpanel-${index}`}\n aria-labelledby={`tab-${index}`}\n >\n {value === index && item}\n </div>\n ))}\n </div>\n )\n})\n\nTabsPanel.propTypes = {\n indicatorPos: PropTypes.oneOf([\"bottom\", \"top\"]),\n}\n\nexport default TabsPanel\n\nconst StyledTabsWrapper = styled.div`\n overflow-x: scroll;\n scroll-snap-type: x mandatory;\n scroll-behavior: smooth;\n display: flex;\n justify-content: space-between;\n align-items: center;\n &::-webkit-scrollbar {\n width: 0;\n }\n &::-webkit-scrollbar {\n display: none;\n }\n`\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n }\n\n // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n _cancelEvents2.default.subscribe(function () {\n options.data.cancel = true;\n });\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n activeStyle: _propTypes2.default.object,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var style = {};\n\n if (this.state && this.state.active) {\n style = _extends({}, this.props.style, this.props.activeStyle);\n } else {\n style = _extends({}, this.props.style);\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.style = style;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar LinkElement = function (_React$Component) {\n _inherits(LinkElement, _React$Component);\n\n function LinkElement() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkElement);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n return _react2.default.createElement(\n 'a',\n _this.props,\n _this.props.children\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(LinkElement);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ButtonElement = function (_React$Component) {\n _inherits(ButtonElement, _React$Component);\n\n function ButtonElement() {\n _classCallCheck(this, ButtonElement);\n\n return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n }\n\n _createClass(ButtonElement, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'input',\n this.props,\n this.props.children\n );\n }\n }]);\n\n return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(ButtonElement);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ElementWrapper = function (_React$Component) {\n _inherits(ElementWrapper, _React$Component);\n\n function ElementWrapper() {\n _classCallCheck(this, ElementWrapper);\n\n return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n }\n\n _createClass(ElementWrapper, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // Remove `parentBindings` from props\n var newProps = _extends({}, this.props);\n if (newProps.parentBindings) {\n delete newProps.parentBindings;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({}, newProps, { ref: function ref(el) {\n _this2.props.parentBindings.domNode = el;\n } }),\n this.props.children\n );\n }\n }]);\n\n return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n};\n\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","\"use strict\";\n\n/* DEPRECATED */\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\nvar scrollSpy = require('./scroll-spy');\nvar defaultScroller = require('./scroller');\nvar PropTypes = require('prop-types');\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n to: PropTypes.string.isRequired,\n containerId: PropTypes.string,\n container: PropTypes.object,\n activeClass: PropTypes.string,\n spy: PropTypes.bool,\n smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n offset: PropTypes.number,\n delay: PropTypes.number,\n isDynamic: PropTypes.bool,\n onClick: PropTypes.func,\n duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n absolute: PropTypes.bool,\n onSetActive: PropTypes.func,\n onSetInactive: PropTypes.func,\n ignoreCancelEvents: PropTypes.bool,\n hashSpy: PropTypes.bool,\n spyThrottle: PropTypes.number\n};\n\nvar Helpers = {\n Scroll: function Scroll(Component, customScroller) {\n\n console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n var scroller = customScroller || defaultScroller;\n\n var Scroll = function (_React$Component) {\n _inherits(Scroll, _React$Component);\n\n function Scroll(props) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!scrollSpy.isMounted(scrollSpyContainer)) {\n scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!scrollHash.isMounted()) {\n scrollHash.mount(scroller);\n }\n scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n if (this.props.spy) {\n scrollSpy.addStateHandler(this.stateHandler);\n }\n\n scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n scrollSpy.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.onClick = this.handleClick;\n\n return React.createElement(Component, props);\n }\n }]);\n\n return Scroll;\n }(React.Component);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.stateHandler = function () {\n if (scroller.getActiveLink() !== _this2.props.to) {\n if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n _this2.props.onSetInactive();\n }\n _this2.setState({ active: false });\n }\n };\n\n this.spyHandler = function (y) {\n\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n return;\n }\n\n var to = _this2.props.to;\n var element = null;\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemTopBound = cords.top - containerTop + y;\n elemBottomBound = elemTopBound + cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };","import React, { useEffect, useRef } from \"react\"\r\nimport { Link, scroller, Events } from \"react-scroll\"\r\nimport styled from \"@emotion/styled\"\r\nimport Caption from \"../Caption\"\r\n\r\nconst ScrollTab = ({\r\n selected,\r\n value,\r\n label,\r\n name,\r\n onChange,\r\n offset,\r\n isScrolling,\r\n setIsScrolling,\r\n setIsIndicatorHidden,\r\n isActive,\r\n setIsActive,\r\n}) => {\r\n const activeRef = useRef(true)\r\n const scrollingRef = useRef(isScrolling)\r\n\r\n const handleSelect = (e) => {\r\n setTimeout(() => {\r\n setIsIndicatorHidden(false)\r\n setIsActive(true)\r\n })\r\n if (!isScrolling && onChange) {\r\n onChange(e, value)\r\n }\r\n }\r\n\r\n const handleInactive = () => {\r\n setIsActive(false)\r\n setTimeout(() => {\r\n if (!activeRef.current && !scrollingRef.current) {\r\n setIsIndicatorHidden(true)\r\n }\r\n }, 10)\r\n }\r\n\r\n useEffect(() => {\r\n activeRef.current = isActive\r\n }, [isActive])\r\n\r\n useEffect(() => {\r\n scrollingRef.current = isScrolling\r\n }, [isScrolling])\r\n\r\n const handleKeyDown = (e) => {\r\n switch (e.key) {\r\n case \"Enter\":\r\n handleSelect(e)\r\n scroller.scrollTo(name, { offset })\r\n break\r\n case \"Space\":\r\n handleSelect(e)\r\n scroller.scrollTo(name, { offset })\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n const startScrolling = () => {\r\n setIsScrolling(true)\r\n }\r\n\r\n const endScrolling = () => {\r\n setIsScrolling(false)\r\n }\r\n\r\n useEffect(() => {\r\n if (selected) {\r\n scroller.scrollTo(name, { offset })\r\n }\r\n\r\n Events.scrollEvent.register(\"begin\", (to, element) => {\r\n startScrolling()\r\n })\r\n\r\n Events.scrollEvent.register(\"end\", (to, element) => {\r\n setTimeout(endScrolling)\r\n })\r\n\r\n return () => {\r\n Events.scrollEvent.remove(\"begin\")\r\n Events.scrollEvent.remove(\"end\")\r\n }\r\n }, [])\r\n\r\n const handleClick = (e) => {\r\n if (!selected && onChange) {\r\n onChange(e, value)\r\n }\r\n }\r\n\r\n return (\r\n <StyledScrollTab\r\n to={name}\r\n spy\r\n smooth\r\n duration={600}\r\n offset={offset}\r\n onSetActive={handleSelect}\r\n onSetInactive={handleInactive}\r\n className=\"KUI-ScrollTab\"\r\n role=\"tab\"\r\n aria-selected={selected}\r\n tabIndex={selected ? 0 : -1}\r\n aria-controls={`tabpanel-${value}`}\r\n id={`tab-${value}`}\r\n onKeyDown={handleKeyDown}\r\n onClick={handleClick}\r\n >\r\n <Caption weight={600} size=\"sm\" color=\"white\">\r\n {label}\r\n </Caption>\r\n </StyledScrollTab>\r\n )\r\n}\r\n\r\nexport default ScrollTab\r\n\r\nconst StyledScrollTab = styled(Link)`\r\n margin-right: 24px;\r\n height: 64px;\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n padding: 0;\r\n display: flex;\r\n align-items: center;\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n`\r\n","import React, { forwardRef, useEffect, useState } from \"react\"\r\nimport PropTypes from \"prop-types\"\r\nimport Tabs from \"../Tabs\"\r\nimport ScrollTab from \"../ScrollTab\"\r\n\r\nconst MenuPanel = forwardRef((props, ref) => {\r\n const { tabs, tabsId, activeTab, onChange, indicatorPos, offset, ...other } =\r\n props\r\n const [value, setValue] = React.useState(Number(activeTab))\r\n const [isIndicatorHidden, setIsIndicatorHidden] = useState(false)\r\n const [isScrolling, setIsScrolling] = useState(false)\r\n const [isActive, setIsActive] = useState(true)\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue)\r\n if (onChange) {\r\n onChange(event, newValue)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setValue(Number(activeTab))\r\n }, [activeTab])\r\n\r\n return (\r\n <Tabs\r\n ref={ref}\r\n value={value}\r\n onChange={handleChange}\r\n indicatorPos={indicatorPos}\r\n indicatorHidden={isIndicatorHidden}\r\n {...other}\r\n >\r\n {tabs.map((item, index) => (\r\n <ScrollTab\r\n isScrolling={isScrolling}\r\n setIsScrolling={setIsScrolling}\r\n offset={offset}\r\n label={item}\r\n name={(tabsId && tabsId[index]) || item}\r\n key={item}\r\n setIsIndicatorHidden={setIsIndicatorHidden}\r\n isActive={isActive}\r\n setIsActive={setIsActive}\r\n />\r\n ))}\r\n </Tabs>\r\n )\r\n})\r\n\r\nMenuPanel.propTypes = {\r\n indicatorPos: PropTypes.oneOf([\"bottom\", \"top\"]),\r\n}\r\n\r\nexport default MenuPanel\r\n","import React, { forwardRef } from \"react\"\r\nimport classNames from \"classnames\"\r\nimport styled from \"@emotion/styled\"\r\n\r\nconst IconButton = forwardRef(({ className, ...props }, ref) => (\r\n <StyledButton\r\n className={classNames(\"KUI-IconButton\", className)}\r\n ref={ref}\r\n {...props}\r\n />\r\n))\r\n\r\nexport default IconButton\r\n\r\nconst StyledButton = styled.button`\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n padding: 0;\r\n margin: 0;\r\n`\r\n","import styled from \"@emotion/styled\"\nimport classNames from \"classnames\"\nimport React, { forwardRef } from \"react\"\n\nconst Popper = forwardRef((props, ref) => {\n const {\n open,\n children,\n spacing,\n className,\n withArrow,\n withoutMobile,\n arrowRef,\n arrowPosition,\n realPlacement,\n ...other\n } = props\n\n const getArrowTopPosition = () => {\n if (arrowPosition?.y) return `${arrowPosition?.y}px`\n if (realPlacement === \"top\") return \"unset\"\n return `-3px`\n }\n\n const arrowPlacement = {\n left: `${Number(arrowPosition?.x)}px`,\n top: getArrowTopPosition(),\n bottom: realPlacement === \"top\" ? \"-3px\" : \"unset\",\n }\n\n return (\n <StyledPopperWrapper\n ref={ref}\n className={classNames(\n \"KUI-Popper\",\n open && \"KUI-Popper_open\",\n !withoutMobile && \"KUI-Popper_withMobile\",\n className\n )}\n spacing={spacing}\n {...other}\n >\n <StyledPopper open={!!open}>\n {children}\n {withArrow && (\n <StyledArrow\n ref={arrowRef}\n style={arrowPlacement}\n className={classNames(\n \"KUI-Popper_arrow\",\n !withoutMobile && \"KUI-Popper_arrow_withMobile\"\n )}\n />\n )}\n </StyledPopper>\n </StyledPopperWrapper>\n )\n})\n\nexport default Popper\n\nconst StyledPopperWrapper = styled.div`\n position: absolute;\n max-width: 215px;\n width: max-content;\n padding: ${({ spacing }) => spacing || 0};\n z-index: -1;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: all ease-out 0.3s;\n &.KUI-Popper_open {\n opacity: 1;\n z-index: 10;\n visibility: visible;\n pointer-events: auto;\n }\n @media (max-width: 600px) {\n &.KUI-Popper_withMobile {\n position: fixed !important;\n bottom: 24px !important;\n top: auto !important;\n left: 16px !important;\n width: calc(100vw - 32px);\n max-width: unset;\n transform: none !important;\n }\n }\n`\n\nconst StyledPopper = styled.div`\n padding: 16px;\n border-radius: 12px;\n background: white;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1);\n transition: opacity 0.3s ease-out;\n position: relative;\n`\n\nconst StyledArrow = styled.span`\n position: absolute;\n width: 6px;\n height: 6px;\n background: inherit;\n transform: rotate(45deg);\n border-radius: 2px;\n top: -3px;\n left: calc(50% - 3px);\n @media (max-width: 600px) {\n &.KUI-Popper_arrow_withMobile {\n display: none;\n }\n }\n`\n","function getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n continue;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. This stops `shift()` from taking action, but can\n // be worked around by calling it again after the `arrow()` if desired.\n const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? min$1 - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset + alignmentOffset\n }\n };\n }\n});\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements = alignment !== undefined || allowedPlacements === allPlacements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[main], overflow[cross]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getSideObjectFromPadding(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n const {\n x,\n y\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const axis = getMainAxisFromPlacement(placement);\n const isXAxis = axis === 'x';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isXAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isXAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const safari = isSafari();\n const css = getComputedStyle$1(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n x: v,\n y: v\n});\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createEmptyCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n var _win$visualViewport, _win$visualViewport2;\n if (isFixed === void 0) {\n isFixed = true;\n }\n if (!isSafari()) {\n return noOffsets;\n }\n const win = element ? getWindow(element) : window;\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n return noOffsets;\n }\n return {\n x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createEmptyCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createEmptyCoords(1);\n const offsets = createEmptyCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n if (list === void 0) {\n list = [];\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isSafari();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createEmptyCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n clearTimeout(timeoutId);\n io && io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n let isFirstUpdate = true;\n io = new IntersectionObserver(entries => {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }, {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n });\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(update);\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo && cleanupIo();\n resizeObserver && resizeObserver.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { arrow as arrow$1, computePosition } from '@floating-ui/dom';\nexport { autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$1({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n } else if (element) {\n return arrow$1({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length, i, keys;\n if (a && b && typeof a == 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/react\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node != referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, [_setReference]);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, [_setFloating]);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n isPositioned: true\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n } else {\n update();\n }\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\nexport { arrow, useFloating };\n","import { platform, getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { hideOthers } from 'aria-hidden';\nimport { tabbable } from 'tabbable';\nimport { createPortal, flushSync } from 'react-dom';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => \"floating-ui-\" + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n index(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n if (!serverHandoffComplete) {\n serverHandoffComplete = true;\n }\n }, []);\n return id;\n}\n\n// `toString()` prevents bundlers from trying to `import { useId } from 'react'`\nconst useReactId = React[/*#__PURE__*/'useId'.toString()];\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/useId\n */\nconst useId = useReactId || useFloatingId;\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(_ref, ref) {\n let {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = _ref;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n console.warn('Floating UI: The `ref` prop is required for the `FloatingArrow`', 'component.');\n }\n }\n const clipPathId = useId();\n if (!floating) {\n return null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n strokeWidth *= 2;\n const halfStrokeWidth = strokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const [side, alignment] = placement.split('-');\n const isRTL = platform.isRTL(floating);\n const isCustomShape = !!d;\n const isVerticalSide = side === 'top' || side === 'bottom';\n const yOffsetProp = staticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = staticOffset && alignment === 'end' ? 'right' : 'left';\n if (staticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? staticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? staticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + strokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + strokeWidth / 2 + \"px)\",\n transform: \"\" + rotation + (transform != null ? transform : ''),\n ...restStyle\n }\n }), strokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: strokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: strokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + strokeWidth,\n height: width\n })));\n});\n\nfunction createPubSub() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null ? void 0 : _map$get.forEach(handler => handler(data));\n },\n on(event, listener) {\n map.set(event, [...(map.get(event) || []), listener]);\n },\n off(event, listener) {\n var _map$get2;\n map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the floating tree, returning its id.\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n index(() => {\n const node = {\n id,\n parentId\n };\n tree == null ? void 0 : tree.addNode(node);\n return () => {\n tree == null ? void 0 : tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(_ref) {\n let {\n children,\n id\n } = _ref;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId])\n }, children);\n}\n\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM (i.e. portalled to a common node, rather than their\n * respective parent).\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(_ref2) {\n let {\n children\n } = _ref2;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const events = React.useState(() => createPubSub())[0];\n return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [nodesRef, addNode, removeNode, events])\n }, children);\n}\n\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\nfunction getWindow(value) {\n return getDocument(value).defaultView || window;\n}\nfunction isElement(value) {\n return value ? value instanceof getWindow(value).Element : false;\n}\nfunction isHTMLElement(value) {\n return value ? value instanceof getWindow(value).HTMLElement : false;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n const androidRe = /Android/i;\n if ((androidRe.test(getPlatform()) || androidRe.test(getUserAgent())) && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n return event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType !== 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0;\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\n\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode && child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n\nfunction useLatestRef(value) {\n const ref = useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\nconst safePolygonIdentifier = 'data-floating-ui-safe-polygon';\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements: {\n domReference,\n floating\n },\n refs\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef();\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef();\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const isHoverOpen = React.useCallback(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n }, [dataRef]);\n\n // When dismissing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onDismiss() {\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n blockMouseMoveRef.current = true;\n }\n events.on('dismiss', onDismiss);\n return () => {\n events.off('dismiss', onDismiss);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled || !handleCloseRef.current || !open) {\n return;\n }\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event);\n }\n }\n const html = getDocument(floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [floating, open, onOpenChange, enabled, handleCloseRef, dataRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onOpenChange(false, event), closeDelay);\n } else if (runElseBranch) {\n clearTimeout(timeoutRef.current);\n onOpenChange(false, event);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = React.useCallback(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n }, []);\n const clearPointerEvents = React.useCallback(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument(refs.floating.current).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n }, [refs]);\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function isClickLikeOpenEvent() {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n }\n function onMouseEnter(event) {\n clearTimeout(timeoutRef.current);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && getDelay(delayRef.current, 'open') === 0) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = setTimeout(() => {\n onOpenChange(true, event);\n }, openDelay);\n } else {\n onOpenChange(true, event);\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n return;\n }\n unbindMouseMoveRef.current();\n const doc = getDocument(floating);\n clearTimeout(restTimeoutRef.current);\n if (handleCloseRef.current) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeout(timeoutRef.current);\n }\n handlerRef.current = handleCloseRef.current({\n ...context,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n // Should the event expose that it was closed by `safePolygon`?\n closeWithDelay(event);\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains(floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n return;\n }\n handleCloseRef.current == null ? void 0 : handleCloseRef.current({\n ...context,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n closeWithDelay(event);\n }\n })(event);\n }\n if (isElement(domReference)) {\n const ref = domReference;\n open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n floating == null ? void 0 : floating.addEventListener('mouseleave', onScrollMouseLeave);\n move && ref.addEventListener('mousemove', onMouseEnter, {\n once: true\n });\n ref.addEventListener('mouseenter', onMouseEnter);\n ref.addEventListener('mouseleave', onMouseLeave);\n return () => {\n open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n floating == null ? void 0 : floating.removeEventListener('mouseleave', onScrollMouseLeave);\n move && ref.removeEventListener('mousemove', onMouseEnter);\n ref.removeEventListener('mouseenter', onMouseEnter);\n ref.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, [domReference, floating, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, tree, delayRef, handleCloseRef, dataRef]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n index(() => {\n var _handleCloseRef$curre;\n if (!enabled) {\n return;\n }\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n const body = getDocument(floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n body.style.pointerEvents = 'none';\n performedPointerEventsMutationRef.current = true;\n if (isElement(domReference) && floating) {\n var _tree$nodesRef$curren, _tree$nodesRef$curren2;\n const ref = domReference;\n const parentFloating = tree == null ? void 0 : (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null ? void 0 : (_tree$nodesRef$curren2 = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren2.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n ref.style.pointerEvents = 'auto';\n floating.style.pointerEvents = 'auto';\n return () => {\n ref.style.pointerEvents = '';\n floating.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, floating, domReference, tree, handleCloseRef, dataRef, isHoverOpen]);\n index(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n clearPointerEvents();\n };\n }, [enabled, cleanupMouseMoveHandler, clearPointerEvents]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n reference: {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n if (open || restMs === 0) {\n return;\n }\n clearTimeout(restTimeoutRef.current);\n restTimeoutRef.current = setTimeout(() => {\n if (!blockMouseMoveRef.current) {\n onOpenChange(true, event.nativeEvent);\n }\n }, restMs);\n }\n },\n floating: {\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n onMouseLeave(event) {\n events.emit('dismiss', {\n type: 'mouseLeave',\n data: {\n returnFocus: false\n }\n });\n closeWithDelay(event.nativeEvent, false);\n }\n }\n };\n }, [events, enabled, restMs, open, onOpenChange, closeWithDelay]);\n}\n\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: () => {},\n setState: () => {},\n isInstantPhase: false\n});\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nconst FloatingDelayGroup = _ref => {\n let {\n children,\n delay,\n timeoutMs = 0\n } = _ref;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n index(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n setState({\n isInstantPhase: false\n });\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId]);\n return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setState, setCurrentId])\n }, children);\n};\nconst useDelayGroup = (_ref2, _ref3) => {\n let {\n open,\n onOpenChange\n } = _ref2;\n let {\n id\n } = _ref3;\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = useDelayGroupContext();\n index(() => {\n if (currentId) {\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }\n }, [id, onOpenChange, setState, currentId, initialDelay]);\n index(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n } else {\n unset();\n }\n }\n }, [open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n index(() => {\n if (open) {\n setCurrentId(id);\n }\n }, [open, setCurrentId, id]);\n};\n\n/**\n * Find the real active element. Traverses into shadowRoots.\n */\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null ? void 0 : (_activeElement$shadow = _activeElement.shadowRoot) == null ? void 0 : _activeElement$shadow.activeElement) != null) {\n var _activeElement, _activeElement$shadow;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction getAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n let allChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n });\n let currentChildren = allChildren;\n while (currentChildren.length) {\n currentChildren = nodes.filter(node => {\n var _currentChildren;\n return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n var _node$context2;\n return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n });\n });\n allChildren = allChildren.concat(currentChildren);\n }\n return allChildren;\n}\n\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\n\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\n\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n const allTabbable = tabbable(container, getTabbableOptions());\n if (direction === 'prev') {\n allTabbable.reverse();\n }\n const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n if (event.key === 'Tab') {\n event.target;\n clearTimeout(timeoutId);\n }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n index(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n document.addEventListener('keydown', setActiveElementOnTab);\n return () => {\n document.removeEventListener('keydown', setActiveElementOnTab);\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, {\n ref: ref,\n tabIndex: 0\n // Role is only for VoiceOver\n ,\n role: role,\n \"aria-hidden\": role ? undefined : true,\n \"data-floating-ui-focus-guard\": \"\",\n style: HIDDEN_STYLES\n }));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nfunction useFloatingPortalNode(_temp) {\n let {\n id,\n root\n } = _temp === void 0 ? {} : _temp;\n const [portalNode, setPortalNode] = React.useState(null);\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const data = React.useMemo(() => ({\n id,\n root,\n portalContext,\n uniqueId\n }), [id, root, portalContext, uniqueId]);\n const dataRef = React.useRef();\n index(() => {\n return () => {\n portalNode == null ? void 0 : portalNode.remove();\n };\n }, [portalNode, data]);\n index(() => {\n if (dataRef.current === data) return;\n dataRef.current = data;\n const {\n id,\n root,\n portalContext,\n uniqueId\n } = data;\n const existingIdRoot = id ? document.getElementById(id) : null;\n const attr = 'data-floating-ui-portal';\n if (existingIdRoot) {\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n setPortalNode(subRoot);\n } else {\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isElement(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n setPortalNode(subRoot);\n }\n }, [data]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(_ref) {\n let {\n children,\n id,\n root = null,\n preserveTabOrder = true\n } = _ref;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || focusManagerState != null && focusManagerState.modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, focusManagerState == null ? void 0 : focusManagerState.modal]);\n return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode])\n }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null ? void 0 : _beforeInsideRef$curr.focus();\n } else {\n const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n prevTabbable == null ? void 0 : prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null ? void 0 : _afterInsideRef$curre.focus();\n } else {\n const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n nextTabbable == null ? void 0 : nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent));\n }\n }\n }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n order = ['content'],\n guards = true,\n initialFocus = 0,\n returnFocus = true,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true\n } = props;\n const {\n open,\n refs,\n nodeId,\n onOpenChange,\n events,\n dataRef,\n elements: {\n domReference,\n floating\n }\n } = context;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n\n // Controlled by `useListNavigation`.\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const previouslyFocusedElementRef = React.useRef(null);\n const isPointerDownRef = React.useRef(false);\n const isInsidePortal = portalContext != null;\n\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isTypeableCombobox = domReference && domReference.getAttribute('role') === 'combobox' && isTypeableElement(domReference);\n const getTabbableContent = React.useCallback(function (container) {\n if (container === void 0) {\n container = floating;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n }, [floating]);\n const getTabbableElements = React.useCallback(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floating && type === 'floating') {\n return floating;\n }\n return content;\n }).filter(Boolean).flat();\n }, [domReference, floating, orderRef, getTabbableContent]);\n React.useEffect(() => {\n if (!modal) {\n return;\n }\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floating, activeElement(getDocument(floating))) && getTabbableContent().length === 0 && !isTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floating && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument(floating);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [domReference, floating, modal, orderRef, refs, isTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (!closeOnFocusOut) {\n return;\n }\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n queueMicrotask(() => {\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute('data-floating-ui-focus-guard') || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4;\n return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n })));\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if (relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== previouslyFocusedElementRef.current) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event);\n }\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n !modal && floating.addEventListener('focusout', handleFocusOutside);\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n !modal && floating.removeEventListener('focusout', handleFocusOutside);\n };\n }\n }, [domReference, floating, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut]);\n React.useEffect(() => {\n var _portalContext$portal;\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null ? void 0 : (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll('[data-floating-ui-portal]')) || []);\n function getDismissButtons() {\n return [startDismissButtonRef.current, endDismissButtonRef.current].filter(Boolean);\n }\n if (floating && modal) {\n const insideNodes = [floating, ...portalNodes, ...getDismissButtons()];\n const cleanup = hideOthers(orderRef.current.includes('reference') || isTypeableCombobox ? insideNodes.concat(domReference || []) : insideNodes);\n return () => {\n cleanup();\n };\n }\n }, [domReference, floating, modal, orderRef, portalContext, isTypeableCombobox]);\n React.useEffect(() => {\n if (modal && !guards && floating) {\n const tabIndexValues = [];\n const options = getTabbableOptions();\n const allTabbable = tabbable(getDocument(floating).body, options);\n const floatingTabbable = getTabbableElements();\n\n // Exclude all tabbable elements that are part of the order\n const elements = allTabbable.filter(el => !floatingTabbable.includes(el));\n elements.forEach((el, i) => {\n tabIndexValues[i] = el.getAttribute('tabindex');\n el.setAttribute('tabindex', '-1');\n });\n return () => {\n elements.forEach((el, i) => {\n const value = tabIndexValues[i];\n if (value == null) {\n el.removeAttribute('tabindex');\n } else {\n el.setAttribute('tabindex', value);\n }\n });\n };\n }\n }, [floating, modal, guards, getTabbableElements]);\n index(() => {\n if (!floating) return;\n const doc = getDocument(floating);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floating);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floating;\n const focusAlreadyInsideFloatingEl = contains(floating, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floating\n });\n }\n });\n }, [open, floating, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n index(() => {\n if (!floating) return;\n let preventReturnFocusScroll = false;\n const doc = getDocument(floating);\n const previouslyFocusedElement = activeElement(doc);\n const contextData = dataRef.current;\n previouslyFocusedElementRef.current = previouslyFocusedElement;\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onDismiss(payload) {\n if (payload.type === 'escapeKey' && refs.domReference.current) {\n previouslyFocusedElementRef.current = refs.domReference.current;\n }\n if (['referencePress', 'escapeKey'].includes(payload.type)) {\n return;\n }\n const returnFocus = payload.data.returnFocus;\n if (typeof returnFocus === 'object') {\n preventReturnFocusRef.current = false;\n preventReturnFocusScroll = returnFocus.preventScroll;\n } else {\n preventReturnFocusRef.current = !returnFocus;\n }\n }\n events.on('dismiss', onDismiss);\n return () => {\n events.off('dismiss', onDismiss);\n const activeEl = activeElement(doc);\n const shouldFocusReference = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context5;\n return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n }) || contextData.openEvent && ['click', 'mousedown'].includes(contextData.openEvent.type);\n if (shouldFocusReference && refs.domReference.current) {\n previouslyFocusedElementRef.current = refs.domReference.current;\n }\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && isHTMLElement(previouslyFocusedElementRef.current) && !preventReturnFocusRef.current) {\n enqueueFocus(previouslyFocusedElementRef.current, {\n // When dismissing nested floating elements, by the time the rAF has\n // executed, the menus will all have been unmounted. When they try\n // to get focused, the calls get ignored — leaving the root\n // reference focused as desired.\n cancelPrevious: false,\n preventScroll: preventReturnFocusScroll\n });\n }\n };\n }, [floating, returnFocusRef, dataRef, refs, events, tree, nodeId]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n index(() => {\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n ...context,\n modal,\n closeOnFocusOut,\n open\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [portalContext, modal, open, closeOnFocusOut, context]);\n index(() => {\n if (floating && typeof MutationObserver === 'function') {\n const handleMutation = () => {\n const tabIndex = floating.getAttribute('tabindex');\n if (orderRef.current.includes('floating') || activeElement(getDocument(floating)) !== refs.domReference.current && getTabbableContent().length === 0) {\n if (tabIndex !== '0') {\n floating.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1') {\n floating.setAttribute('tabindex', '-1');\n }\n };\n handleMutation();\n const observer = new MutationObserver(handleMutation);\n observer.observe(floating, {\n childList: true,\n subtree: true,\n attributes: true\n });\n return () => {\n observer.disconnect();\n };\n }\n }, [floating, refs, orderRef, getTabbableContent]);\n function renderDismissButton(location) {\n return visuallyHiddenDismiss && modal ? /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent)\n }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss') : null;\n }\n const shouldRenderGuards = guards && !isTypeableCombobox && (isInsidePortal || modal);\n return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable() || domReference;\n nextTabbable == null ? void 0 : nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null ? void 0 : _portalContext$before.focus();\n }\n }\n }\n }), !isTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable() || domReference;\n prevTabbable == null ? void 0 : prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null ? void 0 : _portalContext$afterO.focus();\n }\n }\n }\n }));\n}\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction areMapsEqual(map1, map2) {\n if (map1.size !== map2.size) {\n return false;\n }\n for (const [key, value] of map1.entries()) {\n if (value !== map2.get(key)) {\n return false;\n }\n }\n return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(_ref) {\n let {\n children,\n elementsRef,\n labelsRef\n } = _ref;\n const [map, setMap] = React.useState(() => new Map());\n const register = React.useCallback(node => {\n setMap(prevMap => new Map(prevMap).set(node, null));\n }, []);\n const unregister = React.useCallback(node => {\n setMap(prevMap => {\n const map = new Map(prevMap);\n map.delete(node);\n return map;\n });\n }, []);\n index(() => {\n const newMap = new Map(map);\n const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n nodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n if (!areMapsEqual(map, newMap)) {\n setMap(newMap);\n }\n }, [map]);\n return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef])\n }, children);\n}\nfunction useListItem(_temp) {\n let {\n label\n } = _temp === void 0 ? {} : _temp;\n const [index$1, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index$1 !== null) {\n elementsRef.current[index$1] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index$1, elementsRef, labelsRef, label]);\n index(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n index(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index$1 == null ? -1 : index$1\n }), [index$1, ref]);\n}\n\nconst identifier = 'data-floating-ui-scroll-lock';\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(_ref, ref) {\n let {\n lockScroll = false,\n ...rest\n } = _ref;\n index(() => {\n var _window$visualViewpor, _window$visualViewpor2;\n if (!lockScroll) {\n return;\n }\n const alreadyLocked = document.body.hasAttribute(identifier);\n if (alreadyLocked) {\n return;\n }\n document.body.setAttribute(identifier, '');\n\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (!/iP(hone|ad|od)|iOS/.test(getPlatform())) {\n Object.assign(document.body.style, {\n overflow: 'hidden',\n [paddingProp]: scrollbarWidth + \"px\"\n });\n return () => {\n document.body.removeAttribute(identifier);\n Object.assign(document.body.style, {\n overflow: '',\n [paddingProp]: ''\n });\n };\n }\n\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n const scrollX = window.pageXOffset;\n const scrollY = window.pageYOffset;\n Object.assign(document.body.style, {\n position: 'fixed',\n overflow: 'hidden',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0',\n [paddingProp]: scrollbarWidth + \"px\"\n });\n return () => {\n Object.assign(document.body.style, {\n position: '',\n overflow: '',\n top: '',\n left: '',\n right: '',\n [paddingProp]: ''\n });\n document.body.removeAttribute(identifier);\n window.scrollTo(scrollX, scrollY);\n };\n }, [lockScroll]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, rest, {\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n }));\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n return React.useMemo(() => {\n if (!enabled) return {};\n return {\n reference: {\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) {\n return;\n }\n if (isMouseLikePointerType(pointerTypeRef.current, true) && ignoreMouse) {\n return;\n }\n if (eventOption === 'click') {\n return;\n }\n if (open) {\n if (toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent);\n }\n },\n onClick(event) {\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerTypeRef.current, true) && ignoreMouse) {\n return;\n }\n if (open) {\n if (toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (event.key === 'Enter') {\n if (open) {\n if (toggle) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open) {\n if (toggle) {\n onOpenChange(false, event.nativeEvent);\n }\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n }\n }\n }\n };\n }, [enabled, dataRef, eventOption, ignoreMouse, keyboardHandlers, domReference, toggle, open, onOpenChange]);\n}\n\n// `toString()` prevents bundlers from trying to `import { useInsertionEffect } from 'react'`\nconst useInsertionEffect = React[/*#__PURE__*/'useInsertionEffect'.toString()];\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nfunction createVirtualElement(domRef, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domRef.current || undefined,\n getBoundingClientRect() {\n var _domRef$current, _data$dataRef$current;\n const domRect = ((_domRef$current = domRef.current) == null ? void 0 : _domRef$current.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n refs,\n dataRef,\n elements: {\n floating\n }\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(refs.domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(refs.floating.current);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(refs.floating.current, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(refs.domReference.current);\n }, [dataRef, enabled, openCheck, refs, setReference, x, y]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n index(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n return React.useMemo(() => {\n if (!enabled) return {};\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n reference: {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n }\n };\n }, [enabled, handleReferenceEnterOrMove]);\n}\n\n/**\n * Check whether the event.target is within the provided node. Uses event.composedPath if available for custom element support.\n *\n * @param event The event whose target/composedPath to check\n * @param node The node to check against\n * @returns Whether the event.target/composedPath is within the node.\n */\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeBubblesProp = bubbles => {\n var _bubbles$escapeKey, _bubbles$outsidePress;\n return {\n escapeKeyBubbles: typeof bubbles === 'boolean' ? bubbles : (_bubbles$escapeKey = bubbles == null ? void 0 : bubbles.escapeKey) != null ? _bubbles$escapeKey : false,\n outsidePressBubbles: typeof bubbles === 'boolean' ? bubbles : (_bubbles$outsidePress = bubbles == null ? void 0 : bubbles.outsidePress) != null ? _bubbles$outsidePress : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n nodeId,\n elements: {\n reference,\n domReference,\n floating\n },\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles\n } = props;\n const tree = useFloatingTree();\n const nested = useFloatingParentNodeId() != null;\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const insideReactTreeRef = React.useRef(false);\n const {\n escapeKeyBubbles,\n outsidePressBubbles\n } = normalizeBubblesProp(bubbles);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n events.emit('dismiss', {\n type: 'escapeKey',\n data: {\n returnFocus: {\n preventScroll: false\n }\n }\n });\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = insideReactTreeRef.current;\n insideReactTreeRef.current = false;\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget(event);\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n // elements.\n const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n if (canScrollY) {\n const isRTL = getWindow(floating).getComputedStyle(target).direction === 'rtl';\n if (isRTL) {\n xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n }\n }\n if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n return;\n }\n }\n const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, floating) || isEventTargetWithin(event, domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n events.emit('dismiss', {\n type: 'outsidePress',\n data: {\n returnFocus: nested ? {\n preventScroll: true\n } : isVirtualClick(event) || isVirtualPointerEvent(event)\n }\n });\n onOpenChange(false, event);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n function onScroll(event) {\n onOpenChange(false, event);\n }\n const doc = getDocument(floating);\n escapeKey && doc.addEventListener('keydown', closeOnEscapeKeyDown);\n outsidePress && doc.addEventListener(outsidePressEvent, closeOnPressOutside);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(domReference)) {\n ancestors = getOverflowAncestors(domReference);\n }\n if (isElement(floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(floating));\n }\n if (!isElement(reference) && reference && reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n escapeKey && doc.removeEventListener('keydown', closeOnEscapeKeyDown);\n outsidePress && doc.removeEventListener(outsidePressEvent, closeOnPressOutside);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n };\n }, [dataRef, floating, domReference, reference, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, closeOnPressOutside]);\n React.useEffect(() => {\n insideReactTreeRef.current = false;\n }, [outsidePress, outsidePressEvent]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n reference: {\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (referencePress) {\n events.emit('dismiss', {\n type: 'referencePress',\n data: {\n returnFocus: false\n }\n });\n onOpenChange(false, event.nativeEvent);\n }\n }\n },\n floating: {\n onKeyDown: closeOnEscapeKeyDown,\n [captureHandlerKeys[outsidePressEvent]]: () => {\n insideReactTreeRef.current = true;\n }\n }\n };\n }, [enabled, events, referencePress, outsidePressEvent, referencePressEvent, onOpenChange, closeOnEscapeKeyDown]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/react\n */\nfunction useFloating(options) {\n var _options$elements;\n if (options === void 0) {\n options = {};\n }\n const {\n open = false,\n onOpenChange: unstable_onOpenChange,\n nodeId\n } = options;\n const [_domReference, setDomReference] = React.useState(null);\n const domReference = ((_options$elements = options.elements) == null ? void 0 : _options$elements.reference) || _domReference;\n const position = useFloating$1(options);\n const tree = useFloatingTree();\n const onOpenChange = useEffectEvent((open, event) => {\n if (open) {\n dataRef.current.openEvent = event;\n }\n unstable_onOpenChange == null ? void 0 : unstable_onOpenChange(open, event);\n });\n const domReferenceRef = React.useRef(null);\n const dataRef = React.useRef({});\n const events = React.useState(() => createPubSub())[0];\n const floatingId = useId();\n const setPositionReference = React.useCallback(node => {\n const positionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n contextElement: node\n } : node;\n position.refs.setReference(positionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n refs,\n elements,\n dataRef,\n nodeId,\n floatingId,\n events,\n open,\n onOpenChange\n }), [position, nodeId, floatingId, events, open, onOpenChange, refs, elements]);\n index(() => {\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n refs,\n elements: {\n floating,\n domReference\n }\n } = context;\n const {\n enabled = true,\n keyboardOnly = true\n } = props;\n const pointerTypeRef = React.useRef('');\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef();\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n const doc = getDocument(floating);\n const win = doc.defaultView || window;\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(domReference) && domReference === activeElement(getDocument(domReference))) {\n blockFocusRef.current = true;\n }\n }\n win.addEventListener('blur', onBlur);\n return () => {\n win.removeEventListener('blur', onBlur);\n };\n }, [floating, domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onDismiss(payload) {\n if (payload.type === 'referencePress' || payload.type === 'escapeKey') {\n blockFocusRef.current = true;\n }\n }\n events.on('dismiss', onDismiss);\n return () => {\n events.off('dismiss', onDismiss);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n reference: {\n onPointerDown(_ref) {\n let {\n pointerType\n } = _ref;\n pointerTypeRef.current = pointerType;\n blockFocusRef.current = !!(pointerType && keyboardOnly);\n },\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n var _dataRef$current$open;\n if (blockFocusRef.current) {\n return;\n }\n\n // Dismiss with click should ignore the subsequent `focus` trigger,\n // but only if the click originated inside the reference element.\n if (event.type === 'focus' && ((_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type) === 'mousedown' && isEventTargetWithin(dataRef.current.openEvent, domReference)) {\n return;\n }\n onOpenChange(true, event.nativeEvent);\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute('data-floating-ui-focus-guard') && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = setTimeout(() => {\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n if (contains(refs.floating.current, relatedTarget) || contains(domReference, relatedTarget) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, event.nativeEvent);\n });\n }\n }\n };\n }, [enabled, keyboardOnly, domReference, refs, dataRef, onOpenChange]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1\n }),\n ...userProps,\n ...propsList.map(value => value ? value[elementKey] : null).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null ? void 0 : _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/react#interaction-hooks\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n // The dependencies are a dynamic array, so we can't use the linter's\n // suggestion to add it to the deps array.\n const deps = propsList;\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // Granularly check for `item` changes, because the `getItemProps` getter\n // should be as referentially stable as possible since it may be passed as\n // a prop to many components. All `item` key values must therefore be\n // memoized.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n propsList.map(key => key == null ? void 0 : key.item));\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n const list = listRef.current;\n let index = startingIndex;\n do {\n var _list$index, _list$index2;\n index = index + (decrement ? -amount : amount);\n } while (index >= 0 && index <= list.length - 1 && (disabledIndices ? disabledIndices.includes(index) : list[index] == null || ((_list$index = list[index]) == null ? void 0 : _list$index.hasAttribute('disabled')) || ((_list$index2 = list[index]) == null ? void 0 : _list$index2.getAttribute('aria-disabled')) === 'true'));\n return index;\n}\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key == ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction getMinIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n refs,\n elements: {\n domReference,\n floating\n }\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n cols = 1,\n scrollItemIntoView = true\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n console.warn(['Floating UI: `useListNavigation` looping must be enabled to allow', 'escaping.'].join(' '));\n }\n if (!virtual) {\n console.warn(['Floating UI: `useListNavigation` must be virtual to allow', 'escaping.'].join(' '));\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n console.warn(['Floating UI: In grid list navigation mode (`cols` > 1), the', '`orientation` should be either \"horizontal\" or \"both\".'].join(' '));\n }\n }\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const onNavigate = useEffectEvent(unstable_onNavigate);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!floating);\n const forceSyncFocus = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const [activeId, setActiveId] = React.useState();\n const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n if (forceScrollIntoView === void 0) {\n forceScrollIntoView = false;\n }\n const item = listRef.current[indexRef.current];\n if (!item) return;\n if (virtual) {\n setActiveId(item.id);\n } else {\n enqueueFocus(item, {\n preventScroll: true,\n // Mac Safari does not move the virtual cursor unless the focus call\n // is sync. However, for the very first focus call, we need to wait\n // for the position to be ready in order to prevent unwanted\n // scrolling. This means the virtual cursor will not move to the first\n // item when first opening the floating element, but will on\n // subsequent calls. `preventScroll` is supported in modern Safari,\n // so we can use that instead.\n // iOS Safari must be async or the first item will not be focused.\n sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n });\n }\n requestAnimationFrame(() => {\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n item.scrollIntoView == null ? void 0 : item.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n index(() => {\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n }, []);\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n index(() => {\n if (!enabled) {\n return;\n }\n if (open && floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n onNavigate(selectedIndex);\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current(null);\n }\n }, [enabled, open, floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n index(() => {\n if (!enabled) {\n return;\n }\n if (open && floating) {\n if (activeIndex == null) {\n forceSyncFocus.current = false;\n if (selectedIndex != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n }\n\n // Initial sync.\n if (!previousMountedRef.current && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate(indexRef.current);\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n forceScrollIntoViewRef.current = false;\n }\n }\n }, [enabled, open, floating, activeIndex, selectedIndex, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n index(() => {\n if (!enabled) {\n return;\n }\n if (previousMountedRef.current && !floating && tree) {\n var _nodes$find, _nodes$find$context;\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null ? void 0 : (_nodes$find$context = _nodes$find.context) == null ? void 0 : _nodes$find$context.elements.floating;\n const activeEl = activeElement(getDocument(floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl) {\n parent.focus({\n preventScroll: true\n });\n }\n }\n }, [enabled, floating, tree, parentId]);\n index(() => {\n previousOnNavigateRef.current = onNavigate;\n previousMountedRef.current = !!floating;\n });\n index(() => {\n if (!open) {\n keyRef.current = null;\n }\n }, [open]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!open) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1) {\n onNavigate(index);\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n ...(focusItemOnHover && {\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n syncCurrentTarget(currentTarget);\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n onNavigate(null);\n if (!virtual) {\n enqueueFocus(refs.floating.current, {\n preventScroll: true\n });\n }\n }\n })\n };\n return props;\n }, [open, refs, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n const disabledIndices = disabledIndicesRef.current;\n function onKeyDown(event) {\n isPointerModalityRef.current = false;\n forceSyncFocus.current = true;\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === refs.floating.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent);\n if (isHTMLElement(domReference)) {\n domReference.focus();\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinIndex(listRef, disabledIndices);\n const maxIndex = getMaxIndex(listRef, disabledIndices);\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(indexRef.current);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(indexRef.current);\n }\n\n // Grid navigation.\n if (cols > 1) {\n const prevIndex = indexRef.current;\n if (event.key === ARROW_UP) {\n stopEvent(event);\n if (prevIndex === -1) {\n indexRef.current = maxIndex;\n } else {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || indexRef.current < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n indexRef.current = maxIndex;\n } else {\n indexRef.current = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n indexRef.current = prevIndex;\n }\n onNavigate(indexRef.current);\n }\n if (event.key === ARROW_DOWN) {\n stopEvent(event);\n if (prevIndex === -1) {\n indexRef.current = minIndex;\n } else {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n indexRef.current = prevIndex;\n }\n onNavigate(indexRef.current);\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = Math.floor(prevIndex / cols);\n if (event.key === ARROW_RIGHT) {\n stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = prevIndex;\n }\n }\n if (event.key === ARROW_LEFT) {\n stopEvent(event);\n if (prevIndex % cols !== 0) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices,\n decrement: true\n });\n if (loop && isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n indexRef.current = findNonDisabledIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentRow(indexRef.current, cols, prevRow)) {\n indexRef.current = prevIndex;\n }\n }\n const lastRow = Math.floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n if (loop && lastRow) {\n indexRef.current = event.key === ARROW_LEFT ? maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n indexRef.current = prevIndex;\n }\n }\n onNavigate(indexRef.current);\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(indexRef.current);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n onNavigate(null);\n } else {\n onNavigate(indexRef.current);\n }\n }\n }\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n const ariaActiveDescendantProp = virtual && open && hasActiveIndex && {\n 'aria-activedescendant': activeId\n };\n return {\n reference: {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.indexOf('Arrow') === 0;\n if (virtual && open) {\n return onKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n const isNavigationKey = isArrowKey || event.key === 'Enter' || event.key.trim() === '';\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isCrossKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n if (isNavigationKey) {\n keyRef.current = nested && isMainKey ? null : event.key;\n }\n if (nested) {\n if (isCrossKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinIndex(listRef, disabledIndices);\n onNavigate(indexRef.current);\n } else {\n onOpenChange(true, event.nativeEvent);\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent);\n } else {\n onKeyDown(event);\n }\n if (open) {\n onNavigate(indexRef.current);\n }\n }\n },\n onFocus() {\n if (open) {\n onNavigate(null);\n }\n },\n onPointerDown: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n },\n floating: {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...ariaActiveDescendantProp,\n onKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n },\n item\n };\n }, [domReference, refs, activeId, disabledIndicesRef, latestOpenRef, listRef, enabled, orientation, rtl, virtual, open, hasActiveIndex, nested, selectedIndex, openOnArrowKeyDown, allowEscape, cols, loop, focusItemOnOpen, onNavigate, onOpenChange, item]);\n}\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nfunction useMergeRefs(refs) {\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n refs.forEach(ref => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n floatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const referenceId = useId();\n return React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n role\n };\n if (!enabled) {\n return {};\n }\n if (role === 'tooltip') {\n return {\n reference: {\n 'aria-describedby': open ? floatingId : undefined\n },\n floating: floatingProps\n };\n }\n return {\n reference: {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': role === 'alertdialog' ? 'dialog' : role,\n 'aria-controls': open ? floatingId : undefined,\n ...(role === 'listbox' && {\n role: 'combobox'\n }),\n ...(role === 'menu' && {\n id: referenceId\n })\n },\n floating: {\n ...floatingProps,\n ...(role === 'menu' && {\n 'aria-labelledby': referenceId\n })\n }\n };\n }, [enabled, role, open, floatingId, referenceId]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [initiated, setInitiated] = React.useState(false);\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n\n // `initiated` check prevents this `setState` call from breaking\n // <FloatingPortal />. This call is necessary to ensure subsequent opens\n // after the initial one allows the correct side animation to play when the\n // placement has changed.\n index(() => {\n if (initiated && !isMounted) {\n setStatus('unmounted');\n }\n }, [initiated, isMounted]);\n index(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n setStatus('open');\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n } else {\n setInitiated(true);\n setStatus('close');\n }\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n index(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n index(() => {\n if (open) {\n clearTimeout(timeoutIdRef.current);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n index(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n function setTypingChange(value) {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n }\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n function onKeyDown(event) {\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n }\n return {\n reference: {\n onKeyDown\n },\n floating: {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n }\n };\n }, [enabled, open, dataRef, listRef, resetMs, ignoreKeysRef, findMatchRef, onMatch, onTypingChange]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside\n * of it is anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = props;\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n console.warn(['Floating UI: `placement` side must be \"bottom\" when using the', '`inner` middleware.'].join(' '));\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const el = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, el.scrollHeight), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = Math.max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const maxHeight = Math.max(0, el.scrollHeight - diffY - Math.max(0, overflow.bottom));\n el.style.maxHeight = maxHeight + \"px\";\n el.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n if (el.offsetHeight < item.offsetHeight * Math.min(minItemsVisible, listRef.current.length - 1) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold) {\n flushSync(() => onFallbackChange(true));\n } else {\n flushSync(() => onFallbackChange(false));\n }\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, el.offsetHeight), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n floating: {\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }\n };\n }, [enabled, overflowRef, elements.floating, scrollRef, onChange]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safePolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n let timeoutId;\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = performance.now();\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeout(timeoutId);\n onClose();\n }\n clearTimeout(timeoutId);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n let {\n context\n } = _ref2;\n return context == null ? void 0 : context.open;\n })) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref3) {\n let [x, y] = _ref3;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n } else if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutId = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import * as React from \"react\"\nimport { forwardRef, useEffect, useRef, useState } from \"react\"\nimport styled from \"@emotion/styled\"\nimport { css } from \"@emotion/react\"\nimport {\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\"\nimport Popper from \"../Popper\"\n\nconst Tooltip = forwardRef((props, ref) => {\n const {\n content,\n onOpen,\n onClose,\n onChange,\n open: controlledOpen,\n defaultOpen,\n children,\n cursor,\n toggleMethod,\n withArrow,\n placement,\n ...popper\n } = props\n const [isOpen, setOpen] = useState(!!(defaultOpen ?? controlledOpen))\n const arrowRef = useRef(null)\n\n const handleOpen = () => {\n if (toggleMethod !== \"click\") {\n if (typeof controlledOpen !== \"boolean\") {\n setOpen(true)\n }\n if (onOpen) onOpen()\n }\n }\n\n const handleClose = () => {\n if (toggleMethod !== \"click\") {\n if (typeof controlledOpen !== \"boolean\") {\n setOpen(false)\n }\n if (onClose) onClose()\n }\n }\n\n useEffect(() => {\n if (typeof controlledOpen === \"boolean\") setOpen(controlledOpen)\n }, [controlledOpen])\n\n const {\n refs,\n floatingStyles,\n context,\n middlewareData,\n placement: realPlacement,\n } = useFloating({\n open: isOpen,\n onOpenChange: setOpen,\n middleware: [\n offset(),\n flip(),\n shift({ padding: 6 }),\n ...(withArrow\n ? [\n arrow({\n element: arrowRef,\n }),\n ]\n : []),\n ],\n placement,\n whileElementsMounted: autoUpdate,\n })\n\n const click = useClick(context)\n const dismiss = useDismiss(context)\n const role = useRole(context)\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n dismiss,\n role,\n ...(toggleMethod === \"click\" ? [click] : []),\n ])\n\n useEffect(() => {\n setOpen(!!controlledOpen)\n }, [controlledOpen])\n\n useEffect(() => {\n if (onChange) onChange(!!isOpen)\n }, [isOpen])\n\n return (\n <StyledWrapper onMouseLeave={handleClose} ref={ref}>\n <StyledContentWrapper\n onMouseEnter={handleOpen}\n ref={refs.setReference}\n cursor={cursor}\n {...getReferenceProps()}\n >\n <StyledContent>{children}</StyledContent>\n </StyledContentWrapper>\n <Popper\n open={isOpen}\n {...popper}\n ref={refs.setFloating}\n arrowRef={arrowRef}\n style={floatingStyles}\n withArrow={withArrow}\n arrowPosition={middlewareData.arrow}\n realPlacement={realPlacement}\n {...getFloatingProps()}\n >\n {content}\n </Popper>\n </StyledWrapper>\n )\n})\n\nexport default Tooltip\n\nconst containerCSS = css`\n display: inline-flex;\n width: fit-content;\n height: fit-content;\n max-width: 100%;\n`\n\nconst StyledWrapper = styled.div`\n ${containerCSS};\n position: relative;\n`\n\nconst StyledContentWrapper = styled.div`\n ${containerCSS};\n cursor: ${({ cursor }) => cursor};\n z-index: 1;\n`\n\nconst StyledContent = styled.div`\n ${containerCSS};\n z-index: -1;\n`\n","import React from \"react\"\r\nimport styled from \"@emotion/styled\"\r\nimport Container from \"../Container\"\r\nimport Caption from \"../Caption\"\r\nimport { theme } from \"../../theme\"\r\n\r\nconst ErrorComponent = ({ message, icon, ...otherProps }) => (\r\n <Container {...otherProps}>\r\n <StyledTitle>{message}</StyledTitle>\r\n <StyledIconWrapper>{icon}</StyledIconWrapper>\r\n </Container>\r\n)\r\n\r\nexport default ErrorComponent\r\n\r\nconst StyledTitle = styled(Caption)`\r\n font-size: 24px;\r\n line-height: 32px;\r\n margin: 104px auto 16px;\r\n text-align: center;\r\n max-width: 530px;\r\n @media (max-width: ${theme.breakpoints.sm}px) {\r\n font-size: 16px;\r\n line-height: 24px;\r\n }\r\n`\r\n\r\nconst StyledIconWrapper = styled.div`\r\n svg {\r\n width: 100%;\r\n height: auto;\r\n min-height: 200px;\r\n max-height: calc(100vh - 200px);\r\n }\r\n`\r\n"],"names":["colors","primary","main","pressed","hover","light","light2","secondary","gray60","gray50","gray40","gray30","gray15","white","disabled","background","light3","success","green70","green60","green10","green5","error","red70","red60","red10","red5","info","blue70","blue60","blue10","blue5","purple","purple70","purple60","purple10","purple5","shadows","shadow1","shadow2","shadow3","shadow4","breakpoints","xxs","xs","sm","md","lg","xl","settings","spacing","columns","themeOld","palette","theme","brand","_objectSpread","grey","seventy","sixty","fiftyP","fourty","thirty","fifteenB","zero","light1","light4","green","ten","five","red","blue","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","window","b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","typeOf","object","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isAsyncMode","console","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","require$$0","require$$1","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","map","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","val","TypeError","toObject","s","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","getPropType","element","elementType","ReactIs","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","require$$2","headingSizes","hero","h1","h2","h3","h4","headingVariants","size","height","mobSize","mobHeight","Heading","forwardRef","ref","children","className","otherProps","_objectWithoutProperties","_excluded","_jsx","StyledHeading","as","defaultProps","color","colorGroup","disableUserSelect","weight","propTypes","headingSettingsCSS","css","align","_styled","label","captionSizes","high","Caption","StyledCaption","variant","displayName","captionSettingsCSS","_ref","disSelect","textVariants","Text","StyledText","textSettingsCSS","buttonSizes","buttonBorders","lightGray","lightOrange","buttonVariants","active","orange","hoverColor","border","whiteWithOrangeHover","whiteWithGray","whiteWithBrand","grayLightWithBorder","grayLight","grayDark","backgroundLight","backgroundWithBorder","blur","backdrop","blurDark","transparent","withoutShadow","orangeWithHoverLight","orangeWithBorder","transparentLight","transparentWithBorder","transparentWithDarkBorder","transparentWithBoldBorder","Button","fullWidth","isCircle","captionSize","disabledStyle","startIcon","endIcon","captionWeight","withoutChildrenWrapper","buttonProps","StyledButton","StyledCircleButtonContainer","_jsxs","StyledContentContainer","withIcon","StyledStartIcon","StyledEndIcon","circleButtonCSS","_ref2","buttonSettingsCSS","buttonVariantCSS","concat","styles","_EMOTION_STRINGIFIED_CSS_ERROR__","iconContainerCSS","_ref3","ErrorIcon","width","viewBox","fill","xmlns","fillRule","clipRule","WarningIcon","SuccessIcon","messageVariants","icon","warning","InputMessage","_messageRef$current2","msg","messageRef","useRef","_useState2","_slicedToArray","useState","messageRefHeight","setMessageRefHeight","useEffect","_messageRef$current","current","clientHeight","StyledMessage","style","bottom","StyledIconWrapper","StyledTitle","messageVariantCSS","TextareaGrabIcon","useForkRef","_len","refs","_key","React","useMemo","instance","setRef","Input","isTextArea","inputRefProp","inputRef","inputStyles","labelStyles","messageClassName","labelInlineStyles","messageVariant","rows","placeholder","inputProps","isFilled","setIsFilled","isInvalid","forwardedRef","autoHeight","scrollHeight","_inputRef$current","commonProps","onInput","currentValue","replace","withMessage","withLabel","StyledContainer","StyledTextarea","StyledInput","StyledInputLabel","StyledTextareaIcon","labelActiveCSS","inputStates","inputCSS","inputStateCSS","InputWithAdornments","_startIconRef$current2","_endIconRef$current2","cornerLabel","startIconRef","endIconRef","startIconWidth","setStartIconWidth","_useState4","endIconWidth","setEndIconWidth","labelWidth","getLabelWidth","inputStyle","paddingLeft","paddingRight","labelStyle","left","maxWidth","_startIconRef$current","clientWidth","_endIconRef$current","isCornerLabel","StyledCornerLabel","errorMessage","cornerLabelCSS","StyledIcon","isString","str","isObject","obj","_obj$constructor","pick","_","includes","reduce","acc","DIRECTION","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","escapeRegExp","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","ActionDetails","opts","slice","startChangePos","oldValue","oldSelection","start","Math","min","cursorPos","insertedCount","inserted","substr","removedCount","max","end","removed","head","substring","tail","removeDirection","IMask","el","InputMask","maskedClass","mask","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","Masked","MaskedFunction","warn","normalizeOpts","instanceOpts","_mask","startsWith","createMask","nOpts","MaskedClass","MaskElement","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","HTMLMaskElement","input","super","_handlers","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","document","activeElement","bindEvents","handlers","event","_toggleEventHandler","EVENTS_MAP","unbindEvents","handler","removeEventListener","addEventListener","selectionChange","drop","click","focus","commit","HTMLInputMaskElement","setSelectionRange","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","typedValue","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","listeners","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newDisplayValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","isComplete","clearTimeout","nearestInputPos","on","off","hIndex","indexOf","splice","details","oldRawValue","rawInputValue","offset","raw","doCommit","preventDefault","stopPropagation","destroy","ChangeDetails","static","prep","rawInserted","skip","tailShift","aggregate","ContinuousTailDetails","stop","extend","appendTo","append","_appendPlaceholder","state","unshift","beforePos","shiftChar","shift","_update","DEFAULTS","_initialized","withValueRefresh","_rawInputValue","reset","resolve","flags","parse","format","extractInput","direction","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","doSkipInvalid","eager","remove","fn","_refreshing","rawInput","ret","runIsolated","_isolated","Boolean","skipInvalid","normalize","prepare","prepareChar","parent","deleteCount","tailPos","eagerRemove","forceDirection","valLength","tval","EMPTY_VALUES","undefined","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","index","_stops","phDetails","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","ok","block","_blockStartPos","pushState","popState","pop","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","PatternFixedDefinition","isUnmasking","_isRawInput","maxPos","appendEager","isResolved","char","PatternInputDefinition","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","search","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","bNames","filter","bName","sort","expose","blockOpts","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_matchFrom","maxLength","autofix","patternOpts","fromStr","padStart","toStr","sameCharsCount","repeat","boundaries","minstr","maxstr","num","match","padEnd","nextVal","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","getMonth","getDate","bk","date","isDateExist","day","month","year","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","i1","i2","MaskedEnum","enum","_enum","eopts","lengths","requiredLength","optionalLength","some","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","isNaN","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","test","dropFractional","UNMASKED_RADIX","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","pipe","globalThis","MASK_PROPS","unmask","onAccept","onComplete","MASK_PROPS_NAMES","NON_MASK_OPTIONS_PROPS_NAMES","MASK_OPTIONS_PROPS_NAMES","pName","IMaskMixin","ComposedComponent","_class","MaskedComponent","Component","_inputRef","componentDidMount","initMask","componentDidUpdate","maskOptions","_extractMaskOptionsFromProps","_this$element","maskRef","maskValue","destroyMask","componentWillUnmount","_onAccept","_onComplete","cloneProps","prop","nonMaskProp","_extractNonMaskProps","maskProp","defaultValue","render","createElement","nestedComponentName","IMaskInputClass","MaskedField","InputWithMask","onChange","onFocus","onBlur","other","_excluded2","formattedValue","_ref$current","_ref$current2","_ref$current3","CountryItem","item","selectCountryIndex","countryIcon","nameCode","toUpperCase","fromCodePoint","charCodeAt","StyledCountry","onClick","StyledCountryName","nameRus","StyledCountryPhone","phoneCode","SearchIcon","Dropdown","isOpen","setIsOpenDropDown","buttonRef","countries","filteredCountries","setFilteredCountries","dropdownRef","closePopUp","contains","_buttonRef$current","inputWrapper","parentElement","zIndex","StyledSearchWrapper","StyledSearch","StyledSearchInput","query","toLowerCase","StyledDropdown","HalfArrowIcon","InputWithCountryDropdown","onSelectCountry","hiddenInputProps","selectedCountryCode","selectedCountryIndex","findIndex","country","selectedCountry","setSelectedCountry","isDropdownOpen","setIsDropdownOpen","StyledDropdownWrapper","StyledPhoneCodeButton","StyledPhoneCodeIcon","isReverse","display","readOnly","Checkbox","checkboxProps","StyledLabel","StyledCheckbox","StyledCustomCheckbox","StyledCheckboxLabel","errorCSS","CloseIcon","Modal","handleClose","isScrollable","title","description","isHasHeader","modalRef","modalBaseRef","body","classList","add","createPortal","Global","StyledModal","StyledHeaderWrapper","StyledModalTitle","StyledDescriptionWrapper","StyledDescription","StyledHeadingIconsWrapper","switchVariants","before","Switch","switchProps","StyledSwitch","StyledCustomSwitch","StyledSwitchLabel","switchVariantCSS","switchErrorCSS","Radio","checked","isSquare","radioProps","StyledRadio","StyledCustomRadio","StyledRadioLabel","FileIcon","InputFile","setValue","StyledWrapper","files","titleActiveCSS","Divider","StyledDivider","Container","Grid","container","StyledGrid","justify","alignItems","alignContent","containerCSS","wrap","containerSpacingCSS","itemSizeCSS","_excluded3","Box","StyledBox","pt","pb","pr","pl","mt","mb","mr","ml","_ref4","_ref5","_ref6","_ref7","_ref8","Accordion","expanded","detailsBlock","_React$Children$toArr","Children","toArray","_React$Children$toArr2","summary","otherChildren","StyledAccordion","cloneElement","StyledCollapse","onTransitionEnd","AccordionSummary","defaultExpanded","expandIcon","contentStyles","expandedStyles","iconStyles","setExpanded","_detailsBlock$current","_detailsBlock$current2","getComputedStyle","getPropertyValue","StyledAccordionSummary","prev","StyledSummaryContent","StyledSummaryIcon","shouldForwardProp","AccordionDetails","Skeleton","StyledSkeleton","waveAnim","keyframes","_templateObject","_taggedTemplateLiteral","AppBar","StyledAppBar","fixesBarCSS","ToolBar","StyledTollBar","CircularProgress","svgStyles","circleStyles","StyledProgress","StyledSVG","StyledCircle","cx","cy","strokeWidth","rotateAnimate","circleAnimate","_templateObject2","LinearProgress","progressBarStyles","StyledLinearProgress","StyledLinearProgressBar","transform","nextItem","list","nextElementSibling","previousItem","previousElementSibling","moveFocus","currentFocus","traversalFunction","Tabs","indicatorPos","indicatorHidden","childrenProp","tabListRef","indicatorStyles","setIndicatorStyles","child","childIndex","childValue","selected","_tabListRef$current","selectedTab","offsetLeft","StyledTabs","StyledTabList","tabIndex","role","onKeyDown","currFocus","ownerDocument","StyledTabsIndicator","hidden","position","indicatorPositionsCSS","top","Tab","tabRef","StyledTab","id","elem","TabsPanel","tabs","tabPanels","paths","activeTab","endComponent","navigate","_React$useState2","tabsRef","StyledTabsWrapper","_tabsRef$current","history","route","scrollTo","behavior","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","global","freeSelf","self","objectToString","nativeMax","nativeMin","now","debounce","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","toNumber","cancel","flush","isObjectLike","valueOf","isBinary","lodash_throttle","defineProperty","addPassiveEventListener","eventName","listener","supportsPassiveOption","get","passive","removePassiveEventListener","_lodash2","_lodash","__esModule","scrollSpy","spyCallbacks","spySetState","scrollSpyContainers","mount","scrollSpyContainer","throttle","eventHandler","throttleAmount","eventThrottler","scrollHandler","_passiveEventListeners","isMounted","currentPositionX","supportPageOffset","pageYOffset","isCSS1Compat","compatMode","pageXOffset","documentElement","scrollLeft","currentPositionY","scrollTop","addStateHandler","addSpyHandler","updateStates","unmount","stateHandler","spyHandler","update","getElementOffsetInfoUntil","predicate","offsetTop","currentOffsetParent","offsetParent","updateHash","hash","historyUpdate","hashVal","hashToUpdate","curLoc","urlToPush","pathname","replaceState","getHash","filterElementInContainer","compareDocumentPosition","scrollOffset","horizontal","getBoundingClientRect","scrollX","scrollY","_getElementOffsetInfo","isDocument","defaultEasing","pow","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","events","subscribe","cancelEvent","Events","registered","scrollEvent","register","evtName","callback","_extends","_interopRequireDefault","_utils","_smooth2","_smooth","_cancelEvents2","_cancelEvents","_scrollEvents2","_scrollEvents","getAnimationType","smooth","requestAnimationFrameHelper","requestAnimationFrame","webkitRequestAnimationFrame","currentWindowProperties","delay","containerElement","animateScroll","easing","timestamp","ignoreCancelEvents","delta","round","targetPosition","startPosition","progress","percent","duration","currentPosition","ceil","easedAnimate","setContainer","containerId","getElementById","nodeType","animateTopScroll","delayTimeout","absolute","parseFloat","proceedOptions","scrollToTop","scrollToBottom","scrollWidth","offsetWidth","html","scrollContainerWidth","offsetHeight","scrollContainerHeight","toPosition","scrollMore","_utils2","_animateScroll2","_animateScroll","__mapped","__activeLink","unregister","getElementsByName","getElementsByClassName","setActiveLink","link","getActiveLink","scrollHash","mountFlag","initialized","scroller","containers","handleHashChange","initStateFromHash","mapContainer","isInitialized","_this","isInit","changeHash","saveHashHistory","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_react","_scrollSpy2","_scrollSpy","_scroller2","_scroller","_propTypes2","_propTypes","_scrollHash2","_scrollHash","protoTypes","activeClass","activeStyle","spy","isDynamic","onSetActive","onSetInactive","hashSpy","spyThrottle","customScroller","Link","_React$PureComponent","_classCallCheck","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","_initialiseProps","subClass","superClass","create","setPrototypeOf","_inherits","getScrollSpyContainer","setState","trim","handleClick","PureComponent","_this2","isInside","isOutside","elemLeftBound","elemRightBound","containerLeft","cords","offsetX","floor","elemTopBound","elemBottomBound","containerTop","_cords","offsetY","activeLink","_props$saveHashHistor","_props$saveHashHistor2","_saveHashHistory","_scrollLink2","_scrollLink","LinkElement","_React$Component","_temp","ButtonElement","_reactDom","childBindings","domNode","registerElems","prevProps","parentBindings","_scrollElement2","_scrollElement","ElementWrapper","newProps","Helpers","Scroll","defaultScroller","_React$Component2","_this3","Helpers_1","ScrollLink","_Link2","_Link","_Button2","_Button","_Element2","_Element","_Helpers2","_Helpers","ScrollElement","ScrollTab","isScrolling","setIsScrolling","setIsIndicatorHidden","setIsActive","activeRef","scrollingRef","handleSelect","endScrolling","StyledScrollTab","MenuPanel","tabsId","isIndicatorHidden","_useState6","IconButton","Popper","open","withArrow","withoutMobile","arrowRef","arrowPosition","realPlacement","arrowPlacement","StyledPopperWrapper","StyledPopper","StyledArrow","getAlignment","placement","getLengthFromAxis","axis","getSide","getMainAxisFromPlacement","computeCoordsFromPlacement","rtl","reference","floating","commonX","commonY","mainAxis","commonAlign","isVertical","coords","evaluate","param","getSideObjectFromPadding","padding","right","expandPaddingObject","rectToClientRect","rect","async","detectOverflow","_await$platform$isEle","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","within","min$1","max$1","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","center","alignmentOffset","centerOffset","oppositeSideMap","getOppositePlacement","side","oppositeAlignmentMap","getOppositeAlignmentPlacement","alignment","flip","_middlewareData$flip","middlewareData","initialPlacement","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","detectOverflowOptions","isBasePlacement","isRTL","oppositePlacement","getExpandedPlacements","isStart","lr","rl","tb","bt","getSideList","getOppositeAxisPlacements","placements","overflow","overflows","overflowsData","cross","mainAlignmentSide","getAlignmentSides","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$map$so","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","alignmentAxis","convertValueToCoords","getWindow","_node$ownerDocument","defaultView","getComputedStyle$1","Node","getNodeName","nodeName","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","overflowY","isTableElement","isContainingBlock","safari","isSafari","perspective","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","createEmptyCoords","getCssDimensions","hasOffset","shouldFallback","$","unwrapElement","domElement","isFinite","noOffsets","getVisualOffsets","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","clientTop","paddingTop","getNodeScroll","getWindowScrollBarX","getParentNode","assignedSlot","parentNode","host","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","scroll","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","set","getClippingElementAncestors","_c","firstClippingAncestor","clippingRect","accRect","getOffsetParentFn","getDimensionsFn","getClientRects","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","threshold","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","ratio","intersectionRatio","rootMargin","observe","observeMove","frameId","resizeObserver","ResizeObserver","prevRefRect","frameLoop","nextRefRect","cancelAnimationFrame","computePosition","Map","mergedOptions","platformWithCache","config","middleware","validMiddleware","getElementRects","statefulPlacement","resetCount","nextX","nextY","computePosition$1","arrow$1","useLayoutEffect","deepEqual","getDPR","devicePixelRatio","roundByDPR","dpr","useLatestRef","serverHandoffComplete","genId","useId","setId","FloatingNodeContext","createContext","FloatingTreeContext","useFloatingTree","useContext","getDocument","isVirtualClick","mozInputSource","isTrusted","androidRe","uaData","navigator","userAgentData","getPlatform","brands","version","userAgent","getUserAgent","pointerType","buttons","detail","isVirtualPointerEvent","pressure","isMouseLikePointerType","strict","getChildren","nodes","allChildren","_node$context","parentId","context","currentChildren","_currentChildren","_node$context2","TYPEABLE_SELECTOR","isButtonTarget","isSpaceIgnored","matches","isTypeableElement","useSafeInsertionEffect","useEffectEvent","useCallback","isEventTargetWithin","composedPath","bubbleHandlerKeys","pointerdown","mousedown","captureHandlerKeys","useDismiss","onOpenChange","nodeId","domReference","dataRef","enabled","escapeKey","outsidePress","unstable_outsidePress","outsidePressEvent","referencePress","referencePressEvent","bubbles","tree","nested","_React$useContext","outsidePressFn","insideReactTreeRef","escapeKeyBubbles","outsidePressBubbles","_bubbles$escapeKey","_bubbles$outsidePress","normalizeBubblesProp","closeOnEscapeKeyDown","nodesRef","shouldDismiss","_child$context","__escapeKeyBubbles","emit","returnFocus","preventScroll","isReactEvent","nativeEvent","closeOnPressOutside","insideReactTree","getTarget","canScrollX","canScrollY","xCond","targetIsInsideChildren","_child$context2","__outsidePressBubbles","onScroll","doc","_doc$defaultView","useFloating","_options$elements","unstable_onOpenChange","_domReference","setDomReference","externalReference","externalFloating","whileElementsMounted","setData","isPositioned","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","whileElementsMountedRef","platformRef","then","fullData","isMountedRef","ReactDOM","flushSync","floatingStyles","initialStyles","useFloating$1","openEvent","domReferenceRef","_map$get","_map$get2","createPubSub","floatingId","setPositionReference","positionReference","find","mergeProps","userProps","propsList","elementKey","Tooltip","content","onOpen","onClose","controlledOpen","defaultOpen","toggleMethod","popper","setOpen","_useFloating","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_toConsumableArray","eventOption","toggle","ignoreMouse","keyboardHandlers","pointerTypeRef","didKeyDownRef","onPointerDown","onMouseDown","button","defaultPrevented","onKeyUp","useClick","dismiss","referenceId","floatingProps","useRole","_useInteractions","deps","getReferenceProps","getFloatingProps","getItemProps","useInteractions","onMouseLeave","StyledContentWrapper","onMouseEnter","StyledContent","ErrorComponent"],"mappings":"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"}