@moveo-ai/web-client 0.15.2
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/README.md +17 -0
- package/dist/index.html +38 -0
- package/dist/report.html +38 -0
- package/dist/stats.html +196 -0
- package/dist/web-client.min.js +3 -0
- package/dist/web-client.min.js.LICENSE.txt +30 -0
- package/dist/web-client.min.js.map +1 -0
- package/package.json +175 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-client.min.js","mappings":"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","sources":["webpack://MoveoAI/webpack/universalModuleDefinition","webpack://MoveoAI/./node_modules/keen-slider/keen-slider.min.css","webpack://MoveoAI/./src/components/App/App.scss","webpack://MoveoAI/./src/components/AppContainer/AppContainer.module.scss","webpack://MoveoAI/./src/components/Avatar/Avatar.module.scss","webpack://MoveoAI/./src/components/Button/Button.module.scss","webpack://MoveoAI/./src/components/ChatContainer/ChatContainer.module.scss","webpack://MoveoAI/./src/components/ChatContainer/Survey.module.scss","webpack://MoveoAI/./src/components/ChatEvent/ChatEvent.module.scss","webpack://MoveoAI/./src/components/ChatEvent/DeliverInfo.module.scss","webpack://MoveoAI/./src/components/ChatEvents/EmptyMessage.module.scss","webpack://MoveoAI/./src/components/Header/Dropdown.module.scss","webpack://MoveoAI/./src/components/Header/Header.module.scss","webpack://MoveoAI/./src/components/Icons/BubbleIcon.module.scss","webpack://MoveoAI/./src/components/Icons/EmptyIcon.module.scss","webpack://MoveoAI/./src/components/Icons/LoadingIcon.module.scss","webpack://MoveoAI/./src/components/Icons/StatusDotIcon.module.scss","webpack://MoveoAI/./src/components/Input/Input.module.scss","webpack://MoveoAI/./src/components/Launcher/Launcher.module.scss","webpack://MoveoAI/./src/components/Message/Carousel/Card.module.scss","webpack://MoveoAI/./src/components/Message/Carousel/Carousel.module.scss","webpack://MoveoAI/./src/components/Message/Message.module.scss","webpack://MoveoAI/./src/components/Message/Webview/WebviewContainer.module.scss","webpack://MoveoAI/./src/components/Message/Webview/WebviewModal/WebviewModal.module.scss","webpack://MoveoAI/./src/components/Message/Webview/WebviewResponse.module.scss","webpack://MoveoAI/./src/components/MessageInput/MessageInput.module.scss","webpack://MoveoAI/./src/components/OpeningMessage/OpeningMessage.module.scss","webpack://MoveoAI/./src/components/PoweredBy/PoweredBy.module.scss","webpack://MoveoAI/./src/components/WelcomeFields/WelcomeFields.module.scss","webpack://MoveoAI/./src/components/WelcomeScreen/Starter.module.scss","webpack://MoveoAI/./src/components/WelcomeScreen/WelcomeGreeting.module.scss","webpack://MoveoAI/./src/styles/styles.scss","webpack://MoveoAI/./node_modules/@socket.io/component-emitter/index.js","webpack://MoveoAI/./node_modules/backo2/index.js","webpack://MoveoAI/./node_modules/classnames/index.js","webpack://MoveoAI/./node_modules/css-loader/dist/runtime/api.js","webpack://MoveoAI/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://MoveoAI/./node_modules/debug/src/browser.js","webpack://MoveoAI/./node_modules/debug/src/common.js","webpack://MoveoAI/./node_modules/exenv/index.js","webpack://MoveoAI/./node_modules/has-cors/index.js","webpack://MoveoAI/./node_modules/ms/index.js","webpack://MoveoAI/./node_modules/parseqs/index.js","webpack://MoveoAI/./node_modules/parseuri/index.js","webpack://MoveoAI/./node_modules/preact/hooks/src/index.js","webpack://MoveoAI/./node_modules/preact/compat/src/util.js","webpack://MoveoAI/./node_modules/preact/compat/src/PureComponent.js","webpack://MoveoAI/./node_modules/preact/compat/src/memo.js","webpack://MoveoAI/./node_modules/preact/compat/src/forwardRef.js","webpack://MoveoAI/./node_modules/preact/compat/src/Children.js","webpack://MoveoAI/./node_modules/preact/compat/src/suspense.js","webpack://MoveoAI/./node_modules/preact/compat/src/suspense-list.js","webpack://MoveoAI/./node_modules/preact/compat/src/portals.js","webpack://MoveoAI/./node_modules/preact/compat/src/render.js","webpack://MoveoAI/./node_modules/preact/compat/src/index.js","webpack://MoveoAI/./node_modules/preact/src/constants.js","webpack://MoveoAI/./node_modules/preact/src/util.js","webpack://MoveoAI/./node_modules/preact/src/options.js","webpack://MoveoAI/./node_modules/preact/src/create-element.js","webpack://MoveoAI/./node_modules/preact/src/component.js","webpack://MoveoAI/./node_modules/preact/src/create-context.js","webpack://MoveoAI/./node_modules/preact/src/diff/children.js","webpack://MoveoAI/./node_modules/preact/src/diff/props.js","webpack://MoveoAI/./node_modules/preact/src/diff/index.js","webpack://MoveoAI/./node_modules/preact/src/render.js","webpack://MoveoAI/./node_modules/preact/src/clone-element.js","webpack://MoveoAI/./node_modules/preact/src/diff/catch-error.js","webpack://MoveoAI/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://MoveoAI/./node_modules/prop-types/index.js","webpack://MoveoAI/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://MoveoAI/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://MoveoAI/./node_modules/react-modal/lib/components/Modal.js","webpack://MoveoAI/./node_modules/react-modal/lib/components/ModalPortal.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/bodyTrap.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/classList.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/focusManager.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/portalOpenInstances.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/safeHTMLElement.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/scopeTab.js","webpack://MoveoAI/./node_modules/react-modal/lib/helpers/tabbable.js","webpack://MoveoAI/./node_modules/react-modal/lib/index.js","webpack://MoveoAI/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://MoveoAI/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://MoveoAI/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://MoveoAI/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://MoveoAI/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://MoveoAI/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://MoveoAI/./node_modules/ua-parser-js/src/ua-parser.js","webpack://MoveoAI/./node_modules/warning/warning.js","webpack://MoveoAI/./node_modules/yeast/index.js","webpack://MoveoAI/./node_modules/preact/jsx-runtime/src/index.js","webpack://MoveoAI/./node_modules/recoil/es/recoil.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://MoveoAI/./node_modules/i18next/dist/esm/i18next.js","webpack://MoveoAI/./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/context.js","webpack://MoveoAI/./src/i18n/index.ts","webpack://MoveoAI/./node_modules/react-i18next/dist/es/utils.js","webpack://MoveoAI/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://MoveoAI/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://MoveoAI/./node_modules/react-transition-group/esm/Transition.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://MoveoAI/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://MoveoAI/./node_modules/react-page-visibility/dist/es5/utils.js","webpack://MoveoAI/./node_modules/react-page-visibility/dist/es5/usePageVisibility.js","webpack://MoveoAI/./src/components/Avatar/Avatar.module.scss?dd5d","webpack://MoveoAI/./src/components/Avatar/Avatar.tsx","webpack://MoveoAI/./src/components/Icons/ExternalLink.tsx","webpack://MoveoAI/./src/components/Icons/LoadingIcon.module.scss?f3d3","webpack://MoveoAI/./src/components/Icons/LoadingIcon.tsx","webpack://MoveoAI/./src/components/Message/Webview/WebviewContainer.module.scss?c2db","webpack://MoveoAI/./src/components/Message/Webview/WebviewContainer.tsx","webpack://MoveoAI/./src/components/Icons/CloseIcon.tsx","webpack://MoveoAI/./src/components/Message/Webview/WebviewModal/WebviewModal.module.scss?631c","webpack://MoveoAI/./src/components/Message/Webview/WebviewModal/WebviewModal.tsx","webpack://MoveoAI/./src/components/Message/Message.module.scss?4bc3","webpack://MoveoAI/./src/components/Message/Webview/WebviewResponse.module.scss?5e24","webpack://MoveoAI/./src/components/Message/Webview/WebviewResponse.tsx","webpack://MoveoAI/./src/config.ts","webpack://MoveoAI/./src/state/session.ts","webpack://MoveoAI/./src/components/Message/Audio.tsx","webpack://MoveoAI/./node_modules/nanoid/index.prod.js","webpack://MoveoAI/./src/contexts/socket.ts","webpack://MoveoAI/./src/ts/socket.ts","webpack://MoveoAI/./src/utils.ts","webpack://MoveoAI/./src/hooks/useSocket.ts","webpack://MoveoAI/./src/components/Message/Carousel/Card.module.scss?59ce","webpack://MoveoAI/./src/components/Message/Carousel/Card.tsx","webpack://MoveoAI/./src/components/Message/Carousel/Carousel.module.scss?e07e","webpack://MoveoAI/./src/components/Message/Carousel/Carousel.tsx","webpack://MoveoAI/./src/components/Icons/File.tsx","webpack://MoveoAI/./src/components/Message/File.tsx","webpack://MoveoAI/./src/components/Message/Image.tsx","webpack://MoveoAI/./node_modules/linkifyjs/dist/linkify.module.js","webpack://MoveoAI/./node_modules/linkify-react/dist/linkify-react.module.js","webpack://MoveoAI/./src/components/Linkify/Linkify.tsx","webpack://MoveoAI/./src/components/Message/Text.tsx","webpack://MoveoAI/./src/components/Message/Url.tsx","webpack://MoveoAI/./src/components/Message/Video.tsx","webpack://MoveoAI/./src/components/Message/ResponseEvent.tsx","webpack://MoveoAI/./src/components/Icons/Check.tsx","webpack://MoveoAI/./src/components/ChatEvent/DeliverInfo.module.scss?d5eb","webpack://MoveoAI/./src/components/ChatEvent/DeliverInfo.tsx","webpack://MoveoAI/./src/components/ChatEvent/ChatEvent.module.scss?7f8d","webpack://MoveoAI/./src/components/ChatEvent/ChatEvent.tsx","webpack://MoveoAI/./src/components/Icons/EmptyIcon.module.scss?ef9d","webpack://MoveoAI/./src/components/Icons/EmptyIcon.tsx","webpack://MoveoAI/./src/components/ChatEvents/EmptyMessage.module.scss?8710","webpack://MoveoAI/./src/components/ChatEvents/EmptyMessage.tsx","webpack://MoveoAI/./src/state/widget.ts","webpack://MoveoAI/./src/components/WelcomeScreen/Starter.module.scss?4c89","webpack://MoveoAI/./src/components/WelcomeScreen/Starter.tsx","webpack://MoveoAI/./src/components/WelcomeScreen/WelcomeGreeting.module.scss?88a9","webpack://MoveoAI/./src/components/WelcomeScreen/WelcomeGreeting.tsx","webpack://MoveoAI/./src/components/WelcomeScreen/WelcomeWrapper.tsx","webpack://MoveoAI/./src/components/ChatEvents/ChatEvents.tsx","webpack://MoveoAI/./src/components/Icons/CloseMobileIcon.tsx","webpack://MoveoAI/./src/components/Icons/StatusDotIcon.module.scss?943b","webpack://MoveoAI/./src/components/Icons/StatusDotIcon.tsx","webpack://MoveoAI/./src/state/socket.ts","webpack://MoveoAI/./src/components/Icons/DotsThree.tsx","webpack://MoveoAI/./src/components/Icons/Reset.tsx","webpack://MoveoAI/./src/components/Header/Dropdown.module.scss?8073","webpack://MoveoAI/./src/components/Header/Dropdown.tsx","webpack://MoveoAI/./src/components/Header/Header.module.scss?88d1","webpack://MoveoAI/./src/components/Header/Header.tsx","webpack://MoveoAI/./src/components/Message/TypingIndicator.tsx","webpack://MoveoAI/./src/components/Icons/SendMessageIcon.tsx","webpack://MoveoAI/./src/components/MessageInput/MessageInput.module.scss?199d","webpack://MoveoAI/./src/components/MessageInput/MessageInput.tsx","webpack://MoveoAI/./src/hooks/useDebounce.ts","webpack://MoveoAI/./src/components/PoweredBy/PoweredBy.module.scss?8251","webpack://MoveoAI/./src/components/PoweredBy/PoweredBy.tsx","webpack://MoveoAI/./node_modules/react-hook-form/dist/index.esm.mjs","webpack://MoveoAI/./src/components/Button/Button.module.scss?d489","webpack://MoveoAI/./src/components/Button/Button.tsx","webpack://MoveoAI/./src/components/Checkbox/Checkbox.tsx","webpack://MoveoAI/./src/components/Input/Input.module.scss?0595","webpack://MoveoAI/./src/components/Input/Input.tsx","webpack://MoveoAI/./src/components/WelcomeFields/WelcomeFields.module.scss?32cd","webpack://MoveoAI/./src/components/WelcomeFields/WelcomeFields.tsx","webpack://MoveoAI/./src/components/ChatContainer/animations.ts","webpack://MoveoAI/./src/components/Icons/ThumbsDown.tsx","webpack://MoveoAI/./src/components/Icons/ThumbsUp.tsx","webpack://MoveoAI/./src/components/ChatContainer/Survey.module.scss?4f2c","webpack://MoveoAI/./src/components/ChatContainer/Survey.tsx","webpack://MoveoAI/./src/components/ChatContainer/ChatContainer.module.scss?9118","webpack://MoveoAI/./src/components/ChatContainer/ChatContainer.tsx","webpack://MoveoAI/./src/components/Icons/BubbleIcon.module.scss?3064","webpack://MoveoAI/./src/components/Icons/Bubble.tsx","webpack://MoveoAI/./src/components/Icons/CloseRounded.tsx","webpack://MoveoAI/./src/components/OpeningMessage/OpeningMessage.module.scss?a2fa","webpack://MoveoAI/./src/components/OpeningMessage/OpeningMessage.tsx","webpack://MoveoAI/./src/components/Launcher/Launcher.module.scss?7faf","webpack://MoveoAI/./src/components/Launcher/Launcher.tsx","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/globalThis.browser.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/util.js","webpack://MoveoAI/./node_modules/engine.io-parser/build/esm/commons.js","webpack://MoveoAI/./node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack://MoveoAI/../../src/index.ts","webpack://MoveoAI/./node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack://MoveoAI/./node_modules/engine.io-parser/build/esm/index.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transport.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transports/polling.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transports/polling-xhr.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transports/websocket.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/transports/index.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/socket.js","webpack://MoveoAI/./node_modules/engine.io-client/build/esm/index.js","webpack://MoveoAI/./node_modules/socket.io-parser/build/esm/is-binary.js","webpack://MoveoAI/./node_modules/socket.io-parser/build/esm/binary.js","webpack://MoveoAI/./node_modules/socket.io-parser/build/esm/index.js","webpack://MoveoAI/./node_modules/socket.io-client/build/esm/on.js","webpack://MoveoAI/./node_modules/socket.io-client/build/esm/socket.js","webpack://MoveoAI/./node_modules/socket.io-client/build/esm/manager.js","webpack://MoveoAI/./node_modules/socket.io-client/build/esm/index.js","webpack://MoveoAI/./node_modules/socket.io-client/build/esm/url.js","webpack://MoveoAI/./src/state/config.ts","webpack://MoveoAI/./src/hooks/useSocketSetup.ts","webpack://MoveoAI/./src/hooks/useUnload.ts","webpack://MoveoAI/./src/components/AppContainer/PopupContainer.tsx","webpack://MoveoAI/./src/components/AppContainer/AppContainer.module.scss?829e","webpack://MoveoAI/./src/components/AppContainer/AppContainer.tsx","webpack://MoveoAI/./src/components/App/App.scss?98f4","webpack://MoveoAI/./src/components/App/App.tsx","webpack://MoveoAI/./src/hooks/useTheme.ts","webpack://MoveoAI/./src/styles/styles.scss?3a54","webpack://MoveoAI/./src/index.tsx","webpack://MoveoAI/webpack/bootstrap","webpack://MoveoAI/webpack/runtime/amd options","webpack://MoveoAI/webpack/runtime/compat get default export","webpack://MoveoAI/webpack/runtime/define property getters","webpack://MoveoAI/webpack/runtime/hasOwnProperty shorthand","webpack://MoveoAI/webpack/runtime/make namespace object","webpack://MoveoAI/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MoveoAI\"] = factory();\n\telse\n\t\troot[\"MoveoAI\"] = factory();\n})(self, function() {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".keen-slider{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.keen-slider,.keen-slider__slide{overflow:hidden;position:relative}.keen-slider__slide{width:100%;min-height:100%}.keen-slider[data-keen-slider-v]{flex-wrap:wrap}.keen-slider[data-keen-slider-v] .keen-slider__slide{width:100%}.keen-slider[data-keen-slider-moves] *{pointer-events:none}\\n/*# sourceMappingURL=keen-slider.min.css.map */\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/keen-slider/keen-slider.scss\",\"webpack://./node_modules/keen-slider/keen-slider.min.css\"],\"names\":[],\"mappings\":\"AAAA,aACE,YAAa,CAGb,wBAAiB,CAAjB,qBAAiB,CAAjB,oBAAiB,CAAjB,gBAAiB,CACjB,0BAA2B,CAC3B,uBAAwB,CAExB,kBAAmB,CACnB,uCACF,CACA,iCATE,eAAgB,CAChB,iBAaF,CALA,oBAGE,UAAW,CACX,eACF,CACA,iCACE,cACF,CACA,qDACE,UACF,CACA,uCACE,mBACF;ACxBA,8CAA8C\",\"sourcesContent\":[\".keen-slider {\\n display: flex;\\n overflow: hidden;\\n position: relative;\\n user-select: none;\\n -webkit-touch-callout: none;\\n -khtml-user-select: none;\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n -webkit-tap-highlight-color: transparent;\\n}\\n.keen-slider__slide {\\n position: relative;\\n overflow: hidden;\\n width: 100%;\\n min-height: 100%;\\n}\\n.keen-slider[data-keen-slider-v] {\\n flex-wrap: wrap;\\n}\\n.keen-slider[data-keen-slider-v] .keen-slider__slide {\\n width: 100%;\\n}\\n.keen-slider[data-keen-slider-moves] * {\\n pointer-events: none;\\n}\",\".keen-slider{display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.keen-slider,.keen-slider__slide{overflow:hidden;position:relative}.keen-slider__slide{width:100%;min-height:100%}.keen-slider[data-keen-slider-v]{flex-wrap:wrap}.keen-slider[data-keen-slider-v] .keen-slider__slide{width:100%}.keen-slider[data-keen-slider-moves] *{pointer-events:none}\\n/*# sourceMappingURL=keen-slider.min.css.map */\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\\\"\\\";content:none}table{border-collapse:collapse;border-spacing:0}#root{isolation:isolate}#root,body,html{height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/reset.scss\"],\"names\":[],\"mappings\":\"AAEA,2ZAiFE,QAAA,CACA,SAAA,CACA,QAAA,CACA,cAAA,CACA,YAAA,CACA,uBAAA,CAIF,8EAWE,aAAA,CAGF,KACE,aAAA,CAGF,MAEE,eAAA,CAGF,aAEE,WAAA,CAGF,wDAIE,UAAA,CACA,YAAA,CAGF,MACE,wBAAA,CACA,gBAAA,CAGF,MACE,iBAAA,CAGF,gBAGE,WAAA\",\"sourcesContent\":[\"/* stylelint-disable declaration-block-no-shorthand-property-overrides */\\n/* stylelint-disable property-disallowed-list */\\nhtml,\\nbody,\\ndiv,\\nspan,\\napplet,\\nobject,\\niframe,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\np,\\nblockquote,\\npre,\\na,\\nabbr,\\nacronym,\\naddress,\\nbig,\\ncite,\\ncode,\\ndel,\\ndfn,\\nem,\\nimg,\\nins,\\nkbd,\\nq,\\ns,\\nsamp,\\nsmall,\\nstrike,\\nstrong,\\nsub,\\nsup,\\ntt,\\nvar,\\nb,\\nu,\\ni,\\ncenter,\\ndl,\\ndt,\\ndd,\\nol,\\nul,\\nli,\\nfieldset,\\nform,\\nlabel,\\nlegend,\\ntable,\\ncaption,\\ntbody,\\ntfoot,\\nthead,\\ntr,\\nth,\\ntd,\\narticle,\\naside,\\ncanvas,\\ndetails,\\nembed,\\nfigure,\\nfigcaption,\\nfooter,\\nheader,\\nhgroup,\\nmenu,\\nnav,\\noutput,\\nruby,\\nsection,\\nsummary,\\ntime,\\nmark,\\naudio,\\nvideo {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline;\\n}\\n\\n// HTML5 display-role reset for older browsers\\narticle,\\naside,\\ndetails,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmenu,\\nnav,\\nsection {\\n display: block;\\n}\\n\\nbody {\\n line-height: 1;\\n}\\n\\nol,\\nul {\\n list-style: none;\\n}\\n\\nblockquote,\\nq {\\n quotes: none;\\n}\\n\\nblockquote::before,\\nblockquote::after,\\nq::before,\\nq::after {\\n content: '';\\n content: none;\\n}\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\n#root {\\n isolation: isolate;\\n}\\n\\n#root,\\nbody,\\nhtml {\\n height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap);\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".lS5bGe032Is83SoQNGZZ{--moveo-z-index: 1100;--moveo-shadow-message: 0 2px 2px rgba(0 0 0 4%);--moveo-shadow-bubble: 0 30px 30px rgb(0 0 0 / 2%), 0 0 8px rgb(0 0 0 / 3%), 0 1px 0 rgb(0 0 0 / 5%);--moveo-border-radius-base: 5px;--moveo-font-primary: \\\"Inter\\\", monospace;--moveo-color-border: #ddd;--moveo-color-disabled: #8c8c8c;--moveo-header-height: 55px;--moveo-chat-width--regular: 380px;--moveo-chat-height--regular: 650px;--moveo-chat-width--large: 650px;--moveo-chat-height--large: 750px;--moveo-modal-tall-height: 600px;--moveo-modal-tall-width: clamp(300px, 400px, 450px);--moveo-modal-full-height: 80vh;--moveo-modal-full-width: 80vw;--moveo-modal-full-height-phone: 60vh;--moveo-modal-header-height: 46px;--moveo-modal-label-color: #0a3451;--moveo-modal-background-color: #fff;--moveo-webview-button-background: var(--text-05);--moveo-webview-message-width: 220px;--moveo-webview-message-height: 30px;--moveo-webview-button-width: 80%;--moveo-breakpoint-phone: 640px;--moveo-audio-message-width: 230px;--moveo-container-fullpage-height: 100vh;--moveo-container-fullpage-width: 100vw;--moveo-chat-container-fullpage-height: 100vh;--moveo-chat-container-fullpage-width: 100vw;--moveo-loadingIcon-width: $space-16;--moveo-loadingIcon-height: $space-16;--moveo-typingDot-padding-bottom: 25%;--moveo-typingDot-width: 25%;--moveo-luncher-animate-after-z-index: -1;--moveo-openingMessage-width: max-content;--moveo-card-mediaContainer-height: 130px;--moveo-chat-monad-max-width: 251px;--moveo-chat-monad-max-width-phone: 288px;--moveo-chat-monad-width: fit-content;--moveo-chat-monad-min-width: 50px;--moveo-dropdown-z-index: 1;--moveo-dropdown-box-shadow: 0.3px 0.5px 0.7px hsl(0deg 0% 55% / 45%), 1.2px 1.8px 2.4px -0.8px hsl(0deg 0% 55% / 45%), 3px 4.7px 6.2px -1.7px hsl(0deg 0% 55% / 45%), 7.3px 11.6px 15.3px -2.5px hsl(0deg 0% 55% / 44%);--moveo-dropdown-container-width: 223px;--moveo-survey-feautures-width: 89%;--moveo-survey-feautures-height: 80%;height:100%}.lS5bGe032Is83SoQNGZZ.xL2Aww7pwL9JSVJxIQUd{height:100%;width:100%}.lS5bGe032Is83SoQNGZZ.tvO3QwmntTEIt0eDc2GY{height:var(--moveo-container-fullpage-height);width:var(--moveo-container-fullpage-width)}.lS5bGe032Is83SoQNGZZ .VB4avNIUBWoPeMemk2uH{background-color:rgba(0,0,0,.4);position:fixed;inset:0;overflow:hidden}.lS5bGe032Is83SoQNGZZ .VB4avNIUBWoPeMemk2uH.qsrkdT0PMUtir8RAFg8D{visibility:hidden}.lS5bGe032Is83SoQNGZZ .VB4avNIUBWoPeMemk2uH.MXcAeL3p5kc0eGbgNzkP{position:initial}.h7K8cOn2cR9axUsyxZ5k{--moveo-background-color:#1b66d6;--text-secondary:#fff;--moveo-text-01:#000;--moveo-text-02:#2d3c47;--moveo-text-03:#8499a8;--moveo-text-04:#fff;--moveo-text-success:#21d184;--moveo-text-failure:#da0000;--moveo-color-disabled:#8c8c8c;--moveo-color-ui-background:#e8e8e8;--moveo-dropdown-background-color:#fff;--moveo-dropdown-background-color-hover:#f5f5f5;--moveo-messagearea-background:linear-gradient(0deg, rgba(227, 243, 255, 0.16) 2.25%, rgba(227, 243, 255, 0) 100%);--message-bubble-border-color:#d6e3f8;--moveo-dropdown-button-onhover-color:rgba(255,255,255,.21);--moveo-survey-feautures-background-color:#fff}.oDfDDDIyvt4hXTZ4SUJo{--moveo-background-color:#05043a;--text-secondary:#000;--moveo-text-01:#fff;--moveo-text-02:#0a3451;--moveo-text-03:#ccd3d8;--moveo-text-04:#000;--moveo-text-success:#21d184;--moveo-text-failure:#da0000;--moveo-color-disabled:#8c8c8c;--moveo-dropdown-background-color:#000;--moveo-dropdown-background-color-hover:#f5f5f5;--moveo-messagearea-background:#000;--message-bubble-border-color:#d6e3f8;--moveo-dropdown-button-onhover-color:rgba(255,255,255,.21);--moveo-survey-feautures-background-color:#000}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/AppContainer/AppContainer.module.scss\",\"webpack://./src/styles/mixings.scss\",\"webpack://./src/styles/theme.scss\"],\"names\":[],\"mappings\":\"AAIA,sBACE,qBAAA,CACA,gDAAA,CACA,oGAAA,CAIA,+BAAA,CACA,wCAAA,CACA,0BAAA,CACA,+BAAA,CACA,2BAAA,CACA,kCAAA,CACA,mCAAA,CACA,gCAAA,CACA,iCAAA,CACA,gCAAA,CACA,oDAAA,CACA,+BAAA,CACA,8BAAA,CACA,qCAAA,CACA,iCAAA,CACA,kCAAA,CACA,oCAAA,CACA,iDAAA,CACA,oCAAA,CACA,oCAAA,CACA,iCAAA,CACA,+BAAA,CACA,kCAAA,CACA,wCAAA,CACA,uCAAA,CACA,6CAAA,CACA,4CAAA,CACA,oCAAA,CACA,qCAAA,CACA,qCAAA,CACA,4BAAA,CACA,yCAAA,CACA,yCAAA,CACA,yCAAA,CACA,mCAAA,CACA,yCAAA,CACA,qCAAA,CACA,kCAAA,CACA,2BAAA,CACA,wNAAA,CAKA,uCAAA,CACA,mCAAA,CACA,oCAAA,CAEA,WAAA,CAEA,2CACE,WAAA,CACA,UAAA,CAGF,2CACE,6CAAA,CACA,2CAAA,CAGF,4CACE,+BAAA,CACA,cAAA,CACA,OAAA,CACA,eAAA,CAEA,iEACE,iBAAA,CAGF,iEACE,gBAAA,CAKN,sBCrFI,gCCgBc,CDhBd,qBCgBc,CDhBd,oBCgBc,CDhBd,uBCgBc,CDhBd,uBCgBc,CDhBd,oBCgBc,CDhBd,4BCgBc,CDhBd,4BCgBc,CDhBd,8BCgBc,CDhBd,mCCgBc,CDhBd,sCCgBc,CDhBd,+CCgBc,CDhBd,kHCgBc,CDhBd,qCCgBc,CDhBd,2DCgBc,CDhBd,8CCgBc,CFyElB,sBCzFI,gCCuCa,CDvCb,qBCuCa,CDvCb,oBCuCa,CDvCb,uBCuCa,CDvCb,uBCuCa,CDvCb,oBCuCa,CDvCb,4BCuCa,CDvCb,4BCuCa,CDvCb,8BCuCa,CDvCb,sCCuCa,CDvCb,+CCuCa,CDvCb,mCCuCa,CDvCb,qCCuCa,CDvCb,2DCuCa,CDvCb,8CCuCa\",\"sourcesContent\":[\"@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap');\\n@import '../../styles/mixings';\\n@import '../../styles/theme';\\n\\n.container {\\n --moveo-z-index: 1100;\\n --moveo-shadow-message: 0 2px 2px rgba(0 0 0 4%);\\n --moveo-shadow-bubble:\\n 0 30px 30px rgb(0 0 0 / 2%),\\n 0 0 8px rgb(0 0 0 / 3%),\\n 0 1px 0 rgb(0 0 0 / 5%);\\n --moveo-border-radius-base: 5px;\\n --moveo-font-primary: 'Inter', monospace;\\n --moveo-color-border: #ddd;\\n --moveo-color-disabled: #8c8c8c;\\n --moveo-header-height: 55px;\\n --moveo-chat-width--regular: 380px;\\n --moveo-chat-height--regular: 650px;\\n --moveo-chat-width--large: 650px;\\n --moveo-chat-height--large: 750px;\\n --moveo-modal-tall-height: 600px;\\n --moveo-modal-tall-width: clamp(300px, 400px, 450px);\\n --moveo-modal-full-height: 80vh;\\n --moveo-modal-full-width: 80vw;\\n --moveo-modal-full-height-phone: 60vh;\\n --moveo-modal-header-height: 46px;\\n --moveo-modal-label-color: #0a3451;\\n --moveo-modal-background-color: #fff;\\n --moveo-webview-button-background: var(--text-05);\\n --moveo-webview-message-width: 220px;\\n --moveo-webview-message-height: 30px;\\n --moveo-webview-button-width: 80%;\\n --moveo-breakpoint-phone: 640px;\\n --moveo-audio-message-width: 230px;\\n --moveo-container-fullpage-height: 100vh;\\n --moveo-container-fullpage-width: 100vw;\\n --moveo-chat-container-fullpage-height: 100vh;\\n --moveo-chat-container-fullpage-width: 100vw;\\n --moveo-loadingIcon-width: $space-16;\\n --moveo-loadingIcon-height: $space-16;\\n --moveo-typingDot-padding-bottom: 25%;\\n --moveo-typingDot-width: 25%;\\n --moveo-luncher-animate-after-z-index: -1;\\n --moveo-openingMessage-width: max-content;\\n --moveo-card-mediaContainer-height: 130px;\\n --moveo-chat-monad-max-width: 251px;\\n --moveo-chat-monad-max-width-phone: 288px;\\n --moveo-chat-monad-width: fit-content;\\n --moveo-chat-monad-min-width: 50px;\\n --moveo-dropdown-z-index: 1;\\n --moveo-dropdown-box-shadow:\\n 0.3px 0.5px 0.7px hsl(0deg 0% 55% / 45%),\\n 1.2px 1.8px 2.4px -0.8px hsl(0deg 0% 55% / 45%),\\n 3px 4.7px 6.2px -1.7px hsl(0deg 0% 55% / 45%),\\n 7.3px 11.6px 15.3px -2.5px hsl(0deg 0% 55% / 44%);\\n --moveo-dropdown-container-width: 223px;\\n --moveo-survey-feautures-width: 89%;\\n --moveo-survey-feautures-height: 80%;\\n\\n height: 100%;\\n\\n &.embed {\\n height: 100%;\\n width: 100%;\\n }\\n\\n &.fullpage {\\n height: var(--moveo-container-fullpage-height);\\n width: var(--moveo-container-fullpage-width);\\n }\\n\\n .focusTrap {\\n background-color: rgb(0 0 0 / 40%);\\n position: fixed;\\n inset: 0;\\n overflow: hidden;\\n\\n &.hide {\\n visibility: hidden;\\n }\\n\\n &.disabled {\\n position: initial;\\n }\\n }\\n}\\n\\n.light {\\n @include spread-map($theme-map-light);\\n}\\n\\n.dark {\\n @include spread-map($theme-map-dark);\\n}\\n\",\"@mixin spread-map($map: ()) {\\n @each $key, $value in $map {\\n #{$key}: $value;\\n }\\n}\\n\",\"$text-01: --moveo-text-01;\\n$text-02: --moveo-text-02;\\n$text-03: --moveo-text-03;\\n$text-04: --moveo-text-04;\\n$text-success: --moveo-text-success;\\n$text-failure: --moveo-text-failure;\\n$color-disabled: --moveo-color-disabled;\\n$color-background: --moveo-color-ui-background;\\n$text-primary: --moveo-background-color;\\n$text-secondary: --text-secondary;\\n$message-area-background: --moveo-messagearea-background;\\n$message-bubble-border-color: --message-bubble-border-color;\\n$dropdown-button-onhover-color: --moveo-dropdown-button-onhover-color;\\n$dropdown-background-color: --moveo-dropdown-background-color;\\n$dropdown-background-color-hover: --moveo-dropdown-background-color-hover;\\n$survey-feautures-background-color: --moveo-survey-feautures-background-color;\\n\\n// Default theme\\n$theme-map-light: (\\n $text-primary: #1b66d6,\\n $text-secondary: #fff,\\n $text-01: #000,\\n $text-02: #2d3c47,\\n $text-03: #8499a8,\\n $text-04: #fff,\\n $text-success: #21d184,\\n $text-failure: #da0000,\\n $color-disabled: #8c8c8c,\\n $color-background: #e8e8e8,\\n $dropdown-background-color: #fff,\\n $dropdown-background-color-hover: #f5f5f5,\\n $message-area-background:\\n linear-gradient(\\n 0deg,\\n rgba(227 243 255 / 16%) 2.25%,\\n rgba(227 243 255 / 0%) 100%\\n ),\\n $message-bubble-border-color: #d6e3f8,\\n $dropdown-button-onhover-color: rgba(255 255 255 / 21%),\\n $survey-feautures-background-color: #fff,\\n);\\n$theme-map-dark: (\\n $text-primary: #05043a,\\n $text-secondary: #000,\\n $text-01: #fff,\\n $text-02: #0a3451,\\n $text-03: #ccd3d8,\\n $text-04: #000,\\n $text-success: #21d184,\\n $text-failure: #da0000,\\n $color-disabled: #8c8c8c,\\n $dropdown-background-color: #000,\\n $dropdown-background-color-hover: #f5f5f5,\\n $message-area-background:#000,\\n $message-bubble-border-color: #d6e3f8,\\n $dropdown-button-onhover-color: rgba(255 255 255 / 21%),\\n $survey-feautures-background-color: #000,\\n);\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"lS5bGe032Is83SoQNGZZ\",\n\t\"embed\": \"xL2Aww7pwL9JSVJxIQUd\",\n\t\"fullpage\": \"tvO3QwmntTEIt0eDc2GY\",\n\t\"focusTrap\": \"VB4avNIUBWoPeMemk2uH\",\n\t\"hide\": \"qsrkdT0PMUtir8RAFg8D\",\n\t\"disabled\": \"MXcAeL3p5kc0eGbgNzkP\",\n\t\"light\": \"h7K8cOn2cR9axUsyxZ5k\",\n\t\"dark\": \"oDfDDDIyvt4hXTZ4SUJo\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".N97wYHtSZqi2OVjFyJTe{position:absolute;bottom:0;left:-2.5rem;border-radius:100%;width:1.5rem;height:1.5rem;overflow:hidden}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Avatar/Avatar.module.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAEA,sBACE,iBAAA,CACA,QAAA,CACA,YAAA,CACA,kBAAA,CACA,YCES,CDDT,aCCS,CAAA,eAAA\",\"sourcesContent\":[\"@import '../../styles/spacing';\\n\\n.avatar {\\n position: absolute;\\n bottom: 0;\\n left: calc($space-40 * -1);\\n border-radius: 100%;\\n width: $space-24;\\n height: $space-24;\\n overflow: hidden;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"avatar\": \"N97wYHtSZqi2OVjFyJTe\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".b_aG7bzo5aM2mIR7O3BA{background-color:var(--moveo-background-color);padding:.75rem 1.25rem;border-radius:.25rem;color:var(--text-secondary);cursor:pointer;border:1px solid var(--moveo-background-color);transition:.2s all linear}.b_aG7bzo5aM2mIR7O3BA.aAQf2zAeaZDF8KAbtRgW{width:100%}.b_aG7bzo5aM2mIR7O3BA:disabled{cursor:not-allowed;color:var(--moveo-color-disabled);border:1px solid var(--moveo-color-disabled)}.b_aG7bzo5aM2mIR7O3BA:hover:enabled{background-color:var(--text-secondary);color:var(--moveo-background-color)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Button/Button.module.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAGA,sBACE,8CAAA,CACA,sBAAA,CACA,oBCaQ,CDZR,2BAAA,CACA,cAAA,CACA,8CAAA,CACA,yBAAA,CAEA,2CACE,UAAA,CAGF,+BACE,kBAAA,CACA,iCAAA,CACA,4CAAA,CAGF,oCACE,sCAAA,CACA,mCAAA\",\"sourcesContent\":[\"@import '../../styles/theme';\\n@import '../../styles/spacing';\\n\\n.button {\\n background-color: var($text-primary);\\n padding: $space-12 $space-20;\\n border-radius: $space-4;\\n color: var($text-secondary);\\n cursor: pointer;\\n border: 1px solid var($text-primary);\\n transition: 0.2s all linear;\\n\\n &.fullWidth {\\n width: 100%;\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n color: var($color-disabled);\\n border: 1px solid var($color-disabled);\\n }\\n\\n &:hover:enabled {\\n background-color: var($text-secondary);\\n color: var($text-primary);\\n }\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"button\": \"b_aG7bzo5aM2mIR7O3BA\",\n\t\"fullWidth\": \"aAQf2zAeaZDF8KAbtRgW\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bie45oxG6vfw2NOPezZF{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;display:grid;grid-column-gap:0;gap:0;grid-template-columns:1fr;grid-template-rows:var(--moveo-header-height) auto minmax(60px, max-content);background:var(--moveo-text-04);box-shadow:var(--moveo-shadow-bubble)}.bie45oxG6vfw2NOPezZF.S2lobMSHS7QlKVKm41zQ{grid-template-rows:var(--moveo-header-height) auto}.bie45oxG6vfw2NOPezZF.ZcAckD3VezCLNq3N5gMq{width:var(--moveo-chat-width--regular);max-height:var(--moveo-chat-height--regular)}.bie45oxG6vfw2NOPezZF.zXrfhk4hhXoHvPZH_qtA{width:var(--moveo-chat-width--large);max-height:var(--moveo-chat-height--large)}.bie45oxG6vfw2NOPezZF.HWos_wejVGvM3ujPTUgK{position:fixed;right:1.25rem;height:calc(100% - 120px);bottom:6.75rem;border-radius:calc(var(--moveo-border-radius-base)*2);border-bottom-left-radius:calc(var(--moveo-border-radius-base)*2);border-bottom-right-radius:calc(var(--moveo-border-radius-base)*2)}.bie45oxG6vfw2NOPezZF.HWos_wejVGvM3ujPTUgK.ZcAckD3VezCLNq3N5gMq{width:var(--moveo-chat-width--regular);max-height:var(--moveo-chat-height--regular)}.bie45oxG6vfw2NOPezZF.HWos_wejVGvM3ujPTUgK.zXrfhk4hhXoHvPZH_qtA{width:var(--moveo-chat-width--large);max-height:var(--moveo-chat-height--large)}.bie45oxG6vfw2NOPezZF.qe_BY4Vn7x5JdOou4L3m,.bie45oxG6vfw2NOPezZF.O1zFqRIcPPhZy5wi0WpU{height:100%;width:100%}.bie45oxG6vfw2NOPezZF.v1xVbMew2WRHx6m2NdRh{height:var(--moveo-chat-container-fullpage-height);width:var(--moveo-chat-container-fullpage-width)}@media(max-width: 550px){.bie45oxG6vfw2NOPezZF{transform:translateY(0);opacity:1;background:var(--moveo-text-04);inset:0;width:100%;min-height:100%;right:0;bottom:0;border-radius:0}.bie45oxG6vfw2NOPezZF.HWos_wejVGvM3ujPTUgK{border-bottom-left-radius:0;border-bottom-right-radius:0}.bie45oxG6vfw2NOPezZF.HWos_wejVGvM3ujPTUgK.ZcAckD3VezCLNq3N5gMq{width:100%}.bie45oxG6vfw2NOPezZF.HWos_wejVGvM3ujPTUgK.zXrfhk4hhXoHvPZH_qtA{width:100%}}.osxD_jue4f6YGml6gqqv{background:var(--moveo-messagearea-background);display:flex;flex-direction:column-reverse;overflow:overlay;overflow-x:hidden;padding-top:1rem;padding-bottom:2rem;position:relative}.Bw7zNBHlb8DNqMA3U7FK{list-style:none;margin:0;padding:0 1.125rem 0 1rem;position:relative;flex:1}.Bw7zNBHlb8DNqMA3U7FK>span>li{margin-top:.4rem}.Bw7zNBHlb8DNqMA3U7FK>span+li{margin-top:1.5rem}.Bw7zNBHlb8DNqMA3U7FK>div+li{margin-top:1.5rem}.Bw7zNBHlb8DNqMA3U7FK>li+span>li{margin-top:1.5rem}.Bw7zNBHlb8DNqMA3U7FK>div+span>li{margin-top:1.5rem}.Bw7zNBHlb8DNqMA3U7FK>span>li+li{margin-top:0}.AYgm_skNHtSL2y91v7Ie{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;background:0 0}.lKSYI4dcIyn9ULpTq7xA{width:100%;text-align:center;position:absolute;bottom:0;background:inherit}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ChatContainer/ChatContainer.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAKA,sBC+EE,qCAAA,CACA,gBCtES,CDuET,eAAA,CACA,gBAAA,CACA,kBC/ES,CFDT,YAAA,CACA,iBAAA,CACA,KAAA,CACA,yBAAA,CACA,4EAAA,CACA,+BAAA,CACA,qCAAA,CAEA,2CACE,kDAAA,CAGF,2CACE,sCAAA,CACA,4CAAA,CAGF,2CACE,oCAAA,CACA,0CAAA,CAGF,2CACE,cAAA,CACA,aErBO,CFsBP,yBAAA,CACA,cAAA,CACA,qDAAA,CACA,iEAAA,CACA,kEAAA,CAEA,gEACE,sCAAA,CACA,4CAAA,CAGF,gEACE,oCAAA,CACA,0CAAA,CAIJ,sFAEE,WAAA,CACA,UAAA,CAGF,2CACE,kDAAA,CACA,gDAAA,CGnDF,yBHFF,sBAsEI,uBAAA,CACA,SAAA,CACA,+BAAA,CACA,OAAA,CACA,UAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,eAAA,CArBA,2CACE,2BAAA,CACA,4BAAA,CAEA,gEACE,UAAA,CAGF,gEACE,UAAA,CAAA,CAgBR,sBACE,8CAAA,CACA,YAAA,CACA,6BAAA,CACA,gBAAA,CACA,iBAAA,CACA,gBEhFS,CFiFT,mBEvFS,CFwFT,iBAAA,CAGF,sBACE,eAAA,CACA,QAAA,CACA,yBAAA,CACA,iBAAA,CACA,MAAA,CAEA,8BACE,gBExFM,CF2FR,8BACE,iBErGO,CFwGT,6BACE,iBEzGO,CF4GT,iCACE,iBE7GO,CFgHT,kCACE,iBEjHO,CFoHT,iCACE,YAAA,CAIJ,sBACE,YAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CACA,cAAA,CAGF,sBACE,UAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,kBAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/breakpoints';\\n@import '../../styles/theme';\\n\\n.container {\\n @include body-2-regular;\\n\\n display: grid;\\n grid-column-gap: 0;\\n gap: 0;\\n grid-template-columns: 1fr;\\n grid-template-rows: var(--moveo-header-height) auto minmax(60px, max-content);\\n background: var($text-04);\\n box-shadow: var(--moveo-shadow-bubble);\\n\\n &.isExpired {\\n grid-template-rows: var(--moveo-header-height) auto;\\n }\\n\\n &.regular {\\n width: var(--moveo-chat-width--regular);\\n max-height: var(--moveo-chat-height--regular);\\n }\\n\\n &.large {\\n width: var(--moveo-chat-width--large);\\n max-height: var(--moveo-chat-height--large);\\n }\\n\\n &.livechat {\\n position: fixed;\\n right: $space-20;\\n height: calc(100% - 120px);\\n bottom: calc($space-128 - $space-20);\\n border-radius: calc(var(--moveo-border-radius-base) * 2);\\n border-bottom-left-radius: calc(var(--moveo-border-radius-base) * 2);\\n border-bottom-right-radius: calc(var(--moveo-border-radius-base) * 2);\\n\\n &.regular {\\n width: var(--moveo-chat-width--regular);\\n max-height: var(--moveo-chat-height--regular);\\n }\\n\\n &.large {\\n width: var(--moveo-chat-width--large);\\n max-height: var(--moveo-chat-height--large);\\n }\\n }\\n\\n &.embed,\\n &.popup {\\n height: 100%;\\n width: 100%;\\n }\\n\\n &.fullpage {\\n height: var(--moveo-chat-container-fullpage-height);\\n width: var(--moveo-chat-container-fullpage-width);\\n }\\n\\n @include phone {\\n &.livechat {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n\\n &.regular {\\n width: 100%;\\n }\\n\\n &.large {\\n width: 100%;\\n }\\n }\\n\\n transform: translateY(0);\\n opacity: 1;\\n background: var($text-04);\\n inset: 0;\\n width: 100%;\\n min-height: 100%;\\n right: 0;\\n bottom: 0;\\n border-radius: 0;\\n }\\n}\\n\\n.middleWrapper {\\n background: var($message-area-background);\\n display: flex;\\n flex-direction: column-reverse;\\n overflow: overlay;\\n overflow-x: hidden;\\n padding-top: $space-16;\\n padding-bottom: $space-32;\\n position: relative;\\n}\\n\\n.messages {\\n list-style: none;\\n margin: 0;\\n padding: 0 $space-18 0 $space-16;\\n position: relative;\\n flex: 1;\\n\\n > span > li {\\n margin-top: $space-6;\\n }\\n\\n > span + li {\\n margin-top: $space-24;\\n }\\n\\n > div + li {\\n margin-top: $space-24;\\n }\\n\\n > li + span > li {\\n margin-top: $space-24;\\n }\\n\\n > div + span > li {\\n margin-top: $space-24;\\n }\\n\\n > span > li + li {\\n margin-top: 0;\\n }\\n}\\n\\n.footer {\\n display: flex;\\n align-items: center;\\n flex-wrap: wrap;\\n justify-content: space-between;\\n background: 0 0;\\n}\\n\\n.poweredBy {\\n width: 100%;\\n text-align: center;\\n position: absolute;\\n bottom: 0;\\n background: inherit;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"bie45oxG6vfw2NOPezZF\",\n\t\"isExpired\": \"S2lobMSHS7QlKVKm41zQ\",\n\t\"regular\": \"ZcAckD3VezCLNq3N5gMq\",\n\t\"large\": \"zXrfhk4hhXoHvPZH_qtA\",\n\t\"livechat\": \"HWos_wejVGvM3ujPTUgK\",\n\t\"embed\": \"qe_BY4Vn7x5JdOou4L3m\",\n\t\"popup\": \"O1zFqRIcPPhZy5wi0WpU\",\n\t\"fullpage\": \"v1xVbMew2WRHx6m2NdRh\",\n\t\"middleWrapper\": \"osxD_jue4f6YGml6gqqv\",\n\t\"messages\": \"Bw7zNBHlb8DNqMA3U7FK\",\n\t\"footer\": \"AYgm_skNHtSL2y91v7Ie\",\n\t\"poweredBy\": \"lKSYI4dcIyn9ULpTq7xA\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".jXmgGtb3B8m7v8iWUSkl{display:flex;justify-content:center;align-items:flex-start;background-color:var(--moveo-color-disabled);border-bottom-left-radius:calc(var(--moveo-border-radius-base)*2);border-bottom-right-radius:calc(var(--moveo-border-radius-base)*2)}.dVjnRfEt0DYzsWu3x4mN{width:var(--moveo-survey-feautures-width);height:var(--moveo-survey-feautures-height);background-color:var(--moveo-survey-feautures-background-color);border-radius:calc(var(--moveo-border-radius-base)*2);margin-top:1.25rem;display:flex;flex-direction:column;justify-content:space-between;padding:.625rem;align-items:center}.P2wSD4SBXLzqbQuzKk_G{font-family:var(--moveo-font-primary);font-size:1rem;font-weight:400;letter-spacing:0;line-height:1.5rem;text-align:center;padding-top:2.25rem}.EzkbJepdPArmEHJ1oCwe{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;display:flex;flex-direction:column;align-items:center}.XzuDWyf1kl5f0YRuw3mP{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;display:inline-block;transition:all 250ms ease-out;margin:.5rem .5rem 0 0;border-radius:var(--moveo-border-radius-base);box-shadow:var(--moveo-shadow-bubble);cursor:pointer;padding:.5rem;line-height:1;background-color:var(--text-secondary);border:1px solid var(--moveo-background-color);color:var(--moveo-background-color);text-align:center;max-width:50%}.XzuDWyf1kl5f0YRuw3mP:hover{background-color:var(--moveo-background-color);color:var(--text-secondary)}.XzuDWyf1kl5f0YRuw3mP.PyD097dk64vTYMq5vkDG{margin-bottom:3.25rem}.nxqMQKhXe544jLaBnu22{margin-right:1.75rem}.sqkiLaCNyB5vLyI_CcPZ{margin-right:2.75rem;margin-left:-0.5rem;color:var(--moveo-text-success)}.tGioHgcWY7A3zY4i9VYb{color:var(--moveo-text-failure)}.v67AB69ESKx46lI0nU6b{padding-top:1.75rem}.Q3Pzi6EITuc13vCEMSMT{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;color:var(--moveo-background-color);padding-bottom:2.25rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ChatContainer/Survey.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/fonts.scss\"],\"names\":[],\"mappings\":\"AAKA,sBACE,YAAA,CACA,sBAAA,CACA,sBAAA,CACA,4CAAA,CACA,iEAAA,CACA,kEAAA,CAGF,sBACE,yCAAA,CACA,2CAAA,CACA,+DAAA,CACA,qDAAA,CACA,kBCRS,CDST,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,eCPS,CDQT,kBAAA,CAGF,sBE2CE,qCAAA,CACA,cD1DS,CC2DT,eAAA,CACA,gBAAA,CACA,kBDjES,CDqBT,iBAAA,CACA,mBCzBS,CD4BX,sBEkDE,qCAAA,CACA,gBDtES,CCuET,eAAA,CACA,gBAAA,CACA,kBD/ES,CD4BT,YAAA,CACA,qBAAA,CACA,kBAAA,CAGF,sBEDE,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CDiCT,oBAAA,CACA,6BAAA,CACA,sBAAA,CACA,6CAAA,CACA,qCAAA,CACA,cAAA,CACA,aClCQ,CDmCR,aAAA,CACA,sCAAA,CACA,8CAAA,CACA,mCAAA,CACA,iBAAA,CACA,aAAA,CAEA,4BACE,8CAAA,CACA,2BAAA,CAGF,2CACE,qBC9DO,CDkEX,sBACE,oBC9DS,CDiEX,sBACE,oBCtES,CDuET,mBAAA,CACA,+BAAA,CAGF,sBACE,+BAAA,CAGF,sBACE,mBC5ES,CD+EX,sBE9CE,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CD8ET,mCAAA,CACA,sBCrFS\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/breakpoints';\\n@import '../../styles/theme';\\n\\n.surveyFeauturesWrapper {\\n display: flex;\\n justify-content: center;\\n align-items: flex-start;\\n background-color: var(--moveo-color-disabled);\\n border-bottom-left-radius: calc(var(--moveo-border-radius-base) * 2);\\n border-bottom-right-radius: calc(var(--moveo-border-radius-base) * 2);\\n}\\n\\n.surveyFeauturesInner {\\n width: var(--moveo-survey-feautures-width);\\n height: var(--moveo-survey-feautures-height);\\n background-color: var($survey-feautures-background-color);\\n border-radius: calc(var(--moveo-border-radius-base) * 2);\\n margin-top: $space-20;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n padding: $space-10;\\n align-items: center;\\n}\\n\\n.title {\\n @include heading-regular;\\n\\n text-align: center;\\n padding-top: $space-36;\\n}\\n\\n.surveyWrapper {\\n @include body-2-regular;\\n\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n}\\n\\n.resetSession {\\n @include body-regular;\\n\\n display: inline-block;\\n transition: all 250ms ease-out;\\n margin: $space-8 $space-8 0 0;\\n border-radius: var(--moveo-border-radius-base);\\n box-shadow: var(--moveo-shadow-bubble);\\n cursor: pointer;\\n padding: $space-8;\\n line-height: 1;\\n background-color: var($text-secondary);\\n border: 1px solid var($text-primary);\\n color: var($text-primary);\\n text-align: center;\\n max-width: 50%;\\n\\n &:hover {\\n background-color: var($text-primary);\\n color: var($text-secondary);\\n }\\n\\n &.isForbidden {\\n margin-bottom: $space-52;\\n }\\n}\\n\\n.greatIcon {\\n margin-right: $space-26;\\n}\\n\\n.greatText {\\n margin-right: $space-44;\\n margin-left: -$space-8;\\n color: var($text-success);\\n}\\n\\n.badText {\\n color: var($text-failure);\\n}\\n\\n.icons {\\n padding-top: $space-26;\\n}\\n\\n.link {\\n @include body-regular;\\n\\n color: var($text-primary);\\n padding-bottom: $space-36;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"surveyFeauturesWrapper\": \"jXmgGtb3B8m7v8iWUSkl\",\n\t\"surveyFeauturesInner\": \"dVjnRfEt0DYzsWu3x4mN\",\n\t\"title\": \"P2wSD4SBXLzqbQuzKk_G\",\n\t\"surveyWrapper\": \"EzkbJepdPArmEHJ1oCwe\",\n\t\"resetSession\": \"XzuDWyf1kl5f0YRuw3mP\",\n\t\"isForbidden\": \"PyD097dk64vTYMq5vkDG\",\n\t\"greatIcon\": \"nxqMQKhXe544jLaBnu22\",\n\t\"greatText\": \"sqkiLaCNyB5vLyI_CcPZ\",\n\t\"badText\": \"tGioHgcWY7A3zY4i9VYb\",\n\t\"icons\": \"v67AB69ESKx46lI0nU6b\",\n\t\"link\": \"Q3Pzi6EITuc13vCEMSMT\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vIwgx6OdCDhmH8rNtUoR{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;box-sizing:border-box;position:relative;clear:both;margin:.4rem 0 0 0;border-radius:var(--moveo-border-radius-base);box-shadow:var(--moveo-shadow-message);padding:1.125rem 1.375rem 1.125rem 1.375rem;max-width:var(--moveo-chat-monad-max-width);width:var(--moveo-chat-monad-width);min-width:var(--moveo-chat-monad-min-width);word-wrap:break-word;float:right;background-color:var(--moveo-background-color);color:var(--moveo-text-04)}@media(max-width: 550px){.vIwgx6OdCDhmH8rNtUoR{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;font-size:1rem;line-height:1.375rem;max-width:var(--moveo-chat-monad-max-width-phone)}}.vIwgx6OdCDhmH8rNtUoR .MUSfXeX9yNCOcydrRDiA{text-align:left}.YV1tJflThoEsmLatEx2q{font-family:var(--moveo-font-primary);font-size:.625rem;font-weight:400;letter-spacing:0;line-height:1rem;font-size:.75rem;margin-top:1.75rem;width:100%;text-align:center;display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ChatEvent/ChatEvent.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAKA,sBCoCE,qCAAA,CACA,iBC5BS,CD6BT,eAAA,CACA,gBAAA,CACA,oBCjCS,CFJT,qBAAA,CACA,iBAAA,CACA,UAAA,CACA,kBAAA,CACA,6CAAA,CACA,sCAAA,CACA,2CAAA,CACA,2CAAA,CACA,mCAAA,CACA,2CAAA,CACA,oBAAA,CACA,WAAA,CACA,8CAAA,CACA,0BAAA,CGdA,yBHFF,sBCoCE,qCAAA,CACA,iBC5BS,CD6BT,eAAA,CACA,gBAAA,CACA,oBCjCS,CDuCT,cCtCS,CDuCT,oBC1CS,CFgBP,iDAAA,CAAA,CAGF,4CACE,eAAA,CAIJ,sBCPE,qCAAA,CACA,iBCZS,CDaT,eAAA,CACA,gBAAA,CACA,gBClBS,CDwBT,gBCtBS,CFsBT,kBE7BS,CF8BT,UAAA,CACA,iBAAA,CACA,oBAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/theme';\\n@import '../../styles/breakpoints';\\n\\n.container {\\n @include body-regular;\\n\\n box-sizing: border-box;\\n position: relative;\\n clear: both;\\n margin: $space-6 0 0 0;\\n border-radius: var(--moveo-border-radius-base);\\n box-shadow: var(--moveo-shadow-message);\\n padding: $space-18 $space-22 $space-18 $space-22;\\n max-width: var(--moveo-chat-monad-max-width);\\n width: var(--moveo-chat-monad-width);\\n min-width: var(--moveo-chat-monad-min-width);\\n word-wrap: break-word;\\n float: right;\\n background-color: var($text-primary);\\n color: var($text-04);\\n\\n @include phone {\\n @include body-regular-phone;\\n\\n max-width: var(--moveo-chat-monad-max-width-phone);\\n }\\n\\n .userMessage {\\n text-align: left;\\n }\\n}\\n\\n.swimmLineWithText {\\n @include code-big;\\n\\n margin-top: $space-26;\\n width: 100%;\\n text-align: center;\\n display: inline-block;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"vIwgx6OdCDhmH8rNtUoR\",\n\t\"userMessage\": \"MUSfXeX9yNCOcydrRDiA\",\n\t\"swimmLineWithText\": \"YV1tJflThoEsmLatEx2q\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".NIkBls4mVApLWW5yl0KC{font-family:var(--moveo-font-primary);font-size:.625rem;font-weight:400;letter-spacing:0;line-height:1rem;position:absolute;bottom:2px;right:6px}.mRzvtI87FmtLJcbD8Z8g{color:var(--moveo-text-04);position:absolute;bottom:-2px;right:27px;display:inline-flex}.mRzvtI87FmtLJcbD8Z8g.rqI1cSMV2Y2MbaeBmGqd{color:var(--moveo-text-success)}.drBeuI0SLIu0y9f1d8oI{margin-right:-0.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ChatEvent/DeliverInfo.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAIA,sBCuBE,qCAAA,CACA,iBCZS,CDaT,eAAA,CACA,gBAAA,CACA,gBClBS,CFNT,iBAAA,CACA,UAAA,CACA,SAAA,CAGF,sBACE,0BAAA,CACA,iBAAA,CACA,WAAA,CACA,UAAA,CACA,mBAAA,CAEA,2CACE,+BAAA,CAIJ,sBACE,oBAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/theme';\\n\\n.receipt {\\n @include code-small;\\n\\n position: absolute;\\n bottom: 2px;\\n right: 6px;\\n}\\n\\n.checkGroup {\\n color: var($text-04);\\n position: absolute;\\n bottom: -2px;\\n right: 27px;\\n display: inline-flex;\\n\\n &.delivered {\\n color: var($text-success);\\n }\\n}\\n\\n.check {\\n margin-right: -$space-8;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"receipt\": \"NIkBls4mVApLWW5yl0KC\",\n\t\"checkGroup\": \"mRzvtI87FmtLJcbD8Z8g\",\n\t\"delivered\": \"rqI1cSMV2Y2MbaeBmGqd\",\n\t\"check\": \"drBeuI0SLIu0y9f1d8oI\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".IngvVMGvqsHiGXEB4vmI{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;display:flex;color:var(--moveo-text-03);align-items:center;flex-direction:column;justify-content:center;padding:0;height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/ChatEvents/EmptyMessage.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAGA,sBCiFE,qCAAA,CACA,gBCtES,CDuET,eAAA,CACA,gBAAA,CACA,kBC/ES,CFHT,YAAA,CACA,0BAAA,CACA,kBAAA,CACA,qBAAA,CACA,sBAAA,CACA,SAAA,CACA,WAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.container {\\n @include body-2-regular;\\n\\n display: flex;\\n color: var($text-03);\\n align-items: center;\\n flex-direction: column;\\n justify-content: center;\\n padding: 0;\\n height: 100%;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"IngvVMGvqsHiGXEB4vmI\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".OoNdtkb1m8dT8yUN01_J{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;display:flex;flex-direction:column;width:var(--moveo-dropdown-container-width);color:var(--moveo-text-01);text-transform:initial;background-color:var(--moveo-dropdown-background-color);border-radius:var(--moveo-border-radius-base);box-shadow:var(--moveo-dropdown-box-shadow)}.hsSNVYxrK03Xo_vwQDmU{height:3.25rem;display:flex;justify-content:flex-start;align-items:center;border-radius:var(--moveo-border-radius-base);transition:background-color 250ms ease-out;padding-left:1.125rem;cursor:pointer}.hsSNVYxrK03Xo_vwQDmU:hover{background-color:var(--moveo-dropdown-background-color-hover)}.s666u5BP7wsTTLkFZG3F{padding-left:.75rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Header/Dropdown.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAKA,sBCoCE,qCAAA,CACA,iBC5BS,CD6BT,eAAA,CACA,gBAAA,CACA,oBCjCS,CFJT,YAAA,CACA,qBAAA,CACA,2CAAA,CACA,0BAAA,CACA,sBAAA,CACA,uDAAA,CACA,6CAAA,CACA,2CAAA,CAGF,sBACE,cEhBS,CFiBT,YAAA,CACA,0BAAA,CACA,kBAAA,CACA,6CAAA,CACA,0CAAA,CACA,qBEbS,CFcT,cAAA,CAEA,4BACE,6DAAA,CAIJ,sBACE,mBEnBS\",\"sourcesContent\":[\"@import '../../styles/spacing';\\n@import '../../styles/breakpoints';\\n@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.container {\\n @include body-regular;\\n\\n display: flex;\\n flex-direction: column;\\n width: var(--moveo-dropdown-container-width);\\n color: var($text-01);\\n text-transform: initial;\\n background-color: var($dropdown-background-color);\\n border-radius: var(--moveo-border-radius-base);\\n box-shadow: var(--moveo-dropdown-box-shadow);\\n}\\n\\n.item {\\n height: $space-52;\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n border-radius: var(--moveo-border-radius-base);\\n transition: background-color 250ms ease-out;\\n padding-left: $space-18;\\n cursor: pointer;\\n\\n &:hover {\\n background-color: var($dropdown-background-color-hover);\\n }\\n}\\n\\n.text {\\n padding-left: $space-12;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"OoNdtkb1m8dT8yUN01_J\",\n\t\"item\": \"hsSNVYxrK03Xo_vwQDmU\",\n\t\"text\": \"s666u5BP7wsTTLkFZG3F\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".mTFHSVjnSUFdoSnWwGhe{align-items:center;background:var(--moveo-background-color);box-shadow:var(--moveo-shadow-message);display:flex;position:relative;text-align:center;border-top-left-radius:calc(var(--moveo-border-radius-base)*2);border-top-right-radius:calc(var(--moveo-border-radius-base)*2)}@media(max-width: 550px){.mTFHSVjnSUFdoSnWwGhe{border-top-left-radius:0;border-top-right-radius:0}}.MSG89uyW2_NJukecgiWu{font-size:.875rem;color:var(--moveo-accent-color);line-height:1.125rem;text-transform:uppercase;display:flex;justify-content:center;align-items:center;flex:1}.MSG89uyW2_NJukecgiWu .X77jCI7sgjXhRwLBzrnp{position:relative}.MSG89uyW2_NJukecgiWu .X77jCI7sgjXhRwLBzrnp svg{position:absolute;right:-0.75rem;top:.4rem}.d8m3WXyfDmQq0_RD0YHK{position:absolute;left:1.25rem;padding:.4rem .625rem;cursor:pointer;border-radius:var(--moveo-border-radius-base);transition:background-color 250ms ease-out}.d8m3WXyfDmQq0_RD0YHK:hover{background-color:var(--moveo-dropdown-button-onhover-color)}.xHH_GfluBSsUosPZIOQb{display:none}@media(max-width: 550px){.xHH_GfluBSsUosPZIOQb{align-items:center;background-color:var(--moveo-background-color);cursor:pointer;display:flex;height:1.5rem;justify-content:center;position:absolute;right:2.25rem;stroke:var(--text-secondary)}.xHH_GfluBSsUosPZIOQb .EfFw9EL7NVBY4XDQJII_{display:none}}.Ws5QRWn8x1BD0Qi5gW3g{position:absolute;visibility:visible;opacity:1;top:50px;left:21px;z-index:var(--moveo-dropdown-z-index);transition:opacity 250ms,visibility 250ms}.Ws5QRWn8x1BD0Qi5gW3g.EfFw9EL7NVBY4XDQJII_{visibility:hidden;opacity:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Header/Header.module.scss\",\"webpack://./src/styles/breakpoints.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAKA,sBACE,kBAAA,CACA,wCAAA,CACA,sCAAA,CACA,YAAA,CACA,iBAAA,CACA,iBAAA,CACA,8DAAA,CACA,+DAAA,CCNA,yBDFF,sBAWI,wBAAA,CACA,yBAAA,CAAA,CAIJ,sBEsFE,iBC7FS,CD8FT,+BAAA,CACA,oBCjGS,CDkGT,wBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CFzFA,MAAA,CAEA,4CACE,iBAAA,CAEA,gDACE,iBAAA,CACA,cAAA,CACA,SGdI,CHmBV,sBACE,iBAAA,CACA,YG5BS,CH6BT,qBAAA,CACA,cAAA,CACA,6CAAA,CACA,0CAAA,CAEA,4BACE,2DAAA,CAIJ,sBACE,YAAA,CC5CA,yBD2CF,sBAII,kBAAA,CACA,8CAAA,CACA,cAAA,CACA,YAAA,CACA,aGjDO,CHkDP,sBAAA,CACA,iBAAA,CACA,aGvDO,CHwDP,4BAAA,CAEA,4CACE,YAAA,CAAA,CAKN,sBACE,iBAAA,CACA,kBAAA,CACA,SAAA,CACA,QAAA,CACA,SAAA,CACA,qCAAA,CACA,yCAAA,CAEA,2CACE,iBAAA,CACA,SAAA\",\"sourcesContent\":[\"@import '../../styles/spacing';\\n@import '../../styles/breakpoints';\\n@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.container {\\n align-items: center;\\n background: var($text-primary);\\n box-shadow: var(--moveo-shadow-message);\\n display: flex;\\n position: relative;\\n text-align: center;\\n border-top-left-radius: calc(var(--moveo-border-radius-base) * 2);\\n border-top-right-radius: calc(var(--moveo-border-radius-base) * 2);\\n\\n @include phone {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n }\\n}\\n\\n.titleWrapper {\\n @include header-title;\\n\\n flex: 1;\\n\\n .title {\\n position: relative;\\n\\n svg {\\n position: absolute;\\n right: -$space-12;\\n top: $space-6;\\n }\\n }\\n}\\n\\n.dots {\\n position: absolute;\\n left: $space-20;\\n padding: $space-6 $space-10;\\n cursor: pointer;\\n border-radius: var(--moveo-border-radius-base);\\n transition: background-color 250ms ease-out;\\n\\n &:hover {\\n background-color: var($dropdown-button-onhover-color);\\n }\\n}\\n\\n.closeButton {\\n display: none;\\n\\n @include phone {\\n align-items: center;\\n background-color: var($text-primary);\\n cursor: pointer;\\n display: flex;\\n height: $space-24;\\n justify-content: center;\\n position: absolute;\\n right: $space-36;\\n stroke: var($text-secondary);\\n\\n .hidden {\\n display: none;\\n }\\n }\\n}\\n\\n.dropdown {\\n position: absolute;\\n visibility: visible;\\n opacity: 1;\\n top: 50px;\\n left: 21px;\\n z-index: var(--moveo-dropdown-z-index);\\n transition: opacity 250ms, visibility 250ms;\\n\\n &.hidden {\\n visibility: hidden;\\n opacity: 0;\\n }\\n}\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"mTFHSVjnSUFdoSnWwGhe\",\n\t\"titleWrapper\": \"MSG89uyW2_NJukecgiWu\",\n\t\"title\": \"X77jCI7sgjXhRwLBzrnp\",\n\t\"dots\": \"d8m3WXyfDmQq0_RD0YHK\",\n\t\"closeButton\": \"xHH_GfluBSsUosPZIOQb\",\n\t\"hidden\": \"EfFw9EL7NVBY4XDQJII_\",\n\t\"dropdown\": \"Ws5QRWn8x1BD0Qi5gW3g\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".mdD6salT3NVUboLIhtVT{cursor:pointer;display:block}@media(max-width: 550px){.mdD6salT3NVUboLIhtVT.NEkZ1wzQ6jQaBfNDygXO{display:none}}.URqJSUqEmireIh3pczZZ circle,.URqJSUqEmireIh3pczZZ rect{fill:var(--moveo-background-color)}.URqJSUqEmireIh3pczZZ:hover circle,.URqJSUqEmireIh3pczZZ:hover rect{filter:brightness(85%)}.URqJSUqEmireIh3pczZZ path{fill:var(--text-secondary)}.tpMswGPbYh0ms5vKkpFI{fill:var(--moveo-background-color)}.tpMswGPbYh0ms5vKkpFI path:nth-child(2){fill:var(--text-secondary)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Icons/BubbleIcon.module.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAGA,sBACE,cAAA,CACA,aAAA,CCEA,yBDCE,2CACE,YAAA,CAAA,CAMJ,wDAEE,kCAAA,CAIA,oEAEE,sBAAA,CAIJ,2BACE,0BAAA,CAIJ,sBACE,kCAAA,CAEA,wCACE,0BAAA\",\"sourcesContent\":[\"@import '../../styles/breakpoints';\\n@import '../../styles/theme';\\n\\n.icon {\\n cursor: pointer;\\n display: block;\\n\\n @include phone {\\n &.hidden {\\n display: none;\\n }\\n }\\n}\\n\\n.openIcon {\\n circle,\\n rect {\\n fill: var($text-primary);\\n }\\n\\n &:hover {\\n circle,\\n rect {\\n filter: brightness(85%);\\n }\\n }\\n\\n path {\\n fill: var($text-secondary);\\n }\\n}\\n\\n.closeIcon {\\n fill: var($text-primary);\\n\\n path:nth-child(2) {\\n fill: var($text-secondary);\\n }\\n}\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"icon\": \"mdD6salT3NVUboLIhtVT\",\n\t\"hidden\": \"NEkZ1wzQ6jQaBfNDygXO\",\n\t\"openIcon\": \"URqJSUqEmireIh3pczZZ\",\n\t\"closeIcon\": \"tpMswGPbYh0ms5vKkpFI\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".BiRLndGR5_v98X1AMGD9{fill:var(--moveo-text-04)}.BiRLndGR5_v98X1AMGD9 rect,.BiRLndGR5_v98X1AMGD9 circle{fill:var(--moveo-text-03)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Icons/EmptyIcon.module.scss\"],\"names\":[],\"mappings\":\"AAEA,sBACE,yBAAA,CAEA,wDAEE,yBAAA\",\"sourcesContent\":[\"@import '../../styles/theme';\\n\\n.icon {\\n fill: var($text-04);\\n\\n rect,\\n circle {\\n fill: var($text-03);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"icon\": \"BiRLndGR5_v98X1AMGD9\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".tc0T2DvsFpST1zmMaGZN{display:inline-block;width:1rem;height:1rem;border:3px solid rgba(0,0,0,.3);border-radius:50%;border-top-color:var(--moveo-background-color);animation:OoWUnbicjaRmYnAcxzju 1s ease-in-out infinite}@keyframes OoWUnbicjaRmYnAcxzju{to{transform:rotate(360deg)}}@keyframes OoWUnbicjaRmYnAcxzju{to{transform:rotate(360deg)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Icons/LoadingIcon.module.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAGA,sBACE,oBAAA,CACA,UCQS,CDPT,WCOS,CDNT,+BAAA,CACA,iBAAA,CACA,8CAAA,CACA,sDAAA,CAEA,gCACE,GACE,wBAAA,CAAA,CAIJ,gCACE,GACE,wBAAA,CAAA\",\"sourcesContent\":[\"@import '../../styles/spacing';\\n@import '../../styles/theme';\\n\\n.loading {\\n display: inline-block;\\n width: $space-16;\\n height: $space-16;\\n border: 3px solid rgb(0 0 0 / 30%);\\n border-radius: 50%;\\n border-top-color: var($text-primary);\\n animation: spin 1s ease-in-out infinite;\\n\\n @keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n }\\n\\n @keyframes spin {\\n to {\\n transform: rotate(360deg);\\n }\\n }\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"loading\": \"tc0T2DvsFpST1zmMaGZN\",\n\t\"spin\": \"OoWUnbicjaRmYnAcxzju\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sC8h_TIutWsbteV2ruVo{fill:var(--moveo-color-disabled)}.MimkB4NMw69mhMIsg_k1{fill:var(--moveo-text-success)}.TZ5W7vCPqIQREEoozyit{fill:var(--moveo-text-failure)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Icons/StatusDotIcon.module.scss\"],\"names\":[],\"mappings\":\"AAEA,sBACE,gCAAA,CAGF,sBACE,8BAAA,CAGF,sBACE,8BAAA\",\"sourcesContent\":[\"@import '../../styles/theme';\\n\\n.icon {\\n fill: var($color-disabled);\\n}\\n\\n.online {\\n fill: var($text-success);\\n}\\n\\n.offline {\\n fill: var($text-failure);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"icon\": \"sC8h_TIutWsbteV2ruVo\",\n\t\"online\": \"MimkB4NMw69mhMIsg_k1\",\n\t\"offline\": \"TZ5W7vCPqIQREEoozyit\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".gjLYgqoFVJlQRz9Xa8_P{margin-bottom:1rem}.O6rpNIdxwZMpZoTdQ2Ot{display:flex;position:relative;height:50px;width:100%;align-items:center;box-sizing:border-box}.O6rpNIdxwZMpZoTdQ2Ot .rikV1QPN80GGKYR7b_Tk{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;position:absolute;pointer-events:none;left:0;top:1.5rem;transition:all .2s}.O6rpNIdxwZMpZoTdQ2Ot.onddeMNRvAgXAC3W57hf .rikV1QPN80GGKYR7b_Tk::before{content:\\\"*\\\";position:absolute;color:var(--moveo-text-failure);right:-0.5rem}.GRggPQ1rZgvcyCxPPgvw{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;height:40px;width:100%;caret-color:var(--moveo-background-color);border:0;border-bottom:1px solid var(--message-bubble-border-color);float:left;transition:border-color .2s}.GRggPQ1rZgvcyCxPPgvw.O3pmgpEvaeJCl1z14SdK+.rikV1QPN80GGKYR7b_Tk,.GRggPQ1rZgvcyCxPPgvw:focus+.rikV1QPN80GGKYR7b_Tk{top:-0.5rem;left:0}.GRggPQ1rZgvcyCxPPgvw.O3pmgpEvaeJCl1z14SdK+.rikV1QPN80GGKYR7b_Tk{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem}.GRggPQ1rZgvcyCxPPgvw:focus+.rikV1QPN80GGKYR7b_Tk{font-family:var(--moveo-font-primary);font-size:.625rem;font-weight:400;letter-spacing:0;line-height:1rem;font-size:.875rem;font-weight:600;color:var(--moveo-background-color)}.GRggPQ1rZgvcyCxPPgvw:focus{border-bottom:1px solid var(--moveo-background-color);outline:none}.MsIHAn8pSE3UOFxht4EY .GRggPQ1rZgvcyCxPPgvw{border-bottom:1px solid var(--moveo-text-failure)}.AsJ_w6YBzArXZJvMgL6f{color:var(--moveo-text-failure)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Input/Input.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/fonts.scss\"],\"names\":[],\"mappings\":\"AAOA,sBACE,kBCKS,CDFX,sBACE,YAAA,CACA,iBAAA,CACA,WAViB,CAWjB,UAAA,CACA,kBAAA,CACA,qBAAA,CAEA,4CEsBA,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CDUP,iBAAA,CACA,mBAAA,CACA,MAAA,CACA,UChBO,CDiBP,kBAAA,CAIA,yEACE,WAAA,CACA,iBAAA,CACA,+BAAA,CACA,aAAA,CAKN,sBEEE,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CD8BT,WArCa,CAsCb,UAAA,CACA,yCAAA,CACA,QAAA,CACA,0DAAA,CACA,UAAA,CACA,2BAAA,CAEA,mHAEE,WAAA,CACA,MAAA,CAGF,iEEfA,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CDgDT,kDEtDA,qCAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,gBDGS,CC6CT,iBD5CS,CC6CT,eAAA,CFIE,mCAAA,CAGF,4BACE,qDAAA,CACA,YAAA,CAIJ,4CACE,iDAAA,CAGF,sBACE,+BAAA\",\"sourcesContent\":[\"@import '../../styles/theme';\\n@import '../../styles/spacing';\\n@import '../../styles/fonts';\\n\\n$container-height: 50px;\\n$input-height: 40px;\\n\\n.container {\\n margin-bottom: $space-16;\\n}\\n\\n.inputContainer {\\n display: flex;\\n position: relative;\\n height: $container-height;\\n width: 100%;\\n align-items: center;\\n box-sizing: border-box;\\n\\n .label {\\n @include body-regular;\\n\\n position: absolute;\\n pointer-events: none;\\n left: 0;\\n top: $space-24;\\n transition: all 0.2s;\\n }\\n\\n &.required {\\n .label::before {\\n content: '*';\\n position: absolute;\\n color: var($text-failure);\\n right: calc($space-8 * -1);\\n }\\n }\\n}\\n\\n.input {\\n @include body-regular;\\n\\n height: $input-height;\\n width: 100%;\\n caret-color: var($text-primary);\\n border: 0;\\n border-bottom: 1px solid var($message-bubble-border-color);\\n float: left;\\n transition: border-color 0.2s;\\n\\n &.dirty + .label,\\n &:focus + .label {\\n top: calc($space-8 * -1);\\n left: 0;\\n }\\n\\n &.dirty + .label {\\n @include body-regular;\\n }\\n\\n &:focus + .label {\\n @include body-medium;\\n\\n color: var($text-primary);\\n }\\n\\n &:focus {\\n border-bottom: 1px solid var($text-primary);\\n outline: none;\\n }\\n}\\n\\n.error .input {\\n border-bottom: 1px solid var($text-failure);\\n}\\n\\n.errorMessage {\\n color: var($text-failure);\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"gjLYgqoFVJlQRz9Xa8_P\",\n\t\"inputContainer\": \"O6rpNIdxwZMpZoTdQ2Ot\",\n\t\"label\": \"rikV1QPN80GGKYR7b_Tk\",\n\t\"required\": \"onddeMNRvAgXAC3W57hf\",\n\t\"input\": \"GRggPQ1rZgvcyCxPPgvw\",\n\t\"dirty\": \"O3pmgpEvaeJCl1z14SdK\",\n\t\"error\": \"MsIHAn8pSE3UOFxht4EY\",\n\t\"errorMessage\": \"AsJ_w6YBzArXZJvMgL6f\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".JPGgYXUypEmh4hJyE7eT{bottom:1.25rem;position:absolute;right:1.25rem;z-index:var(--moveo-z-index, 1100)}.JPGgYXUypEmh4hJyE7eT.JEOxi6s0ukZg9kUgODxm,.JPGgYXUypEmh4hJyE7eT.VYo6hGDoyAfGac6aLEtw,.JPGgYXUypEmh4hJyE7eT.bx7CeuZWqlYBxYw48S4a.dmg6gBmln7zDlgukD6It{display:none}.JPGgYXUypEmh4hJyE7eT .E8m42RXhqyv0jde5li61{position:absolute;right:0;width:.75rem;height:.75rem;border-radius:50%;background:var(--moveo-text-error)}.JPGgYXUypEmh4hJyE7eT._rFpPBnJun_grA1XViSZ .ZQZHNPB46gtCQKuKJAr3.JKQwoBifOebXCjftJfMO{transform:none;left:0}.JPGgYXUypEmh4hJyE7eT._rFpPBnJun_grA1XViSZ.WFlwltpUGcRGq3f6Vzkn .E8m42RXhqyv0jde5li61{transform:translate(-3px, 0)}._nfXTqGg_AQKu_sk0ivt{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;cursor:pointer;display:flex;align-items:center;background:var(--moveo-background-color);border-radius:50px;padding:.5rem .75rem;color:var(--moveo-text-05)}._nfXTqGg_AQKu_sk0ivt .ZQZHNPB46gtCQKuKJAr3{margin:0}._nfXTqGg_AQKu_sk0ivt img{width:1.5rem;height:1.5rem;border-radius:50%;margin-right:.5rem}.xM1rX3O2cgHuGzFgTW_4::before,.xM1rX3O2cgHuGzFgTW_4::after{border:1px solid #000;content:\\\" \\\";height:calc(100% - 2px);left:0;position:absolute;top:0;width:calc(100% - 2px);z-index:var(--moveo-luncher-animate-after-z-index)}.WFlwltpUGcRGq3f6Vzkn.xM1rX3O2cgHuGzFgTW_4::before,.WFlwltpUGcRGq3f6Vzkn.xM1rX3O2cgHuGzFgTW_4::after{border-radius:50%}._rFpPBnJun_grA1XViSZ.xM1rX3O2cgHuGzFgTW_4::before,._rFpPBnJun_grA1XViSZ.xM1rX3O2cgHuGzFgTW_4::after{border-radius:50px}@media(max-width: 550px){.NIAiyHEzDnEwT3coVHh8{display:none}}.xM1rX3O2cgHuGzFgTW_4::before{animation:aI9DWRSR8bg6SmLnIWEA 1.2s ease-in-out infinite both}.xM1rX3O2cgHuGzFgTW_4::after{animation:k8rllmyTkWETaYdQl9CQ 1.2s ease-in-out infinite both}@keyframes aI9DWRSR8bg6SmLnIWEA{0%{opacity:.8;transform:scale(0.5)}100%{opacity:0;transform:scale(1.3)}}@keyframes k8rllmyTkWETaYdQl9CQ{0%{opacity:.8;transform:scale(0.5)}100%{opacity:0;transform:scale(1.1)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Launcher/Launcher.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAIA,sBACE,cCMS,CDLT,iBAAA,CACA,aCIS,CDHT,kCAAA,CAEA,sJAGE,YAAA,CAGF,4CACE,iBAAA,CACA,OAAA,CACA,YCJO,CDKP,aCLO,CDMP,iBAAA,CACA,kCAAA,CAIA,sFACE,cAAA,CACA,MAAA,CAIA,sFACE,4BAAA,CAMR,sBEEE,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CD8BT,cAAA,CACA,YAAA,CACA,kBAAA,CACA,wCAAA,CACA,kBAAA,CACA,oBAAA,CACA,0BAAA,CAEA,4CACE,QAAA,CAGF,0BACE,YC9CO,CD+CP,aC/CO,CDgDP,iBAAA,CACA,kBCzCM,CD6CV,2DAEE,qBAAA,CACA,WAAA,CACA,uBAAA,CACA,MAAA,CACA,iBAAA,CACA,KAAA,CACA,sBAAA,CACA,kDAAA,CAGF,qGAEE,iBAAA,CAGF,qGAEE,kBAAA,CG1EA,yBH8EA,sBACE,YAAA,CAAA,CAIJ,8BACE,6DAAA,CAGF,6BACE,6DAAA,CAGF,gCACE,GACE,UAAA,CACA,oBAAA,CAGF,KACE,SAAA,CACA,oBAAA,CAAA,CAIJ,gCACE,GACE,UAAA,CACA,oBAAA,CAGF,KACE,SAAA,CACA,oBAAA,CAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/breakpoints';\\n\\n.launcher {\\n bottom: $space-20;\\n position: absolute;\\n right: $space-20;\\n z-index: var(--moveo-z-index, 1100);\\n\\n &.embed,\\n &.fullpage,\\n &.popup.open {\\n display: none;\\n }\\n\\n .dot {\\n position: absolute;\\n right: 0;\\n width: $space-12;\\n height: $space-12;\\n border-radius: 50%;\\n background: var(--moveo-text-error);\\n }\\n\\n &.type--help {\\n .text.regular {\\n transform: none;\\n left: 0;\\n }\\n\\n &.type--bubble {\\n .dot {\\n transform: translate(-3px, 0);\\n }\\n }\\n }\\n}\\n\\n.help {\\n @include body-regular;\\n\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n background: var(--moveo-background-color);\\n border-radius: 50px;\\n padding: $space-8 $space-12;\\n color: var(--moveo-text-05);\\n\\n .text {\\n margin: 0;\\n }\\n\\n img {\\n width: $space-24;\\n height: $space-24;\\n border-radius: 50%;\\n margin-right: $space-8;\\n }\\n}\\n\\n.animate::before,\\n.animate::after {\\n border: 1px solid black;\\n content: ' ';\\n height: calc(100% - 2px);\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: calc(100% - 2px);\\n z-index: var(--moveo-luncher-animate-after-z-index);\\n}\\n\\n.type--bubble.animate::before,\\n.type--bubble.animate::after {\\n border-radius: 50%;\\n}\\n\\n.type--help.animate::before,\\n.type--help.animate::after {\\n border-radius: 50px;\\n}\\n\\n@include phone {\\n .hidden {\\n display: none;\\n }\\n}\\n\\n.animate::before {\\n animation: ping 1.2s ease-in-out infinite both;\\n}\\n\\n.animate::after {\\n animation: ping2 1.2s ease-in-out infinite both;\\n}\\n\\n@keyframes ping {\\n 0% {\\n opacity: 0.8;\\n transform: scale(0.5);\\n }\\n\\n 100% {\\n opacity: 0;\\n transform: scale(1.3);\\n }\\n}\\n\\n@keyframes ping2 {\\n 0% {\\n opacity: 0.8;\\n transform: scale(0.5);\\n }\\n\\n 100% {\\n opacity: 0;\\n transform: scale(1.1);\\n }\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"launcher\": \"JPGgYXUypEmh4hJyE7eT\",\n\t\"embed\": \"JEOxi6s0ukZg9kUgODxm\",\n\t\"fullpage\": \"VYo6hGDoyAfGac6aLEtw\",\n\t\"popup\": \"bx7CeuZWqlYBxYw48S4a\",\n\t\"open\": \"dmg6gBmln7zDlgukD6It\",\n\t\"dot\": \"E8m42RXhqyv0jde5li61\",\n\t\"type--help\": \"_rFpPBnJun_grA1XViSZ\",\n\t\"text\": \"ZQZHNPB46gtCQKuKJAr3\",\n\t\"regular\": \"JKQwoBifOebXCjftJfMO\",\n\t\"type--bubble\": \"WFlwltpUGcRGq3f6Vzkn\",\n\t\"help\": \"_nfXTqGg_AQKu_sk0ivt\",\n\t\"animate\": \"xM1rX3O2cgHuGzFgTW_4\",\n\t\"hidden\": \"NIAiyHEzDnEwT3coVHh8\",\n\t\"ping\": \"aI9DWRSR8bg6SmLnIWEA\",\n\t\"ping2\": \"k8rllmyTkWETaYdQl9CQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".iUi3oYec51IuynPmas70{background:var(--moveo-text-04);border:1px solid var(--moveo-color-border);border-radius:var(--moveo-border-radius-base);display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}._Ugi6aaNS880bsJUlvGY{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;font-weight:600;border-radius:50px;display:inline-block;line-height:1;margin-bottom:.5rem;outline:none;padding:.5rem 2rem;position:relative;text-align:center;text-decoration:none;text-transform:none;transition:all 250ms ease-out;vertical-align:middle;cursor:pointer;background-color:var(--text-secondary);border:1px solid var(--moveo-background-color);color:var(--moveo-background-color)}._Ugi6aaNS880bsJUlvGY:disabled{cursor:not-allowed;color:var(--moveo-color-disabled);border:1px solid var(--moveo-color-disabled)}._Ugi6aaNS880bsJUlvGY:hover:enabled{background-color:var(--moveo-background-color);color:var(--text-secondary)}._B6FHexwJGFQ4C4owrwZ{border:0;background-color:transparent;cursor:pointer}._B6FHexwJGFQ4C4owrwZ:disabled{cursor:not-allowed}a._Ugi6aaNS880bsJUlvGY:hover{background-color:var(--moveo-background-color);color:var(--text-secondary)}.cP6bKpp7UaFMB1ozWBxQ{height:var(--moveo-card-mediaContainer-height);width:100%}.cP6bKpp7UaFMB1ozWBxQ img,.cP6bKpp7UaFMB1ozWBxQ video{height:100%;object-fit:cover;width:100%}.AffMp11_X1Wxq34REGiX{padding:.5rem .75rem 0}.S6APcqDel3omSYbRkrDT{font-family:var(--moveo-font-primary);font-size:.625rem;font-weight:400;letter-spacing:0;line-height:1rem;font-size:.875rem;font-weight:600;color:var(--moveo-text-01);margin-bottom:.25rem}.FuuBQbqO5PrfSw95TiLB{color:var(--moveo-text-02);margin:0;opacity:.8}.XZJ20mvZyhqG1a4HHfE1{display:flex;flex-direction:column;padding:.75rem}.XZJ20mvZyhqG1a4HHfE1 .v4sz_527ggtKR8iEKo2y{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Message/Carousel/Card.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAIA,sBACE,+BAAA,CACA,0CAAA,CACA,6CAAA,CACA,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,eAAA,CAGF,sBCsEE,qCAAA,CACA,gBCtES,CDuET,eAAA,CACA,gBAAA,CACA,kBC/ES,CDqFT,eAAA,CD7EA,kBAAA,CACA,oBAAA,CACA,aAAA,CACA,mBEHQ,CFIR,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,oBAAA,CACA,mBAAA,CACA,6BAAA,CACA,qBAAA,CACA,cAAA,CACA,sCAAA,CACA,8CAAA,CACA,mCAAA,CAEA,+BACE,kBAAA,CACA,iCAAA,CACA,4CAAA,CAGF,oCACE,8CAAA,CACA,2BAAA,CAIJ,sBACE,QAAA,CACA,4BAAA,CACA,cAAA,CAEA,+BACE,kBAAA,CAIJ,6BACE,8CAAA,CACA,2BAAA,CAGF,sBACE,8CAAA,CACA,UAAA,CAEA,sDAEE,WAAA,CACA,gBAAA,CACA,UAAA,CAIJ,sBACE,sBAAA,CAGF,sBCvEE,qCAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,gBCGS,CD6CT,iBC5CS,CD6CT,eAAA,CDqBA,0BAAA,CACA,oBE9DQ,CFiEV,sBACE,0BAAA,CACA,QAAA,CACA,UAAA,CAGF,sBACE,YAAA,CACA,qBAAA,CACA,cE9ES,CFgFT,4CACE,mBAAA\",\"sourcesContent\":[\"@import '../../../styles/fonts';\\n@import '../../../styles/spacing';\\n@import '../../../styles/theme';\\n\\n.card {\\n background: var($text-04);\\n border: 1px solid var(--moveo-color-border);\\n border-radius: var(--moveo-border-radius-base);\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n overflow: hidden;\\n}\\n\\n.button {\\n @include body-2-medium;\\n\\n border-radius: 50px;\\n display: inline-block;\\n line-height: 1;\\n margin-bottom: $space-8;\\n outline: none;\\n padding: $space-8 $space-32;\\n position: relative;\\n text-align: center;\\n text-decoration: none;\\n text-transform: none;\\n transition: all 250ms ease-out;\\n vertical-align: middle;\\n cursor: pointer;\\n background-color: var($text-secondary);\\n border: 1px solid var($text-primary);\\n color: var($text-primary);\\n\\n &:disabled {\\n cursor: not-allowed;\\n color: var($color-disabled);\\n border: 1px solid var($color-disabled);\\n }\\n\\n &:hover:enabled {\\n background-color: var($text-primary);\\n color: var($text-secondary);\\n }\\n}\\n\\n.defaultActionButton {\\n border: 0;\\n background-color: transparent;\\n cursor: pointer;\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n}\\n\\na.button:hover {\\n background-color: var($text-primary);\\n color: var($text-secondary);\\n}\\n\\n.mediaContainer {\\n height: var(--moveo-card-mediaContainer-height);\\n width: 100%;\\n\\n img,\\n video {\\n height: 100%;\\n object-fit: cover;\\n width: 100%;\\n }\\n}\\n\\n.headingContainer {\\n padding: $space-8 $space-12 0;\\n}\\n\\n.title {\\n @include body-medium;\\n\\n color: var($text-01);\\n margin-bottom: $space-4;\\n}\\n\\n.subtitle {\\n color: var($text-02);\\n margin: 0;\\n opacity: 0.8;\\n}\\n\\n.buttonsContainer {\\n display: flex;\\n flex-direction: column;\\n padding: $space-12;\\n\\n .buttonDisabled {\\n pointer-events: none;\\n }\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"card\": \"iUi3oYec51IuynPmas70\",\n\t\"button\": \"_Ugi6aaNS880bsJUlvGY\",\n\t\"defaultActionButton\": \"_B6FHexwJGFQ4C4owrwZ\",\n\t\"mediaContainer\": \"cP6bKpp7UaFMB1ozWBxQ\",\n\t\"headingContainer\": \"AffMp11_X1Wxq34REGiX\",\n\t\"title\": \"S6APcqDel3omSYbRkrDT\",\n\t\"subtitle\": \"FuuBQbqO5PrfSw95TiLB\",\n\t\"buttonsContainer\": \"XZJ20mvZyhqG1a4HHfE1\",\n\t\"buttonDisabled\": \"v4sz_527ggtKR8iEKo2y\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/keen-slider/keen-slider.min.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".Z9WeSC8zhy4iV70wWjUF{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;position:relative;line-height:1.45;word-wrap:break-word;float:left;margin-left:2.25rem;width:100%;color:var(--moveo-text-02);list-style:none;margin-bottom:.75rem;clear:both}.i30MGZV6R1PjQCXsO3em{overflow:hidden;position:relative;width:100%}.i30MGZV6R1PjQCXsO3em:not(.o2MYfocInS_KYhs8crs2){max-width:calc(240px + .75rem)}.i30MGZV6R1PjQCXsO3em.o2MYfocInS_KYhs8crs2{width:100%}.i30MGZV6R1PjQCXsO3em.o2MYfocInS_KYhs8crs2>div:first-child{position:relative;padding-right:1.25rem;overflow:hidden}.i30MGZV6R1PjQCXsO3em:not(.o2MYfocInS_KYhs8crs2)>div:first-child{position:relative;width:240px;padding-right:.75rem}.i30MGZV6R1PjQCXsO3em a{text-decoration:none}.G4oxe9RhKHWiXHNI5tK4{align-items:center;background-color:var(--moveo-text-01);border-radius:50%;border:0;color:var(--moveo-text-04);display:flex;height:2rem;justify-content:center;opacity:.7;position:absolute;top:50%;transition:opacity .2s;width:2rem;cursor:pointer}.G4oxe9RhKHWiXHNI5tK4 svg path{stroke:var(--moveo-text-04)}.BYWgE31IPo0ay9gbfZgl{left:-2.5rem}.YFZvkezrNmcYmHEcnKM_{left:calc(240px + .5rem + .125rem);transform:rotate(180deg)}.aOwq4TPnBM8Je44zPybo{color:var(--moveo-text-03);margin-top:.5rem;pointer-events:none;text-align:center}.XhyZyk0PIGG1BEdq8H9p{overflow:visible}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Message/Carousel/Carousel.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAOA,sBC6EE,qCAAA,CACA,gBCtES,CDuET,eAAA,CACA,gBAAA,CACA,kBC/ES,CFCT,iBAAA,CACA,gBAAA,CACA,oBAAA,CACA,UAAA,CACA,mBERS,CFST,UAAA,CACA,0BAAA,CACA,eAAA,CACA,oBEHS,CFIT,UAAA,CAGF,sBACE,eAAA,CACA,iBAAA,CACA,UAAA,CAEA,iDACE,8BAAA,CAGF,2CACE,UAAA,CAGF,2DACE,iBAAA,CACA,qBE1BO,CF2BP,eAAA,CAGF,iEACE,iBAAA,CACA,WAtCkB,CAuClB,oBE7BO,CFgCT,wBACE,oBAAA,CAIJ,sBACE,kBAAA,CACA,qCAAA,CACA,iBAAA,CACA,QAAA,CACA,0BAAA,CACA,YAAA,CACA,WEpDS,CFqDT,sBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,sBAAA,CACA,UE1DS,CF2DT,cAAA,CAEA,+BACE,2BAAA,CAIJ,sBACE,YAAA,CAGF,sBACE,kCAAA,CACA,wBAAA,CAGF,sBACE,0BAAA,CACA,gBEnEQ,CFoER,mBAAA,CACA,iBAAA,CAGF,sBACE,gBAAA\",\"sourcesContent\":[\"@import 'keen-slider/keen-slider.min.css';\\n@import '../../../styles/fonts';\\n@import '../../../styles/spacing';\\n@import '../../../styles/theme';\\n\\n$carousel-card-width: 240px;\\n\\n.bubble {\\n @include body-2-regular;\\n\\n position: relative;\\n line-height: 1.45;\\n word-wrap: break-word;\\n float: left;\\n margin-left: $space-36;\\n width: 100%;\\n color: var($text-02);\\n list-style: none;\\n margin-bottom: $space-12;\\n clear: both;\\n}\\n\\n.container {\\n overflow: hidden;\\n position: relative;\\n width: 100%;\\n\\n &:not(.isMobile) {\\n max-width: calc($carousel-card-width + $space-12);\\n }\\n\\n &.isMobile {\\n width: 100%;\\n }\\n\\n &.isMobile > div:first-child {\\n position: relative;\\n padding-right: $space-20;\\n overflow: hidden;\\n }\\n\\n &:not(.isMobile) > div:first-child {\\n position: relative;\\n width: $carousel-card-width;\\n padding-right: $space-12;\\n }\\n\\n a {\\n text-decoration: none;\\n }\\n}\\n\\n.arrowBtn {\\n align-items: center;\\n background-color: var(--moveo-text-01);\\n border-radius: 50%;\\n border: 0;\\n color: var($text-04);\\n display: flex;\\n height: $space-32;\\n justify-content: center;\\n opacity: 0.7;\\n position: absolute;\\n top: 50%;\\n transition: opacity 0.2s;\\n width: $space-32;\\n cursor: pointer;\\n\\n svg path {\\n stroke: var($text-04);\\n }\\n}\\n\\n.arrowBtnLeft {\\n left: -$space-40;\\n}\\n\\n.arrowBtnRight {\\n left: calc($carousel-card-width + $space-8 + $space-2);\\n transform: rotate(180deg);\\n}\\n\\n.legend {\\n color: var($text-03);\\n margin-top: $space-8;\\n pointer-events: none;\\n text-align: center;\\n}\\n\\n.slider {\\n overflow: visible;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"bubble\": \"Z9WeSC8zhy4iV70wWjUF\",\n\t\"container\": \"i30MGZV6R1PjQCXsO3em\",\n\t\"isMobile\": \"o2MYfocInS_KYhs8crs2\",\n\t\"arrowBtn\": \"G4oxe9RhKHWiXHNI5tK4\",\n\t\"arrowBtnLeft\": \"BYWgE31IPo0ay9gbfZgl\",\n\t\"arrowBtnRight\": \"YFZvkezrNmcYmHEcnKM_\",\n\t\"legend\": \"aOwq4TPnBM8Je44zPybo\",\n\t\"slider\": \"XhyZyk0PIGG1BEdq8H9p\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".j54gKJizwhFTEkNbdvmt{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;box-sizing:border-box;position:relative;clear:both;border-radius:var(--moveo-border-radius-base);box-shadow:var(--moveo-shadow-message);border:1px solid var(--message-bubble-border-color);padding:1.125rem 1.375rem;max-width:var(--moveo-chat-monad-max-width);line-height:1.45;word-wrap:break-word;width:var(--moveo-chat-monad-width);margin-top:.4rem}@media(max-width: 550px){.j54gKJizwhFTEkNbdvmt{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;font-size:1rem;line-height:1.375rem;max-width:var(--moveo-chat-monad-max-width-phone)}}.j54gKJizwhFTEkNbdvmt.XWEEXe58DDbLDj2FJ8M1{float:left;margin-left:2.25rem;box-shadow:var(--moveo-shadow-message);background-color:var(--moveo-text-04);color:var(--moveo-text-02);list-style:none}.j54gKJizwhFTEkNbdvmt.XWEEXe58DDbLDj2FJ8M1 a{color:var(--moveo-background-color)}.j54gKJizwhFTEkNbdvmt.XWEEXe58DDbLDj2FJ8M1 a:hover{filter:brightness(85%)}.j54gKJizwhFTEkNbdvmt.GWAO9E68yWKo8iY7l9GR{padding:.75rem .75rem;border-radius:var(--moveo-border-radius-base);border-top-left-radius:0;margin-top:.4rem;width:3.75rem}.NjxgzuiIutYZrIqfcK_v{display:block;border-radius:calc(var(--moveo-border-radius-base)/2);width:var(--moveo-audio-message-width)}.CtCHWJk5eDGsa2kY6Seg{transition:color 250ms ease-out;text-decoration:none;color:var(--moveo-background-color);vertical-align:middle;display:flex;align-items:center}.HWSDsvGyWPiZ6mxBHaXD{display:block;width:100%;max-width:100%;border-radius:var(--moveo-border-radius-base)}.fOwJ0MQE5MJU5btSol5c{height:100%;border:0}.j9qgL_B7Iev3L086nHxm{width:100%;max-width:100%;height:auto;border-radius:var(--moveo-border-radius-base)}.wtl52rjugWd8kjGWA8n3{transition:color 250ms ease-out;text-decoration:none;color:var(--moveo-background-color);vertical-align:middle}.DzpCt4rEpZYBN6c79qFz{display:flex;align-items:center;justify-content:space-between;width:2rem}.vG547U6INJMDmuh2Nl3h{background-color:var(--moveo-text-03);border-radius:100%;padding-bottom:var(--moveo-typingDot-padding-bottom);width:var(--moveo-typingDot-width);overflow:hidden;animation:NSYue3cN3Sxp8YsTiAyF 1200ms infinite}@keyframes NSYue3cN3Sxp8YsTiAyF{0%{transform:translateY(0);animation-timing-function:ease-out}25%{transform:translateY(-50%);animation-timing-function:ease-in-out}75%{transform:translateY(50%);animation-timing-function:ease-in}100%{transform:translateY(0)}}.vG547U6INJMDmuh2Nl3h.ZHFe9123RiZcZF1LnjnH{animation-delay:200ms}.vG547U6INJMDmuh2Nl3h.DYfb7E8MbD_afDP73UaY{animation-delay:400ms}.vG547U6INJMDmuh2Nl3h.G91N2kcRofh7hVf_mVxB{animation-delay:600ms}.qBKKjGQgNTYpwwho_zF8{float:right;box-shadow:none;padding:0;clear:both;list-style:none;text-align:end;padding-top:.75rem}.qBKKjGQgNTYpwwho_zF8 .obhNheo6foU0L7V_fMSw{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;display:inline-block;transition:all 250ms ease-out;margin:.5rem .5rem 0 0;border-radius:var(--moveo-border-radius-base);box-shadow:var(--moveo-shadow-bubble);cursor:pointer;padding:.5rem;line-height:1;background-color:var(--text-secondary);border:1px solid var(--moveo-background-color);color:var(--moveo-background-color)}.qBKKjGQgNTYpwwho_zF8 .obhNheo6foU0L7V_fMSw:disabled{cursor:not-allowed;color:var(--moveo-color-disabled);border:1px solid var(--moveo-color-disabled)}.qBKKjGQgNTYpwwho_zF8 .obhNheo6foU0L7V_fMSw:hover:enabled{background-color:var(--moveo-background-color);color:var(--text-secondary)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Message/Message.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAKA,sBCoCE,qCAAA,CACA,iBC5BS,CD6BT,eAAA,CACA,gBAAA,CACA,oBCjCS,CFJT,qBAAA,CACA,iBAAA,CACA,UAAA,CACA,6CAAA,CACA,sCAAA,CACA,mDAAA,CACA,yBAAA,CACA,2CAAA,CACA,gBAAA,CACA,oBAAA,CACA,mCAAA,CACA,gBEDQ,CCXR,yBHFF,sBCoCE,qCAAA,CACA,iBC5BS,CD6BT,eAAA,CACA,gBAAA,CACA,oBCjCS,CDuCT,cCtCS,CDuCT,oBC1CS,CFcP,iDAAA,CAAA,CAGF,2CACE,UAAA,CACA,mBEvBO,CFwBP,sCAAA,CACA,qCAAA,CACA,0BAAA,CACA,eAAA,CAEA,6CACE,mCAAA,CAEA,mDACE,sBAAA,CAKN,2CACE,qBAAA,CACA,6CAAA,CACA,wBAAA,CACA,gBE9BM,CF+BN,aE/CO,CFmDX,sBACE,aAAA,CACA,qDAAA,CACA,sCAAA,CAGF,sBACE,+BAAA,CACA,oBAAA,CACA,mCAAA,CACA,qBAAA,CACA,YAAA,CACA,kBAAA,CAGF,sBACE,aAAA,CACA,UAAA,CACA,cAAA,CACA,6CAAA,CAGF,sBACE,WAAA,CACA,QAAA,CAGF,sBACE,UAAA,CACA,cAAA,CACA,WAAA,CACA,6CAAA,CAGF,sBACE,+BAAA,CACA,oBAAA,CACA,mCAAA,CACA,qBAAA,CAGF,sBACE,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,UE3FS,CF8FX,sBACE,qCAAA,CACA,kBAAA,CACA,oDAAA,CACA,kCAAA,CACA,eAAA,CACA,8CAAA,CAEA,gCACE,GACE,uBAAA,CACA,kCAAA,CAGF,IACE,0BAAA,CACA,qCAAA,CAGF,IACE,yBAAA,CACA,iCAAA,CAGF,KACE,uBAAA,CAAA,CAIJ,2CACE,qBAAA,CAGF,2CACE,qBAAA,CAGF,2CACE,qBAAA,CAIJ,sBACE,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,eAAA,CACA,cAAA,CACA,kBEvIS,CFyIT,4CC/GA,qCAAA,CACA,iBC5BS,CD6BT,eAAA,CACA,gBAAA,CACA,oBCjCS,CF+IP,oBAAA,CACA,6BAAA,CACA,sBAAA,CACA,6CAAA,CACA,qCAAA,CACA,cAAA,CACA,aEhJM,CFiJN,aAAA,CACA,sCAAA,CACA,8CAAA,CACA,mCAAA,CAEA,qDACE,kBAAA,CACA,iCAAA,CACA,4CAAA,CAGF,0DACE,8CAAA,CACA,2BAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/theme';\\n@import '../../styles/breakpoints';\\n\\n.messageBubble {\\n @include body-regular;\\n\\n box-sizing: border-box;\\n position: relative;\\n clear: both;\\n border-radius: var(--moveo-border-radius-base);\\n box-shadow: var(--moveo-shadow-message);\\n border: 1px solid var($message-bubble-border-color);\\n padding: $space-18 $space-22;\\n max-width: var(--moveo-chat-monad-max-width);\\n line-height: 1.45;\\n word-wrap: break-word;\\n width: var(--moveo-chat-monad-width);\\n margin-top: $space-6;\\n\\n @include phone {\\n @include body-regular-phone;\\n\\n max-width: var(--moveo-chat-monad-max-width-phone);\\n }\\n\\n &.assistant {\\n float: left;\\n margin-left: $space-36;\\n box-shadow: var(--moveo-shadow-message);\\n background-color: var($text-04);\\n color: var($text-02);\\n list-style: none;\\n\\n a {\\n color: var($text-primary);\\n\\n &:hover {\\n filter: brightness(85%);\\n }\\n }\\n }\\n\\n &.typingWrapper {\\n padding: $space-12 $space-12;\\n border-radius: var(--moveo-border-radius-base);\\n border-top-left-radius: 0;\\n margin-top: $space-6;\\n width: $space-60;\\n }\\n}\\n\\n.audio {\\n display: block;\\n border-radius: calc(var(--moveo-border-radius-base) / 2);\\n width: var(--moveo-audio-message-width);\\n}\\n\\n.file {\\n transition: color 250ms ease-out;\\n text-decoration: none;\\n color: var($text-primary);\\n vertical-align: middle;\\n display: flex;\\n align-items: center;\\n}\\n\\n.image {\\n display: block;\\n width: 100%;\\n max-width: 100%;\\n border-radius: var(--moveo-border-radius-base);\\n}\\n\\n.iframe {\\n height: 100%;\\n border: 0;\\n}\\n\\n.video {\\n width: 100%;\\n max-width: 100%;\\n height: auto;\\n border-radius: var(--moveo-border-radius-base);\\n}\\n\\n.link {\\n transition: color 250ms ease-out;\\n text-decoration: none;\\n color: var($text-primary);\\n vertical-align: middle;\\n}\\n\\n.loaderWrapper {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n width: $space-32;\\n}\\n\\n.typingDot {\\n background-color: var($text-03);\\n border-radius: 100%;\\n padding-bottom: var(--moveo-typingDot-padding-bottom);\\n width: var(--moveo-typingDot-width);\\n overflow: hidden;\\n animation: elevator 1200ms infinite;\\n\\n @keyframes elevator {\\n 0% {\\n transform: translateY(0);\\n animation-timing-function: ease-out;\\n }\\n\\n 25% {\\n transform: translateY(-50%);\\n animation-timing-function: ease-in-out;\\n }\\n\\n 75% {\\n transform: translateY(50%);\\n animation-timing-function: ease-in;\\n }\\n\\n 100% {\\n transform: translateY(0);\\n }\\n }\\n\\n &.dot1 {\\n animation-delay: 200ms;\\n }\\n\\n &.dot2 {\\n animation-delay: 400ms;\\n }\\n\\n &.dot3 {\\n animation-delay: 600ms;\\n }\\n}\\n\\n.textOptionsContainer {\\n float: right;\\n box-shadow: none;\\n padding: 0;\\n clear: both;\\n list-style: none;\\n text-align: end;\\n padding-top: $space-12;\\n\\n .textOption {\\n @include body-regular;\\n\\n display: inline-block;\\n transition: all 250ms ease-out;\\n margin: $space-8 $space-8 0 0;\\n border-radius: var(--moveo-border-radius-base);\\n box-shadow: var(--moveo-shadow-bubble);\\n cursor: pointer;\\n padding: $space-8;\\n line-height: 1;\\n background-color: var($text-secondary);\\n border: 1px solid var($text-primary);\\n color: var($text-primary);\\n\\n &:disabled {\\n cursor: not-allowed;\\n color: var($color-disabled);\\n border: 1px solid var($color-disabled);\\n }\\n\\n &:hover:enabled {\\n background-color: var($text-primary);\\n color: var($text-secondary);\\n }\\n }\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"messageBubble\": \"j54gKJizwhFTEkNbdvmt\",\n\t\"assistant\": \"XWEEXe58DDbLDj2FJ8M1\",\n\t\"typingWrapper\": \"GWAO9E68yWKo8iY7l9GR\",\n\t\"audio\": \"NjxgzuiIutYZrIqfcK_v\",\n\t\"file\": \"CtCHWJk5eDGsa2kY6Seg\",\n\t\"image\": \"HWSDsvGyWPiZ6mxBHaXD\",\n\t\"iframe\": \"fOwJ0MQE5MJU5btSol5c\",\n\t\"video\": \"j9qgL_B7Iev3L086nHxm\",\n\t\"link\": \"wtl52rjugWd8kjGWA8n3\",\n\t\"loaderWrapper\": \"DzpCt4rEpZYBN6c79qFz\",\n\t\"typingDot\": \"vG547U6INJMDmuh2Nl3h\",\n\t\"elevator\": \"NSYue3cN3Sxp8YsTiAyF\",\n\t\"dot1\": \"ZHFe9123RiZcZF1LnjnH\",\n\t\"dot2\": \"DYfb7E8MbD_afDP73UaY\",\n\t\"dot3\": \"G91N2kcRofh7hVf_mVxB\",\n\t\"textOptionsContainer\": \"qBKKjGQgNTYpwwho_zF8\",\n\t\"textOption\": \"obhNheo6foU0L7V_fMSw\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".WURyBTc5PD8BckubdyNh{display:flex;flex-direction:column;justify-content:center;align-items:center}.WURyBTc5PD8BckubdyNh.IMpQKoS7vwP4XXSrsikC{min-height:calc(var(--moveo-modal-full-height) - var(--moveo-modal-header-height))}.WURyBTc5PD8BckubdyNh.bp7gcR6g1KZch9MsQPCh{min-height:112px}.WURyBTc5PD8BckubdyNh.alCdnyPRSRJ4mF9UdV0H{min-height:calc(var(--moveo-modal-tall-height) - var(--moveo-modal-header-height))}.WURyBTc5PD8BckubdyNh .xxS1WmS1mk6k_sPyDARx{display:none}.WURyBTc5PD8BckubdyNh iframe{width:100%;border:none;flex-grow:1}@media(max-width: 550px){.WURyBTc5PD8BckubdyNh.alCdnyPRSRJ4mF9UdV0H{min-height:54vh}.WURyBTc5PD8BckubdyNh.IMpQKoS7vwP4XXSrsikC{min-height:var(--moveo-modal-full-height)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Message/Webview/WebviewContainer.module.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAIA,sBACE,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CAEA,2CACE,kFAEE,CAKJ,2CACE,gBAAA,CAGF,2CACE,kFAEE,CAKJ,4CACE,YAAA,CAGF,6BACE,UAAA,CACA,WAAA,CACA,WAAA,CC9BF,yBDkCE,2CACE,eAAA,CAGF,2CACE,yCAAA,CAAA\",\"sourcesContent\":[\"@import '../../../styles/fonts';\\n@import '../../../styles/spacing';\\n@import '../../../styles/breakpoints';\\n\\n.iframeWrapper {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n\\n &.full {\\n min-height:\\n\\n calc(\\n var(--moveo-modal-full-height) - var(--moveo-modal-header-height)\\n );\\n }\\n\\n &.compact {\\n min-height: 112px;\\n }\\n\\n &.tall {\\n min-height:\\n\\n calc(\\n var(--moveo-modal-tall-height) - var(--moveo-modal-header-height)\\n );\\n }\\n\\n .hide {\\n display: none;\\n }\\n\\n iframe {\\n width: 100%;\\n border: none;\\n flex-grow: 1;\\n }\\n\\n @include phone {\\n &.tall {\\n min-height: 54vh;\\n }\\n\\n &.full {\\n min-height: var(--moveo-modal-full-height);\\n }\\n }\\n}\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"iframeWrapper\": \"WURyBTc5PD8BckubdyNh\",\n\t\"full\": \"IMpQKoS7vwP4XXSrsikC\",\n\t\"compact\": \"bp7gcR6g1KZch9MsQPCh\",\n\t\"tall\": \"alCdnyPRSRJ4mF9UdV0H\",\n\t\"hide\": \"xxS1WmS1mk6k_sPyDARx\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".T13h1ekotBI2sGEx4c1f{border-radius:var(--moveo-border-radius-base);height:var(--moveo-webview-message-height);width:var(--moveo-webview-message-width)}.T13h1ekotBI2sGEx4c1f p{padding:--space-2 --space-4;text-overflow:ellipsis}.Eu7YfnJoEW4JEXxNeo05{display:flex;justify-content:space-between;border-bottom:1px solid var(--moveo-text-02);height:var(--moveo-modal-header-height)}.tGUufAhruwPASxt7ulPw{font-family:Inter,monospace;color:var(--moveo-modal-label-color);align-self:center}.ZbLBlCazzI1pTYkiQ8DU{position:initial;margin:.4rem;align-self:center}.mLIi12sPCKJWkBkgxfcR{border-radius:50%;width:2rem;height:2rem;background-color:var(--moveo-background-color);display:flex;justify-content:center;align-items:center;cursor:pointer;margin:.4rem;align-self:center}.mLIi12sPCKJWkBkgxfcR:hover{filter:brightness(85%)}.QzEXlCXbAUYAxyDR3pHT{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%, -50%);position:absolute;overflow:hidden;background-color:var(--moveo-modal-background-color);border-radius:.4rem;box-shadow:rgba(15,15,15,.1) 0 0 0 1px,rgba(201,66,66,.1) 0 1px 1px;border:1px solid var(--moveo-color-disabled)}.QzEXlCXbAUYAxyDR3pHT.pQv0ELDhZH1d8Hlx0VQx{width:var(--moveo-modal-full-width);height:var(--moveo-modal-full-height)}.QzEXlCXbAUYAxyDR3pHT.xRvZPwKNGMoWY_8D1dRm{width:var(--moveo-modal-tall-width);height:var(--moveo-modal-tall-height)}@media(max-width: 550px){.QzEXlCXbAUYAxyDR3pHT.pQv0ELDhZH1d8Hlx0VQx{bottom:var(--moveo-modal-header-height);top:unset;width:100%;height:calc(100% - var(--moveo-modal-header-height));border-radius:unset;border:none;transform:unset;left:unset}.QzEXlCXbAUYAxyDR3pHT.xRvZPwKNGMoWY_8D1dRm{bottom:var(--moveo-modal-header-height);top:unset;width:100%;height:var(--moveo-modal-full-height-phone);border-radius:unset;border:none;transform:unset;left:unset}}.Vg4MgPFpRanOYv_SzxKd{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Message/Webview/WebviewModal/WebviewModal.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAKA,sBACE,6CAAA,CACA,0CAAA,CACA,wCAAA,CAEA,wBACE,2BAAA,CACA,sBAAA,CAIJ,sBACE,YAAA,CACA,6BAAA,CACA,4CAAA,CACA,uCAAA,CAGF,sBACE,2BAAA,CACA,oCAAA,CACA,iBAAA,CAGF,sBACE,gBAAA,CACA,YCbQ,CDcR,iBAAA,CAGF,sBACE,iBAAA,CACA,UC9BS,CD+BT,WC/BS,CDgCT,8CAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,cAAA,CACA,YC1BQ,CD2BR,iBAAA,CAEA,4BACE,sBAAA,CAIJ,sBACE,OAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,eAAA,CACA,oDAAA,CACA,mBAAA,CACA,mEAAA,CACA,4CAAA,CAEA,2CACE,mCAAA,CACA,qCAAA,CAGF,2CACE,mCAAA,CACA,qCAAA,CEjEF,yBFqEE,2CACE,uCAAA,CACA,SAAA,CACA,UAAA,CACA,oDAAA,CACA,mBAAA,CACA,WAAA,CACA,eAAA,CACA,UAAA,CAGF,2CACE,uCAAA,CACA,SAAA,CACA,UAAA,CACA,2CAAA,CACA,mBAAA,CACA,WAAA,CACA,eAAA,CACA,UAAA,CAAA,CAKN,sBACE,cAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA\",\"sourcesContent\":[\"@import '../../../../styles/fonts';\\n@import '../../../../styles/spacing';\\n@import '../../../../styles/breakpoints';\\n@import '../../../../styles/theme';\\n\\n.webviewContainer {\\n border-radius: var(--moveo-border-radius-base);\\n height: var(--moveo-webview-message-height);\\n width: var(--moveo-webview-message-width);\\n\\n p {\\n padding: --space-2 --space-4;\\n text-overflow: ellipsis;\\n }\\n}\\n\\n.modalHeader {\\n display: flex;\\n justify-content: space-between;\\n border-bottom: 1px solid var($text-02);\\n height: var(--moveo-modal-header-height);\\n}\\n\\n.modalLabel {\\n font-family: Inter, monospace;\\n color: var(--moveo-modal-label-color);\\n align-self: center;\\n}\\n\\n.avatar {\\n position: initial;\\n margin: $space-6;\\n align-self: center;\\n}\\n\\n.closeButton {\\n border-radius: 50%;\\n width: $space-32;\\n height: $space-32;\\n background-color: var($text-primary);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n margin: $space-6;\\n align-self: center;\\n\\n &:hover {\\n filter: brightness(85%);\\n }\\n}\\n\\n.modalContent {\\n top: 50%;\\n left: 50%;\\n right: auto;\\n bottom: auto;\\n transform: translate(-50%, -50%);\\n position: absolute;\\n overflow: hidden;\\n background-color: var(--moveo-modal-background-color);\\n border-radius: 0.4rem;\\n box-shadow: rgb(15 15 15 / 10%) 0 0 0 1px, rgb(201 66 66 / 10%) 0 1px 1px;\\n border: 1px solid var($color-disabled);\\n\\n &.full {\\n width: var(--moveo-modal-full-width);\\n height: var(--moveo-modal-full-height);\\n }\\n\\n &.tall {\\n width: var(--moveo-modal-tall-width);\\n height: var(--moveo-modal-tall-height);\\n }\\n\\n @include phone {\\n &.full {\\n bottom: var(--moveo-modal-header-height);\\n top: unset;\\n width: 100%;\\n height: calc(100% - var(--moveo-modal-header-height));\\n border-radius: unset;\\n border: none;\\n transform: unset;\\n left: unset;\\n }\\n\\n &.tall {\\n bottom: var(--moveo-modal-header-height);\\n top: unset;\\n width: 100%;\\n height: var(--moveo-modal-full-height-phone);\\n border-radius: unset;\\n border: none;\\n transform: unset;\\n left: unset;\\n }\\n }\\n}\\n\\n.modalOverlay {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: rgb(0 0 0 / 50%);\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"webviewContainer\": \"T13h1ekotBI2sGEx4c1f\",\n\t\"modalHeader\": \"Eu7YfnJoEW4JEXxNeo05\",\n\t\"modalLabel\": \"tGUufAhruwPASxt7ulPw\",\n\t\"avatar\": \"ZbLBlCazzI1pTYkiQ8DU\",\n\t\"closeButton\": \"mLIi12sPCKJWkBkgxfcR\",\n\t\"modalContent\": \"QzEXlCXbAUYAxyDR3pHT\",\n\t\"full\": \"pQv0ELDhZH1d8Hlx0VQx\",\n\t\"tall\": \"xRvZPwKNGMoWY_8D1dRm\",\n\t\"modalOverlay\": \"Vg4MgPFpRanOYv_SzxKd\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".PxmQAngvasEFvgK8b41r{border-radius:var(--moveo-border-radius-base);height:var(--moveo-webview-message-height);width:var(--moveo-webview-message-width)}.PxmQAngvasEFvgK8b41r p{text-overflow:ellipsis}.jWWtW34KQy7zW8nR8QN5{align-items:center;background-color:var(--moveo-color-ui-background);border-radius:var(--moveo-border-radius-base);display:flex;justify-content:center;width:100%;height:2.75rem}.jWWtW34KQy7zW8nR8QN5 button{background-color:var(--moveo-webview-button-background);border-radius:var(--moveo-border-radius-base);font-weight:600;padding:.4rem 1rem;font-size:.75rem;line-height:1.5rem;text-align:center;width:var(--moveo-webview-button-width);border:none;cursor:pointer;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.jWWtW34KQy7zW8nR8QN5 button .CGwwzTPTzfYyBxarualZ{position:absolute;right:-0.125rem;bottom:.125rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Message/Webview/WebviewResponse.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/fonts.scss\"],\"names\":[],\"mappings\":\"AAKA,sBACE,6CAAA,CACA,0CAAA,CACA,wCAAA,CAEA,wBACE,sBAAA,CAIJ,sBACE,kBAAA,CACA,iDAAA,CACA,6CAAA,CACA,YAAA,CACA,sBAAA,CACA,UAAA,CACA,cClBS,CDoBT,6BE0EA,uDAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,gBDvFS,CCwFT,kBD9FS,CDkBP,iBAAA,CACA,uCAAA,CACA,WAAA,CACA,cAAA,CACA,iBAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CAEA,mDACE,iBAAA,CACA,eAAA,CACA,cCnBI\",\"sourcesContent\":[\"@import '../../../styles/fonts';\\n@import '../../../styles/spacing';\\n@import '../../../styles/breakpoints';\\n@import '../../../styles/theme';\\n\\n.webviewContainer {\\n border-radius: var(--moveo-border-radius-base);\\n height: var(--moveo-webview-message-height);\\n width: var(--moveo-webview-message-width);\\n\\n p {\\n text-overflow: ellipsis;\\n }\\n}\\n\\n.webviewButtonContainer {\\n align-items: center;\\n background-color: var($color-background);\\n border-radius: var(--moveo-border-radius-base);\\n display: flex;\\n justify-content: center;\\n width: 100%;\\n height: $space-44;\\n\\n button {\\n @include button-modal;\\n\\n text-align: center;\\n width: var(--moveo-webview-button-width);\\n border: none;\\n cursor: pointer;\\n position: relative;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n\\n .externalLinkIcon {\\n position: absolute;\\n right: -$space-2;\\n bottom: $space-2;\\n }\\n }\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"webviewContainer\": \"PxmQAngvasEFvgK8b41r\",\n\t\"webviewButtonContainer\": \"jWWtW34KQy7zW8nR8QN5\",\n\t\"externalLinkIcon\": \"CGwwzTPTzfYyBxarualZ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".WDjV4SLjZqdMn1wv2X_y{display:flex;align-items:center;width:100%;overflow:auto;border-top:1px solid var(--moveo-color-border);scrollbar-width:thin}.evIOI7RFMIuHZoub3MQW{display:flex;align-items:center;padding-right:1.25rem;color:var(--moveo-color-disabled)}.QVwEyGtH1VnuW7CThqi8{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;outline:0;border:0;flex:1;padding:1rem 1.5rem;min-height:1.25rem;overflow-y:auto;word-break:break-word;word-wrap:break-word;color:var(--moveo-text-02);appearance:none}.VfA2d49F_i2DswBWZSob{display:none;cursor:pointer;justify-content:center;align-items:center;margin-right:.75rem}.VfA2d49F_i2DswBWZSob:hover svg{filter:brightness(85%)}@media(max-width: 550px){.VfA2d49F_i2DswBWZSob{display:flex}}[contenteditable=true]:empty::before{content:attr(placeholder);pointer-events:none;display:block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/MessageInput/MessageInput.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/breakpoints.scss\"],\"names\":[],\"mappings\":\"AAKA,sBACE,YAAA,CACA,kBAAA,CACA,UAAA,CACA,aAAA,CACA,8CAAA,CACA,oBAAA,CAGF,sBACE,YAAA,CACA,kBAAA,CACA,qBCNS,CDOT,iCAAA,CAGF,sBEoBE,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CDYT,SAAA,CACA,QAAA,CACA,MAAA,CACA,mBAAA,CACA,kBCjBS,CDkBT,eAAA,CACA,qBAAA,CACA,oBAAA,CACA,0BAAA,CACA,eAAA,CAGF,sBACE,YAAA,CACA,cAAA,CACA,sBAAA,CACA,kBAAA,CACA,mBC1BS,CD6BP,gCACE,sBAAA,CGtCJ,yBH6BF,sBAcI,YAAA,CAAA,CAIJ,qCACE,yBAAA,CACA,mBAAA,CACA,aAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/breakpoints';\\n@import '../../styles/theme';\\n\\n.container {\\n display: flex;\\n align-items: center;\\n width: 100%;\\n overflow: auto;\\n border-top: 1px solid var(--moveo-color-border);\\n scrollbar-width: thin;\\n}\\n\\n.charCounter {\\n display: flex;\\n align-items: center;\\n padding-right: $space-20;\\n color: var($color-disabled);\\n}\\n\\n.input {\\n @include body-regular;\\n\\n outline: 0;\\n border: 0;\\n flex: 1;\\n padding: $space-16 $space-24;\\n min-height: $space-20;\\n overflow-y: auto;\\n word-break: break-word;\\n word-wrap: break-word;\\n color: var($text-02);\\n appearance: none;\\n}\\n\\n.sendMessage {\\n display: none;\\n cursor: pointer;\\n justify-content: center;\\n align-items: center;\\n margin-right: $space-12;\\n\\n &:hover {\\n svg {\\n filter: brightness(85%);\\n }\\n }\\n\\n @include phone {\\n display: flex;\\n }\\n}\\n\\n[contenteditable='true']:empty::before {\\n content: attr(placeholder);\\n pointer-events: none;\\n display: block; /* For Firefox */\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"@import './spacing';\\n\\n$breakpoint-phone: 550px;\\n$breakpoint-tablet: 1100px;\\n$breakpoint-desktop: 1500px;\\n\\n@mixin phone {\\n @media (max-width: #{$breakpoint-phone}) {\\n @content;\\n }\\n}\\n\\n@mixin tablet {\\n @media (max-width: #{$breakpoint-tablet}) {\\n @content;\\n }\\n}\\n\\n@mixin desktop {\\n @media (max-width: #{$breakpoint-desktop}) {\\n @content;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"WDjV4SLjZqdMn1wv2X_y\",\n\t\"charCounter\": \"evIOI7RFMIuHZoub3MQW\",\n\t\"input\": \"QVwEyGtH1VnuW7CThqi8\",\n\t\"sendMessage\": \"VfA2d49F_i2DswBWZSob\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".wfkkZi1hezXsS8ggXHTC{box-sizing:border-box;position:absolute;width:var(--moveo-openingMessage-width);transform:translateX(-100%);border-radius:.75rem;border-bottom-right-radius:.25rem;box-shadow:var(--moveo-shadow-bubble);cursor:default;display:inline-block;background-color:var(--moveo-background-color)}.wfkkZi1hezXsS8ggXHTC>p{color:var(--text-secondary);margin:0}.wfkkZi1hezXsS8ggXHTC.xydlTFTauScKCeb7qrNe{font-family:var(--moveo-font-primary);font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;left:4rem;bottom:4rem;padding:.5rem .75rem}.wfkkZi1hezXsS8ggXHTC.NyyJ6luMdbjNAPNMirRu{font-family:var(--moveo-font-primary);font-size:1rem;font-weight:400;letter-spacing:0;line-height:1.5rem;left:80px;bottom:95px;padding:1rem 1.5rem}.wfkkZi1hezXsS8ggXHTC.rZZzJabEV8b6VMGR2fuk{left:100%}.vz6ZOdyrD8f0X0Q6nQEQ{position:absolute;top:-0.75rem;right:-0.75rem;border-radius:100%;box-shadow:var(--moveo-shadow-bubble);background-color:var(--moveo-text-04);cursor:pointer;padding:.25rem;width:.75rem;height:.75rem;content:\\\"\\\";display:flex;justify-content:center;align-items:center;stroke:var(--moveo-background-color)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/OpeningMessage/OpeningMessage.module.scss\",\"webpack://./src/styles/spacing.scss\",\"webpack://./src/styles/fonts.scss\"],\"names\":[],\"mappings\":\"AAIA,sBACE,qBAAA,CACA,iBAAA,CACA,uCAAA,CACA,2BAAA,CACA,oBCMS,CDLT,iCCSQ,CDRR,qCAAA,CACA,cAAA,CACA,oBAAA,CACA,8CAAA,CAEA,wBACE,2BAAA,CACA,QAAA,CAGF,2CEoBA,qCAAA,CACA,iBD5BS,CC6BT,eAAA,CACA,gBAAA,CACA,oBDjCS,CDYP,SCvBO,CDwBP,WCxBO,CDyBP,oBAAA,CAGF,2CEyCA,qCAAA,CACA,cD1DS,CC2DT,eAAA,CACA,gBAAA,CACA,kBDjES,CDuBP,SAAA,CACA,WAAA,CACA,mBAAA,CAGF,2CACE,SAAA,CAIJ,sBACE,iBAAA,CACA,YAAA,CACA,cAAA,CACA,kBAAA,CACA,qCAAA,CACA,qCAAA,CACA,cAAA,CACA,cC/BQ,CDgCR,YCpCS,CDqCT,aCrCS,CDsCT,UAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,oCAAA\",\"sourcesContent\":[\"@import '../../styles/spacing';\\n@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.text {\\n box-sizing: border-box;\\n position: absolute;\\n width: var(--moveo-openingMessage-width);\\n transform: translateX(-100%);\\n border-radius: $space-12;\\n border-bottom-right-radius: $space-4;\\n box-shadow: var(--moveo-shadow-bubble);\\n cursor: default;\\n display: inline-block;\\n background-color: var($text-primary);\\n\\n > p {\\n color: var($text-secondary);\\n margin: 0;\\n }\\n\\n &.regular {\\n @include body-regular;\\n\\n left: $space-64;\\n bottom: $space-64;\\n padding: $space-8 $space-12;\\n }\\n\\n &.large {\\n @include heading-regular;\\n\\n left: 80px;\\n bottom: 95px;\\n padding: $space-16 $space-24;\\n }\\n\\n &.type--help {\\n left: 100%;\\n }\\n}\\n\\n.closeBtn {\\n position: absolute;\\n top: calc($space-12 * -1);\\n right: calc($space-12 * -1);\\n border-radius: 100%;\\n box-shadow: var(--moveo-shadow-bubble);\\n background-color: var($text-04);\\n cursor: pointer;\\n padding: $space-4;\\n width: $space-12;\\n height: $space-12;\\n content: '';\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n stroke: var($text-primary);\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"text\": \"wfkkZi1hezXsS8ggXHTC\",\n\t\"regular\": \"xydlTFTauScKCeb7qrNe\",\n\t\"large\": \"NyyJ6luMdbjNAPNMirRu\",\n\t\"type--help\": \"rZZzJabEV8b6VMGR2fuk\",\n\t\"closeBtn\": \"vz6ZOdyrD8f0X0Q6nQEQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".oupU5TTE0mlN1ACmL_GO{font-family:var(--moveo-font-primary);font-size:.625rem;font-weight:400;letter-spacing:0;line-height:1rem;display:inline-flex;transition:all 250ms ease-out;margin:0;border:0;text-decoration:none;color:var(--moveo-text-03);padding:.5rem 0}.oupU5TTE0mlN1ACmL_GO svg{padding-left:.5rem;padding-top:.25rem;fill:var(--moveo-text-03)}.oupU5TTE0mlN1ACmL_GO:hover{color:var(--moveo-background-color)}.oupU5TTE0mlN1ACmL_GO:hover svg{fill:var(--moveo-background-color)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/PoweredBy/PoweredBy.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAIA,sBCEE,qCAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,gBCGS,CFNT,mBAAA,CACA,6BAAA,CACA,QAAA,CACA,QAAA,CACA,oBAAA,CACA,0BAAA,CACA,eAAA,CAEA,0BACE,kBECM,CAAA,kBAEA,CFDN,yBAAA,CAGF,4BACE,mCAAA,CAEA,gCACE,kCAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/spacing';\\n@import '../../styles/theme';\\n\\n.link {\\n @include label-regular;\\n\\n display: inline-flex;\\n transition: all 250ms ease-out;\\n margin: 0;\\n border: 0;\\n text-decoration: none;\\n color: var($text-03);\\n padding: $space-8 0;\\n\\n svg {\\n padding-left: $space-8;\\n padding-top: $space-4;\\n fill: var($text-03);\\n }\\n\\n &:hover {\\n color: var($text-primary);\\n\\n svg {\\n fill: var($text-primary);\\n }\\n }\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"link\": \"oupU5TTE0mlN1ACmL_GO\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".Os3ww4F2M4ovmNCDQj0B{padding:1.25rem 3.75rem;box-sizing:border-box;display:flex;align-items:center;overflow:auto;width:100%;height:100%}.Os3ww4F2M4ovmNCDQj0B form{width:100%}.mQsY9fw6fZK3H0WcrSd6{display:flex;padding:1rem 0}.mQsY9fw6fZK3H0WcrSd6 input{margin:.25rem .5rem 0 0}.mQsY9fw6fZK3H0WcrSd6 a{color:var(--moveo-background-color)}.mQsY9fw6fZK3H0WcrSd6.nUjsDBslOHB9qPSN_t4C{color:var(--moveo-text-failure)}.Fn0SLwujZnto1LGVT2YZ{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;font-weight:600;color:var(--moveo-background-color);margin-top:.5rem;border:0;background-color:transparent;cursor:pointer}.Fn0SLwujZnto1LGVT2YZ:hover{filter:brightness(85%)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/WelcomeFields/WelcomeFields.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAIA,sBACE,uBAAA,CACA,qBAAA,CACA,YAAA,CACA,kBAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CAEA,2BACE,UAAA,CAIJ,sBACE,YAAA,CACA,cAAA,CAEA,4BACE,uBAAA,CAGF,wBACE,mCAAA,CAGF,2CACE,+BAAA,CAIJ,sBCiDE,qCAAA,CACA,gBCtES,CDuET,eAAA,CACA,gBAAA,CACA,kBC/ES,CDqFT,eAAA,CDxDA,mCAAA,CACA,gBEtBQ,CFuBR,QAAA,CACA,4BAAA,CACA,cAAA,CAEA,4BACE,sBAAA\",\"sourcesContent\":[\"@import '../../styles/spacing';\\n@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.container {\\n padding: $space-20 $space-60;\\n box-sizing: border-box;\\n display: flex;\\n align-items: center;\\n overflow: auto;\\n width: 100%;\\n height: 100%;\\n\\n form {\\n width: 100%;\\n }\\n}\\n\\n.disclaimerContainer {\\n display: flex;\\n padding: $space-16 0;\\n\\n input {\\n margin: $space-4 $space-8 0 0;\\n }\\n\\n a {\\n color: var($text-primary);\\n }\\n\\n &.error {\\n color: var($text-failure);\\n }\\n}\\n\\n.proceed {\\n @include body-2-medium;\\n\\n color: var($text-primary);\\n margin-top: $space-8;\\n border: 0;\\n background-color: transparent;\\n cursor: pointer;\\n\\n &:hover {\\n filter: brightness(85%);\\n }\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"Os3ww4F2M4ovmNCDQj0B\",\n\t\"disclaimerContainer\": \"mQsY9fw6fZK3H0WcrSd6\",\n\t\"error\": \"nUjsDBslOHB9qPSN_t4C\",\n\t\"proceed\": \"Fn0SLwujZnto1LGVT2YZ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._3CA0WYAa19Q81xkgJ3Tz{transition:all 250ms ease-out;background-color:var(--text-secondary);margin:.25rem 0;border-radius:var(--moveo-border-radius-base);align-self:end;cursor:pointer;padding:.25rem 1.25rem;color:var(--moveo-background-color);border:1px solid var(--moveo-background-color)}._3CA0WYAa19Q81xkgJ3Tz:hover{background-color:var(--moveo-background-color);color:var(--text-secondary)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/WelcomeScreen/Starter.module.scss\"],\"names\":[],\"mappings\":\"AAGA,uBACE,6BAAA,CACA,sCAAA,CACA,eAAA,CACA,6CAAA,CACA,cAAA,CACA,cAAA,CACA,sBAAA,CACA,mCAAA,CACA,8CAAA,CAEA,6BACE,8CAAA,CACA,2BAAA\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.starter {\\n transition: all 250ms ease-out;\\n background-color: var($text-secondary);\\n margin: $space-4 0;\\n border-radius: var(--moveo-border-radius-base);\\n align-self: end;\\n cursor: pointer;\\n padding: $space-4 $space-20;\\n color: var($text-primary);\\n border: 1px solid var($text-primary);\\n\\n &:hover {\\n background-color: var($text-primary);\\n color: var($text-secondary);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"starter\": \"_3CA0WYAa19Q81xkgJ3Tz\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".HOOgHQytS9quNkQGud69{font-family:var(--moveo-font-primary);font-size:.75rem;font-weight:400;letter-spacing:0;line-height:1.5rem;display:flex;flex-direction:column;justify-content:flex-end;text-align:right;color:var(--moveo-text-03);height:100%;margin-right:.125rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/WelcomeScreen/WelcomeGreeting.module.scss\",\"webpack://./src/styles/fonts.scss\",\"webpack://./src/styles/spacing.scss\"],\"names\":[],\"mappings\":\"AAGA,sBCiFE,qCAAA,CACA,gBCtES,CDuET,eAAA,CACA,gBAAA,CACA,kBC/ES,CFHT,YAAA,CACA,qBAAA,CACA,wBAAA,CACA,gBAAA,CACA,0BAAA,CACA,WAAA,CACA,oBEQQ\",\"sourcesContent\":[\"@import '../../styles/fonts';\\n@import '../../styles/theme';\\n\\n.container {\\n @include body-2-regular;\\n\\n display: flex;\\n flex-direction: column;\\n justify-content: flex-end;\\n text-align: right;\\n color: var($text-03);\\n height: 100%;\\n margin-right: $space-2;\\n}\\n\",\"/* stylelint-disable scale-unlimited/declaration-strict-value */\\n/* stylelint-disable property-disallowed-list */\\n\\n@import './spacing';\\n\\n@mixin label-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: 0.625rem;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin label-bold {\\n @include label-regular;\\n\\n font-weight: 700;\\n}\\n\\n@mixin label-caps {\\n @include label-regular;\\n\\n font-weight: 600;\\n text-transform: uppercase;\\n}\\n\\n@mixin code-small {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-10;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-16;\\n}\\n\\n@mixin code-big {\\n @include code-small;\\n\\n font-size: $space-12;\\n}\\n\\n@mixin body-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-14;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-18;\\n}\\n\\n@mixin body-regular-phone {\\n @include body-regular;\\n\\n font-size: $space-16;\\n line-height: $space-22;\\n}\\n\\n@mixin body-medium {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 600;\\n}\\n\\n@mixin body-bold {\\n @include label-regular;\\n\\n font-size: $space-14;\\n font-weight: 700;\\n}\\n\\n@mixin heading-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-16;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin heading-medium {\\n @include heading-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin body-2-regular {\\n font-family: var(--moveo-font-primary);\\n font-size: $space-12;\\n font-weight: 400;\\n letter-spacing: 0;\\n line-height: $space-24;\\n}\\n\\n@mixin body-2-medium {\\n @include body-2-regular;\\n\\n font-weight: 600;\\n}\\n\\n@mixin button-modal {\\n background-color: var(--moveo-webview-button-background);\\n border-radius: var(--moveo-border-radius-base);\\n font-weight: 600;\\n padding: $space-6 $space-16;\\n font-size: $space-12;\\n line-height: $space-24;\\n}\\n\\n@mixin header-title {\\n font-size: $space-14;\\n color: var(--moveo-accent-color);\\n line-height: $space-18;\\n text-transform: uppercase;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\",\"$space-128: 8rem;\\n$space-64: 4rem;\\n$space-60: 3.75rem;\\n$space-52: 3.25rem;\\n$space-44: 2.75rem;\\n$space-40: 2.5rem;\\n$space-36: 2.25rem;\\n$space-32: 2rem;\\n$space-26: 1.75rem;\\n$space-24: 1.5rem;\\n$space-22: 1.375rem;\\n$space-20: 1.25rem;\\n$space-18: 1.125rem;\\n$space-16: 1rem;\\n$space-14: 0.875rem;\\n$space-12: 0.75rem;\\n$space-10: 0.625rem;\\n$space-8: 0.5rem;\\n$space-6: 0.4rem;\\n$space-4: 0.25rem;\\n$space-2: 0.125rem;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"HOOgHQytS9quNkQGud69\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".moveo_web_client{display:grid;grid-template-columns:repeat(auto-fit, minmax(350px, 1fr));grid-template-rows:auto;height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/styles/styles.scss\"],\"names\":[],\"mappings\":\"AAAA,kBAIE,YAAA,CACA,0DAAA,CACA,uBAAA,CACA,WAAA\",\"sourcesContent\":[\".moveo_web_client {\\n // Scss variables which we gonna assign using\\n // useState and JavaScript in reactJS\\n\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\\n grid-template-rows: auto;\\n height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n/**\n * Expose `Emitter`.\n */\n\nexports.Emitter = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\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","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\n\nexports.encode = function (obj) {\n var str = '';\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length) str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n\n return str;\n};\n\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\n\nexports.decode = function(qs){\n var qry = {};\n var pairs = qs.split('&');\n for (var i = 0, l = pairs.length; i < l; i++) {\n var pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n};\n","/**\n * Parses an URI\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\n\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nvar parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\n\nmodule.exports = function parseuri(str) {\n var src = str,\n b = str.indexOf('['),\n e = str.indexOf(']');\n\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n\n var m = re.exec(str || ''),\n uri = {},\n i = 14;\n\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n\n return uri;\n};\n\nfunction pathNames(obj, path) {\n var regx = /\\/{2,9}/g,\n names = path.replace(regx, \"/\").split(\"/\");\n\n if (path.substr(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.substr(path.length - 1, 1) == '/') {\n names.splice(names.length - 1, 1);\n }\n\n return names;\n}\n\nfunction queryKey(uri, query) {\n var data = {};\n\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n\n return data;\n}\n","import { options } from 'preact';\r\n\r\n/** @type {number} */\r\nlet currentIndex;\r\n\r\n/** @type {import('./internal').Component} */\r\nlet currentComponent;\r\n\r\n/** @type {number} */\r\nlet currentHook = 0;\r\n\r\n/** @type {Array<import('./internal').Component>} */\r\nlet afterPaintEffects = [];\r\n\r\nlet oldBeforeDiff = options._diff;\r\nlet oldBeforeRender = options._render;\r\nlet oldAfterDiff = options.diffed;\r\nlet oldCommit = options._commit;\r\nlet oldBeforeUnmount = options.unmount;\r\n\r\nconst RAF_TIMEOUT = 100;\r\nlet prevRaf;\r\n\r\noptions._diff = vnode => {\r\n\tcurrentComponent = null;\r\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\r\n};\r\n\r\noptions._render = vnode => {\r\n\tif (oldBeforeRender) oldBeforeRender(vnode);\r\n\r\n\tcurrentComponent = vnode._component;\r\n\tcurrentIndex = 0;\r\n\r\n\tconst hooks = currentComponent.__hooks;\r\n\tif (hooks) {\r\n\t\thooks._pendingEffects.forEach(invokeCleanup);\r\n\t\thooks._pendingEffects.forEach(invokeEffect);\r\n\t\thooks._pendingEffects = [];\r\n\t}\r\n};\r\n\r\noptions.diffed = vnode => {\r\n\tif (oldAfterDiff) oldAfterDiff(vnode);\r\n\r\n\tconst c = vnode._component;\r\n\tif (c && c.__hooks && c.__hooks._pendingEffects.length) {\r\n\t\tafterPaint(afterPaintEffects.push(c));\r\n\t}\r\n\tcurrentComponent = null;\r\n};\r\n\r\noptions._commit = (vnode, commitQueue) => {\r\n\tcommitQueue.some(component => {\r\n\t\ttry {\r\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\r\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\r\n\t\t\t\tcb._value ? invokeEffect(cb) : true\r\n\t\t\t);\r\n\t\t} catch (e) {\r\n\t\t\tcommitQueue.some(c => {\r\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\r\n\t\t\t});\r\n\t\t\tcommitQueue = [];\r\n\t\t\toptions._catchError(e, component._vnode);\r\n\t\t}\r\n\t});\r\n\r\n\tif (oldCommit) oldCommit(vnode, commitQueue);\r\n};\r\n\r\noptions.unmount = vnode => {\r\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\r\n\r\n\tconst c = vnode._component;\r\n\tif (c && c.__hooks) {\r\n\t\tlet hasErrored;\r\n\t\tc.__hooks._list.forEach(s => {\r\n\t\t\ttry {\r\n\t\t\t\tinvokeCleanup(s);\r\n\t\t\t} catch (e) {\r\n\t\t\t\thasErrored = e;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\r\n\t}\r\n};\r\n\r\n/**\r\n * Get a hook's state from the currentComponent\r\n * @param {number} index The index of the hook to get\r\n * @param {number} type The index of the hook to get\r\n * @returns {any}\r\n */\r\nfunction getHookState(index, type) {\r\n\tif (options._hook) {\r\n\t\toptions._hook(currentComponent, index, currentHook || type);\r\n\t}\r\n\tcurrentHook = 0;\r\n\r\n\t// Largely inspired by:\r\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\r\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\r\n\t// Other implementations to look at:\r\n\t// * https://codesandbox.io/s/mnox05qp8\r\n\tconst hooks =\r\n\t\tcurrentComponent.__hooks ||\r\n\t\t(currentComponent.__hooks = {\r\n\t\t\t_list: [],\r\n\t\t\t_pendingEffects: []\r\n\t\t});\r\n\r\n\tif (index >= hooks._list.length) {\r\n\t\thooks._list.push({});\r\n\t}\r\n\treturn hooks._list[index];\r\n}\r\n\r\n/**\r\n * @param {import('./index').StateUpdater<any>} [initialState]\r\n */\r\nexport function useState(initialState) {\r\n\tcurrentHook = 1;\r\n\treturn useReducer(invokeOrReturn, initialState);\r\n}\r\n\r\n/**\r\n * @param {import('./index').Reducer<any, any>} reducer\r\n * @param {import('./index').StateUpdater<any>} initialState\r\n * @param {(initialState: any) => void} [init]\r\n * @returns {[ any, (state: any) => void ]}\r\n */\r\nexport function useReducer(reducer, initialState, init) {\r\n\t/** @type {import('./internal').ReducerHookState} */\r\n\tconst hookState = getHookState(currentIndex++, 2);\r\n\thookState._reducer = reducer;\r\n\tif (!hookState._component) {\r\n\t\thookState._value = [\r\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\r\n\r\n\t\t\taction => {\r\n\t\t\t\tconst nextValue = hookState._reducer(hookState._value[0], action);\r\n\t\t\t\tif (hookState._value[0] !== nextValue) {\r\n\t\t\t\t\thookState._value = [nextValue, hookState._value[1]];\r\n\t\t\t\t\thookState._component.setState({});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\thookState._component = currentComponent;\r\n\t}\r\n\r\n\treturn hookState._value;\r\n}\r\n\r\n/**\r\n * @param {import('./internal').Effect} callback\r\n * @param {any[]} args\r\n */\r\nexport function useEffect(callback, args) {\r\n\t/** @type {import('./internal').EffectHookState} */\r\n\tconst state = getHookState(currentIndex++, 3);\r\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\r\n\t\tstate._value = callback;\r\n\t\tstate._args = args;\r\n\r\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {import('./internal').Effect} callback\r\n * @param {any[]} args\r\n */\r\nexport function useLayoutEffect(callback, args) {\r\n\t/** @type {import('./internal').EffectHookState} */\r\n\tconst state = getHookState(currentIndex++, 4);\r\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\r\n\t\tstate._value = callback;\r\n\t\tstate._args = args;\r\n\r\n\t\tcurrentComponent._renderCallbacks.push(state);\r\n\t}\r\n}\r\n\r\nexport function useRef(initialValue) {\r\n\tcurrentHook = 5;\r\n\treturn useMemo(() => ({ current: initialValue }), []);\r\n}\r\n\r\n/**\r\n * @param {object} ref\r\n * @param {() => object} createHandle\r\n * @param {any[]} args\r\n */\r\nexport function useImperativeHandle(ref, createHandle, args) {\r\n\tcurrentHook = 6;\r\n\tuseLayoutEffect(\r\n\t\t() => {\r\n\t\t\tif (typeof ref == 'function') ref(createHandle());\r\n\t\t\telse if (ref) ref.current = createHandle();\r\n\t\t},\r\n\t\targs == null ? args : args.concat(ref)\r\n\t);\r\n}\r\n\r\n/**\r\n * @param {() => any} factory\r\n * @param {any[]} args\r\n */\r\nexport function useMemo(factory, args) {\r\n\t/** @type {import('./internal').MemoHookState} */\r\n\tconst state = getHookState(currentIndex++, 7);\r\n\tif (argsChanged(state._args, args)) {\r\n\t\tstate._value = factory();\r\n\t\tstate._args = args;\r\n\t\tstate._factory = factory;\r\n\t}\r\n\r\n\treturn state._value;\r\n}\r\n\r\n/**\r\n * @param {() => void} callback\r\n * @param {any[]} args\r\n */\r\nexport function useCallback(callback, args) {\r\n\tcurrentHook = 8;\r\n\treturn useMemo(() => callback, args);\r\n}\r\n\r\n/**\r\n * @param {import('./internal').PreactContext} context\r\n */\r\nexport function useContext(context) {\r\n\tconst provider = currentComponent.context[context._id];\r\n\t// We could skip this call here, but than we'd not call\r\n\t// `options._hook`. We need to do that in order to make\r\n\t// the devtools aware of this hook.\r\n\t/** @type {import('./internal').ContextHookState} */\r\n\tconst state = getHookState(currentIndex++, 9);\r\n\t// The devtools needs access to the context object to\r\n\t// be able to pull of the default value when no provider\r\n\t// is present in the tree.\r\n\tstate._context = context;\r\n\tif (!provider) return context._defaultValue;\r\n\t// This is probably not safe to convert to \"!\"\r\n\tif (state._value == null) {\r\n\t\tstate._value = true;\r\n\t\tprovider.sub(currentComponent);\r\n\t}\r\n\treturn provider.props.value;\r\n}\r\n\r\n/**\r\n * Display a custom label for a custom hook for the devtools panel\r\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\r\n */\r\nexport function useDebugValue(value, formatter) {\r\n\tif (options.useDebugValue) {\r\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {(error: any) => void} cb\r\n */\r\nexport function useErrorBoundary(cb) {\r\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\r\n\tconst state = getHookState(currentIndex++, 10);\r\n\tconst errState = useState();\r\n\tstate._value = cb;\r\n\tif (!currentComponent.componentDidCatch) {\r\n\t\tcurrentComponent.componentDidCatch = err => {\r\n\t\t\tif (state._value) state._value(err);\r\n\t\t\terrState[1](err);\r\n\t\t};\r\n\t}\r\n\treturn [\r\n\t\terrState[0],\r\n\t\t() => {\r\n\t\t\terrState[1](undefined);\r\n\t\t}\r\n\t];\r\n}\r\n\r\n/**\r\n * After paint effects consumer.\r\n */\r\nfunction flushAfterPaintEffects() {\r\n\tlet component;\r\n\t// sort the queue by depth (outermost to innermost)\r\n\tafterPaintEffects.sort((a, b) => a._vnode._depth - b._vnode._depth);\r\n\twhile (component = afterPaintEffects.pop()) {\r\n\t\tif (!component._parentDom) continue;\r\n\t\ttry {\r\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\r\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\r\n\t\t\tcomponent.__hooks._pendingEffects = [];\r\n\t\t} catch (e) {\r\n\t\t\tcomponent.__hooks._pendingEffects = [];\r\n\t\t\toptions._catchError(e, component._vnode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\r\n\r\n/**\r\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\r\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\r\n * the next browser frame.\r\n *\r\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\r\n * even if RAF doesn't fire (for example if the browser tab is not visible)\r\n *\r\n * @param {() => void} callback\r\n */\r\nfunction afterNextFrame(callback) {\r\n\tconst done = () => {\r\n\t\tclearTimeout(timeout);\r\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\r\n\t\tsetTimeout(callback);\r\n\t};\r\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\r\n\r\n\tlet raf;\r\n\tif (HAS_RAF) {\r\n\t\traf = requestAnimationFrame(done);\r\n\t}\r\n}\r\n\r\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\r\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\r\n// Perhaps this is not such a big deal.\r\n/**\r\n * Schedule afterPaintEffects flush after the browser paints\r\n * @param {number} newQueueLength\r\n */\r\nfunction afterPaint(newQueueLength) {\r\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\r\n\t\tprevRaf = options.requestAnimationFrame;\r\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {import('./internal').EffectHookState} hook\r\n */\r\nfunction invokeCleanup(hook) {\r\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\r\n\t// and move the currentComponent away.\r\n\tconst comp = currentComponent;\r\n\tlet cleanup = hook._cleanup;\r\n\tif (typeof cleanup == 'function') {\r\n\t\thook._cleanup = undefined;\r\n\t\tcleanup();\r\n\t}\r\n\tcurrentComponent = comp;\r\n}\r\n\r\n/**\r\n * Invoke a Hook's effect\r\n * @param {import('./internal').EffectHookState} hook\r\n */\r\nfunction invokeEffect(hook) {\r\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\r\n\t// and move the currentComponent away.\r\n\tconst comp = currentComponent;\r\n\thook._cleanup = hook._value();\r\n\tcurrentComponent = comp;\r\n}\r\n\r\n/**\r\n * @param {any[]} oldArgs\r\n * @param {any[]} newArgs\r\n */\r\nfunction argsChanged(oldArgs, newArgs) {\r\n\treturn (\r\n\t\t!oldArgs ||\r\n\t\toldArgs.length !== newArgs.length ||\r\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\r\n\t);\r\n}\r\n\r\nfunction invokeOrReturn(arg, f) {\r\n\treturn typeof f == 'function' ? f(arg) : f;\r\n}\r\n","/**\r\n * Assign properties from `props` to `obj`\r\n * @template O, P The obj and props types\r\n * @param {O} obj The object to copy properties to\r\n * @param {P} props The object to copy properties from\r\n * @returns {O & P}\r\n */\r\nexport function assign(obj, props) {\r\n\tfor (let i in props) obj[i] = props[i];\r\n\treturn /** @type {O & P} */ (obj);\r\n}\r\n\r\n/**\r\n * Check if two objects have a different shape\r\n * @param {object} a\r\n * @param {object} b\r\n * @returns {boolean}\r\n */\r\nexport function shallowDiffers(a, b) {\r\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\r\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\r\n\treturn false;\r\n}\r\n\r\nexport function removeNode(node) {\r\n\tlet parentNode = node.parentNode;\r\n\tif (parentNode) parentNode.removeChild(node);\r\n}\r\n","import { Component } from 'preact';\r\nimport { shallowDiffers } from './util';\r\n\r\n/**\r\n * Component class with a predefined `shouldComponentUpdate` implementation\r\n */\r\nexport function PureComponent(p) {\r\n\tthis.props = p;\r\n}\r\nPureComponent.prototype = new Component();\r\n// Some third-party libraries check if this property is present\r\nPureComponent.prototype.isPureReactComponent = true;\r\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\r\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\r\n};\r\n","import { createElement } from 'preact';\r\nimport { shallowDiffers } from './util';\r\n\r\n/**\r\n * Memoize a component, so that it only updates when the props actually have\r\n * changed. This was previously known as `React.pure`.\r\n * @param {import('./internal').FunctionComponent} c functional component\r\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\r\n * @returns {import('./internal').FunctionComponent}\r\n */\r\nexport function memo(c, comparer) {\r\n\tfunction shouldUpdate(nextProps) {\r\n\t\tlet ref = this.props.ref;\r\n\t\tlet updateRef = ref == nextProps.ref;\r\n\t\tif (!updateRef && ref) {\r\n\t\t\tref.call ? ref(null) : (ref.current = null);\r\n\t\t}\r\n\r\n\t\tif (!comparer) {\r\n\t\t\treturn shallowDiffers(this.props, nextProps);\r\n\t\t}\r\n\r\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\r\n\t}\r\n\r\n\tfunction Memoed(props) {\r\n\t\tthis.shouldComponentUpdate = shouldUpdate;\r\n\t\treturn createElement(c, props);\r\n\t}\r\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\r\n\tMemoed.prototype.isReactComponent = true;\r\n\tMemoed._forwarded = true;\r\n\treturn Memoed;\r\n}\r\n","import { options } from 'preact';\r\nimport { assign } from './util';\r\n\r\nlet oldDiffHook = options._diff;\r\noptions._diff = vnode => {\r\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\r\n\t\tvnode.props.ref = vnode.ref;\r\n\t\tvnode.ref = null;\r\n\t}\r\n\tif (oldDiffHook) oldDiffHook(vnode);\r\n};\r\n\r\nexport const REACT_FORWARD_SYMBOL =\r\n\t(typeof Symbol != 'undefined' &&\r\n\t\tSymbol.for &&\r\n\t\tSymbol.for('react.forward_ref')) ||\r\n\t0xf47;\r\n\r\n/**\r\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\r\n * wrap components. Using `forwardRef` there is an easy way to get a reference\r\n * of the wrapped component instead of one of the wrapper itself.\r\n * @param {import('./index').ForwardFn} fn\r\n * @returns {import('./internal').FunctionComponent}\r\n */\r\nexport function forwardRef(fn) {\r\n\t// We always have ref in props.ref, except for\r\n\t// mobx-react. It will call this function directly\r\n\t// and always pass ref as the second argument.\r\n\tfunction Forwarded(props, ref) {\r\n\t\tlet clone = assign({}, props);\r\n\t\tdelete clone.ref;\r\n\t\tref = props.ref || ref;\r\n\t\treturn fn(\r\n\t\t\tclone,\r\n\t\t\t!ref || (typeof ref === 'object' && !('current' in ref)) ? null : ref\r\n\t\t);\r\n\t}\r\n\r\n\t// mobx-react checks for this being present\r\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\r\n\t// mobx-react heavily relies on implementation details.\r\n\t// It expects an object here with a `render` property,\r\n\t// and prototype.render will fail. Without this\r\n\t// mobx-react throws.\r\n\tForwarded.render = Forwarded;\r\n\r\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\r\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\r\n\treturn Forwarded;\r\n}\r\n","import { toChildArray } from 'preact';\r\n\r\nconst mapFn = (children, fn) => {\r\n\tif (children == null) return null;\r\n\treturn toChildArray(toChildArray(children).map(fn));\r\n};\r\n\r\n// This API is completely unnecessary for Preact, so it's basically passthrough.\r\nexport const Children = {\r\n\tmap: mapFn,\r\n\tforEach: mapFn,\r\n\tcount(children) {\r\n\t\treturn children ? toChildArray(children).length : 0;\r\n\t},\r\n\tonly(children) {\r\n\t\tconst normalized = toChildArray(children);\r\n\t\tif (normalized.length !== 1) throw 'Children.only';\r\n\t\treturn normalized[0];\r\n\t},\r\n\ttoArray: toChildArray\r\n};\r\n","import { Component, createElement, options, Fragment } from 'preact';\r\nimport { assign } from './util';\r\n\r\nconst oldCatchError = options._catchError;\r\noptions._catchError = function(error, newVNode, oldVNode) {\r\n\tif (error.then) {\r\n\t\t/** @type {import('./internal').Component} */\r\n\t\tlet component;\r\n\t\tlet vnode = newVNode;\r\n\r\n\t\tfor (; (vnode = vnode._parent); ) {\r\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\r\n\t\t\t\tif (newVNode._dom == null) {\r\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\r\n\t\t\t\t\tnewVNode._children = oldVNode._children;\r\n\t\t\t\t}\r\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\r\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\toldCatchError(error, newVNode, oldVNode);\r\n};\r\n\r\nconst oldUnmount = options.unmount;\r\noptions.unmount = function(vnode) {\r\n\t/** @type {import('./internal').Component} */\r\n\tconst component = vnode._component;\r\n\tif (component && component._onResolve) {\r\n\t\tcomponent._onResolve();\r\n\t}\r\n\r\n\t// if the component is still hydrating\r\n\t// most likely it is because the component is suspended\r\n\t// we set the vnode.type as `null` so that it is not a typeof function\r\n\t// so the unmount will remove the vnode._dom\r\n\tif (component && vnode._hydrating === true) {\r\n\t\tvnode.type = null;\r\n\t}\r\n\r\n\tif (oldUnmount) oldUnmount(vnode);\r\n};\r\n\r\nfunction detachedClone(vnode, detachedParent, parentDom) {\r\n\tif (vnode) {\r\n\t\tif (vnode._component && vnode._component.__hooks) {\r\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\r\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\r\n\t\t\t});\r\n\r\n\t\t\tvnode._component.__hooks = null;\r\n\t\t}\r\n\r\n\t\tvnode = assign({}, vnode);\r\n\t\tif (vnode._component != null) {\r\n\t\t\tif (vnode._component._parentDom === parentDom) {\r\n\t\t\t\tvnode._component._parentDom = detachedParent;\r\n\t\t\t}\r\n\t\t\tvnode._component = null;\r\n\t\t}\r\n\r\n\t\tvnode._children =\r\n\t\t\tvnode._children &&\r\n\t\t\tvnode._children.map(child =>\r\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\r\n\t\t\t);\r\n\t}\r\n\r\n\treturn vnode;\r\n}\r\n\r\nfunction removeOriginal(vnode, detachedParent, originalParent) {\r\n\tif (vnode) {\r\n\t\tvnode._original = null;\r\n\t\tvnode._children =\r\n\t\t\tvnode._children &&\r\n\t\t\tvnode._children.map(child =>\r\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\r\n\t\t\t);\r\n\r\n\t\tif (vnode._component) {\r\n\t\t\tif (vnode._component._parentDom === detachedParent) {\r\n\t\t\t\tif (vnode._dom) {\r\n\t\t\t\t\toriginalParent.insertBefore(vnode._dom, vnode._nextDom);\r\n\t\t\t\t}\r\n\t\t\t\tvnode._component._force = true;\r\n\t\t\t\tvnode._component._parentDom = originalParent;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn vnode;\r\n}\r\n\r\n// having custom inheritance instead of a class here saves a lot of bytes\r\nexport function Suspense() {\r\n\t// we do not call super here to golf some bytes...\r\n\tthis._pendingSuspensionCount = 0;\r\n\tthis._suspenders = null;\r\n\tthis._detachOnNextRender = null;\r\n}\r\n\r\n// Things we do here to save some bytes but are not proper JS inheritance:\r\n// - call `new Component()` as the prototype\r\n// - do not set `Suspense.prototype.constructor` to `Suspense`\r\nSuspense.prototype = new Component();\r\n\r\n/**\r\n * @this {import('./internal').SuspenseComponent}\r\n * @param {Promise} promise The thrown promise\r\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\r\n */\r\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\r\n\tconst suspendingComponent = suspendingVNode._component;\r\n\r\n\t/** @type {import('./internal').SuspenseComponent} */\r\n\tconst c = this;\r\n\r\n\tif (c._suspenders == null) {\r\n\t\tc._suspenders = [];\r\n\t}\r\n\tc._suspenders.push(suspendingComponent);\r\n\r\n\tconst resolve = suspended(c._vnode);\r\n\r\n\tlet resolved = false;\r\n\tconst onResolved = () => {\r\n\t\tif (resolved) return;\r\n\r\n\t\tresolved = true;\r\n\t\tsuspendingComponent._onResolve = null;\r\n\r\n\t\tif (resolve) {\r\n\t\t\tresolve(onSuspensionComplete);\r\n\t\t} else {\r\n\t\t\tonSuspensionComplete();\r\n\t\t}\r\n\t};\r\n\r\n\tsuspendingComponent._onResolve = onResolved;\r\n\r\n\tconst onSuspensionComplete = () => {\r\n\t\tif (!--c._pendingSuspensionCount) {\r\n\t\t\t// If the suspension was during hydration we don't need to restore the\r\n\t\t\t// suspended children into the _children array\r\n\t\t\tif (c.state._suspended) {\r\n\t\t\t\tconst suspendedVNode = c.state._suspended;\r\n\t\t\t\tc._vnode._children[0] = removeOriginal(\r\n\t\t\t\t\tsuspendedVNode,\r\n\t\t\t\t\tsuspendedVNode._component._parentDom,\r\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\r\n\r\n\t\t\tlet suspended;\r\n\t\t\twhile ((suspended = c._suspenders.pop())) {\r\n\t\t\t\tsuspended.forceUpdate();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * We do not set `suspended: true` during hydration because we want the actual markup\r\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\r\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\r\n\t */\r\n\tconst wasHydrating = suspendingVNode._hydrating === true;\r\n\tif (!c._pendingSuspensionCount++ && !wasHydrating) {\r\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\r\n\t}\r\n\tpromise.then(onResolved, onResolved);\r\n};\r\n\r\nSuspense.prototype.componentWillUnmount = function() {\r\n\tthis._suspenders = [];\r\n};\r\n\r\n/**\r\n * @this {import('./internal').SuspenseComponent}\r\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\r\n * @param {import('./internal').SuspenseState} state\r\n */\r\nSuspense.prototype.render = function(props, state) {\r\n\tif (this._detachOnNextRender) {\r\n\t\t// When the Suspense's _vnode was created by a call to createVNode\r\n\t\t// (i.e. due to a setState further up in the tree)\r\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\r\n\t\tif (this._vnode._children) {\r\n\t\t\tconst detachedParent = document.createElement('div');\r\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\r\n\t\t\tthis._vnode._children[0] = detachedClone(\r\n\t\t\t\tthis._detachOnNextRender,\r\n\t\t\t\tdetachedParent,\r\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis._detachOnNextRender = null;\r\n\t}\r\n\r\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\r\n\t/** @type {import('./internal').VNode} */\r\n\tconst fallback =\r\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\r\n\tif (fallback) fallback._hydrating = null;\r\n\r\n\treturn [\r\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\r\n\t\tfallback\r\n\t];\r\n};\r\n\r\n/**\r\n * Checks and calls the parent component's _suspended method, passing in the\r\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\r\n * that one of its children/descendants suspended.\r\n *\r\n * The parent MAY return a callback. The callback will get called when the\r\n * suspension resolves, notifying the parent of the fact.\r\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\r\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\r\n * This is a way for the parent to delay unsuspending.\r\n *\r\n * If the parent does not return a callback then the resolved vnode\r\n * gets unsuspended immediately when it resolves.\r\n *\r\n * @param {import('./internal').VNode} vnode\r\n * @returns {((unsuspend: () => void) => void)?}\r\n */\r\nexport function suspended(vnode) {\r\n\t/** @type {import('./internal').Component} */\r\n\tlet component = vnode._parent._component;\r\n\treturn component && component._suspended && component._suspended(vnode);\r\n}\r\n\r\nexport function lazy(loader) {\r\n\tlet prom;\r\n\tlet component;\r\n\tlet error;\r\n\r\n\tfunction Lazy(props) {\r\n\t\tif (!prom) {\r\n\t\t\tprom = loader();\r\n\t\t\tprom.then(\r\n\t\t\t\texports => {\r\n\t\t\t\t\tcomponent = exports.default || exports;\r\n\t\t\t\t},\r\n\t\t\t\te => {\r\n\t\t\t\t\terror = e;\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (error) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\tif (!component) {\r\n\t\t\tthrow prom;\r\n\t\t}\r\n\r\n\t\treturn createElement(component, props);\r\n\t}\r\n\r\n\tLazy.displayName = 'Lazy';\r\n\tLazy._forwarded = true;\r\n\treturn Lazy;\r\n}\r\n","import { Component, toChildArray } from 'preact';\r\nimport { suspended } from './suspense.js';\r\n\r\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\r\nconst SUSPENDED_COUNT = 0;\r\nconst RESOLVED_COUNT = 1;\r\nconst NEXT_NODE = 2;\r\n\r\n// Having custom inheritance instead of a class here saves a lot of bytes.\r\nexport function SuspenseList() {\r\n\tthis._next = null;\r\n\tthis._map = null;\r\n}\r\n\r\n// Mark one of child's earlier suspensions as resolved.\r\n// Some pending callbacks may become callable due to this\r\n// (e.g. the last suspended descendant gets resolved when\r\n// revealOrder === 'together'). Process those callbacks as well.\r\nconst resolve = (list, child, node) => {\r\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\r\n\t\t// The number a child (or any of its descendants) has been suspended\r\n\t\t// matches the number of times it's been resolved. Therefore we\r\n\t\t// mark the child as completely resolved by deleting it from ._map.\r\n\t\t// This is used to figure out when *all* children have been completely\r\n\t\t// resolved when revealOrder is 'together'.\r\n\t\tlist._map.delete(child);\r\n\t}\r\n\r\n\t// If revealOrder is falsy then we can do an early exit, as the\r\n\t// callbacks won't get queued in the node anyway.\r\n\t// If revealOrder is 'together' then also do an early exit\r\n\t// if all suspended descendants have not yet been resolved.\r\n\tif (\r\n\t\t!list.props.revealOrder ||\r\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Walk the currently suspended children in order, calling their\r\n\t// stored callbacks on the way. Stop if we encounter a child that\r\n\t// has not been completely resolved yet.\r\n\tnode = list._next;\r\n\twhile (node) {\r\n\t\twhile (node.length > 3) {\r\n\t\t\tnode.pop()();\r\n\t\t}\r\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tlist._next = node = node[NEXT_NODE];\r\n\t}\r\n};\r\n\r\n// Things we do here to save some bytes but are not proper JS inheritance:\r\n// - call `new Component()` as the prototype\r\n// - do not set `Suspense.prototype.constructor` to `Suspense`\r\nSuspenseList.prototype = new Component();\r\n\r\nSuspenseList.prototype._suspended = function(child) {\r\n\tconst list = this;\r\n\tconst delegated = suspended(list._vnode);\r\n\r\n\tlet node = list._map.get(child);\r\n\tnode[SUSPENDED_COUNT]++;\r\n\r\n\treturn unsuspend => {\r\n\t\tconst wrappedUnsuspend = () => {\r\n\t\t\tif (!list.props.revealOrder) {\r\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\r\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\r\n\t\t\t\tunsuspend();\r\n\t\t\t} else {\r\n\t\t\t\tnode.push(unsuspend);\r\n\t\t\t\tresolve(list, child, node);\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (delegated) {\r\n\t\t\tdelegated(wrappedUnsuspend);\r\n\t\t} else {\r\n\t\t\twrappedUnsuspend();\r\n\t\t}\r\n\t};\r\n};\r\n\r\nSuspenseList.prototype.render = function(props) {\r\n\tthis._next = null;\r\n\tthis._map = new Map();\r\n\r\n\tconst children = toChildArray(props.children);\r\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\r\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\r\n\t\t// then flip the child list around so that the last child will be\r\n\t\t// the first in the linked list.\r\n\t\tchildren.reverse();\r\n\t}\r\n\t// Build the linked list. Iterate through the children in reverse order\r\n\t// so that `_next` points to the first linked list node to be resolved.\r\n\tfor (let i = children.length; i--; ) {\r\n\t\t// Create a new linked list node as an array of form:\r\n\t\t// \t[suspended_count, resolved_count, next_node]\r\n\t\t// where suspended_count and resolved_count are numeric counters for\r\n\t\t// keeping track how many times a node has been suspended and resolved.\r\n\t\t//\r\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\r\n\t\t// processing callbacks until componentDidMount has been called. In a sense\r\n\t\t// node is suspended at least until componentDidMount gets called!\r\n\t\t//\r\n\t\t// Pending callbacks are added to the end of the node:\r\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\r\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\r\n\t}\r\n\treturn props.children;\r\n};\r\n\r\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\r\n\t// Iterate through all children after mounting for two reasons:\r\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\r\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\r\n\t// The nodes can now be completely consumed from the linked list.\r\n\t// 2. Handle nodes that might have gotten resolved between render and\r\n\t// componentDidMount.\r\n\tthis._map.forEach((node, child) => {\r\n\t\tresolve(this, child, node);\r\n\t});\r\n};\r\n","import { createElement, render } from 'preact';\r\n\r\n/**\r\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\r\n */\r\nfunction ContextProvider(props) {\r\n\tthis.getChildContext = () => props.context;\r\n\treturn props.children;\r\n}\r\n\r\n/**\r\n * Portal component\r\n * @this {import('./internal').Component}\r\n * @param {object | null | undefined} props\r\n *\r\n * TODO: use createRoot() instead of fake root\r\n */\r\nfunction Portal(props) {\r\n\tconst _this = this;\r\n\tlet container = props._container;\r\n\r\n\t_this.componentWillUnmount = function() {\r\n\t\trender(null, _this._temp);\r\n\t\t_this._temp = null;\r\n\t\t_this._container = null;\r\n\t};\r\n\r\n\t// When we change container we should clear our old container and\r\n\t// indicate a new mount.\r\n\tif (_this._container && _this._container !== container) {\r\n\t\t_this.componentWillUnmount();\r\n\t}\r\n\r\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\r\n\t// conditional vnode. This should not trigger a render.\r\n\tif (props._vnode) {\r\n\t\tif (!_this._temp) {\r\n\t\t\t_this._container = container;\r\n\r\n\t\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\r\n\t\t\t_this._temp = {\r\n\t\t\t\tnodeType: 1,\r\n\t\t\t\tparentNode: container,\r\n\t\t\t\tchildNodes: [],\r\n\t\t\t\tappendChild(child) {\r\n\t\t\t\t\tthis.childNodes.push(child);\r\n\t\t\t\t\t_this._container.appendChild(child);\r\n\t\t\t\t},\r\n\t\t\t\tinsertBefore(child, before) {\r\n\t\t\t\t\tthis.childNodes.push(child);\r\n\t\t\t\t\t_this._container.appendChild(child);\r\n\t\t\t\t},\r\n\t\t\t\tremoveChild(child) {\r\n\t\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\r\n\t\t\t\t\t_this._container.removeChild(child);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Render our wrapping element into temp.\r\n\t\trender(\r\n\t\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\r\n\t\t\t_this._temp\r\n\t\t);\r\n\t}\r\n\t// When we come from a conditional render, on a mounted\r\n\t// portal we should clear the DOM.\r\n\telse if (_this._temp) {\r\n\t\t_this.componentWillUnmount();\r\n\t}\r\n}\r\n\r\n/**\r\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\r\n * @param {import('./internal').VNode} vnode The vnode to render\r\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\r\n */\r\nexport function createPortal(vnode, container) {\r\n\treturn createElement(Portal, { _vnode: vnode, _container: container });\r\n}\r\n","import {\r\n\trender as preactRender,\r\n\thydrate as preactHydrate,\r\n\toptions,\r\n\ttoChildArray,\r\n\tComponent\r\n} from 'preact';\r\n\r\nexport const REACT_ELEMENT_TYPE =\r\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\r\n\t0xeac7;\r\n\r\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\r\n\r\nconst IS_DOM = typeof document !== 'undefined';\r\n\r\n// Input types for which onchange should not be converted to oninput.\r\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\r\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\r\nconst onChangeInputType = type =>\r\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\r\n\t\t? /fil|che|rad/i\r\n\t\t: /fil|che|ra/i\r\n\t).test(type);\r\n\r\n// Some libraries like `react-virtualized` explicitly check for this.\r\nComponent.prototype.isReactComponent = {};\r\n\r\n// `UNSAFE_*` lifecycle hooks\r\n// Preact only ever invokes the unprefixed methods.\r\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\r\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\r\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\r\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\r\n// See https://github.com/preactjs/preact/issues/1941\r\n[\r\n\t'componentWillMount',\r\n\t'componentWillReceiveProps',\r\n\t'componentWillUpdate'\r\n].forEach(key => {\r\n\tObject.defineProperty(Component.prototype, key, {\r\n\t\tconfigurable: true,\r\n\t\tget() {\r\n\t\t\treturn this['UNSAFE_' + key];\r\n\t\t},\r\n\t\tset(v) {\r\n\t\t\tObject.defineProperty(this, key, {\r\n\t\t\t\tconfigurable: true,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tvalue: v\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n});\r\n\r\n/**\r\n * Proxy render() since React returns a Component reference.\r\n * @param {import('./internal').VNode} vnode VNode tree to render\r\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\r\n * @param {() => void} [callback] Optional callback that will be called after rendering\r\n * @returns {import('./internal').Component | null} The root component reference or null\r\n */\r\nexport function render(vnode, parent, callback) {\r\n\t// React destroys any existing DOM nodes, see #1727\r\n\t// ...but only on the first render, see #1828\r\n\tif (parent._children == null) {\r\n\t\tparent.textContent = '';\r\n\t}\r\n\r\n\tpreactRender(vnode, parent);\r\n\tif (typeof callback == 'function') callback();\r\n\r\n\treturn vnode ? vnode._component : null;\r\n}\r\n\r\nexport function hydrate(vnode, parent, callback) {\r\n\tpreactHydrate(vnode, parent);\r\n\tif (typeof callback == 'function') callback();\r\n\r\n\treturn vnode ? vnode._component : null;\r\n}\r\n\r\nlet oldEventHook = options.event;\r\noptions.event = e => {\r\n\tif (oldEventHook) e = oldEventHook(e);\r\n\te.persist = empty;\r\n\te.isPropagationStopped = isPropagationStopped;\r\n\te.isDefaultPrevented = isDefaultPrevented;\r\n\treturn (e.nativeEvent = e);\r\n};\r\n\r\nfunction empty() {}\r\n\r\nfunction isPropagationStopped() {\r\n\treturn this.cancelBubble;\r\n}\r\n\r\nfunction isDefaultPrevented() {\r\n\treturn this.defaultPrevented;\r\n}\r\n\r\nlet classNameDescriptor = {\r\n\tconfigurable: true,\r\n\tget() {\r\n\t\treturn this.class;\r\n\t}\r\n};\r\n\r\nlet oldVNodeHook = options.vnode;\r\noptions.vnode = vnode => {\r\n\tlet type = vnode.type;\r\n\tlet props = vnode.props;\r\n\tlet normalizedProps = props;\r\n\r\n\t// only normalize props on Element nodes\r\n\tif (typeof type === 'string') {\r\n\t\tconst nonCustomElement = type.indexOf('-') === -1;\r\n\t\tnormalizedProps = {};\r\n\r\n\t\tfor (let i in props) {\r\n\t\t\tlet value = props[i];\r\n\r\n\t\t\tif (IS_DOM && i === 'children' && type === 'noscript') {\r\n\t\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\telse if (i === 'value' && 'defaultValue' in props && value == null) {\r\n\t\t\t\t// Skip applying value if it is null/undefined and we already set\r\n\t\t\t\t// a default value\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (\r\n\t\t\t\ti === 'defaultValue' &&\r\n\t\t\t\t'value' in props &&\r\n\t\t\t\tprops.value == null\r\n\t\t\t) {\r\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\r\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\r\n\t\t\t\ti = 'value';\r\n\t\t\t} else if (i === 'download' && value === true) {\r\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\r\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\r\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\r\n\t\t\t\t// value will be used as the file name and the file will be called\r\n\t\t\t\t// \"true\" upon downloading it.\r\n\t\t\t\tvalue = '';\r\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\r\n\t\t\t\ti = 'ondblclick';\r\n\t\t\t} else if (\r\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\r\n\t\t\t\t!onChangeInputType(props.type)\r\n\t\t\t) {\r\n\t\t\t\ti = 'oninput';\r\n\t\t\t} else if (/^onfocus$/i.test(i)) {\r\n\t\t\t\ti = 'onfocusin';\r\n\t\t\t} else if (/^onblur$/i.test(i)) {\r\n\t\t\t\ti = 'onfocusout';\r\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp)/.test(i)) {\r\n\t\t\t\ti = i.toLowerCase();\r\n\t\t\t} else if (nonCustomElement && CAMEL_PROPS.test(i)) {\r\n\t\t\t\ti = i.replace(/[A-Z0-9]/, '-$&').toLowerCase();\r\n\t\t\t} else if (value === null) {\r\n\t\t\t\tvalue = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tnormalizedProps[i] = value;\r\n\t\t}\r\n\r\n\t\t// Add support for array select values: <select multiple value={[]} />\r\n\t\tif (\r\n\t\t\ttype == 'select' &&\r\n\t\t\tnormalizedProps.multiple &&\r\n\t\t\tArray.isArray(normalizedProps.value)\r\n\t\t) {\r\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\r\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\r\n\t\t\t\tchild.props.selected =\r\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Adding support for defaultValue in select tag\r\n\t\tif (type == 'select' && normalizedProps.defaultValue != null) {\r\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\r\n\t\t\t\tif (normalizedProps.multiple) {\r\n\t\t\t\t\tchild.props.selected =\r\n\t\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchild.props.selected =\r\n\t\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvnode.props = normalizedProps;\r\n\r\n\t\tif (props.class != props.className) {\r\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\r\n\t\t\tif (props.className != null) normalizedProps.class = props.className;\r\n\t\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\r\n\t\t}\r\n\t}\r\n\r\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\r\n\r\n\tif (oldVNodeHook) oldVNodeHook(vnode);\r\n};\r\n\r\n// Only needed for react-relay\r\nlet currentComponent;\r\nconst oldBeforeRender = options._render;\r\noptions._render = function(vnode) {\r\n\tif (oldBeforeRender) {\r\n\t\toldBeforeRender(vnode);\r\n\t}\r\n\tcurrentComponent = vnode._component;\r\n};\r\n\r\n// This is a very very private internal function for React it\r\n// is used to sort-of do runtime dependency injection. So far\r\n// only `react-relay` makes use of it. It uses it to read the\r\n// context value.\r\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\r\n\tReactCurrentDispatcher: {\r\n\t\tcurrent: {\r\n\t\t\treadContext(context) {\r\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n","import {\r\n\tcreateElement,\r\n\trender as preactRender,\r\n\tcloneElement as preactCloneElement,\r\n\tcreateRef,\r\n\tComponent,\r\n\tcreateContext,\r\n\tFragment\r\n} from 'preact';\r\nimport {\r\n\tuseState,\r\n\tuseReducer,\r\n\tuseEffect,\r\n\tuseLayoutEffect,\r\n\tuseRef,\r\n\tuseImperativeHandle,\r\n\tuseMemo,\r\n\tuseCallback,\r\n\tuseContext,\r\n\tuseDebugValue\r\n} from 'preact/hooks';\r\nimport { PureComponent } from './PureComponent';\r\nimport { memo } from './memo';\r\nimport { forwardRef } from './forwardRef';\r\nimport { Children } from './Children';\r\nimport { Suspense, lazy } from './suspense';\r\nimport { SuspenseList } from './suspense-list';\r\nimport { createPortal } from './portals';\r\nimport {\r\n\thydrate,\r\n\trender,\r\n\tREACT_ELEMENT_TYPE,\r\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\r\n} from './render';\r\n\r\nconst version = '17.0.2'; // trick libraries to think we are react\r\n\r\n/**\r\n * Legacy version of createElement.\r\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\r\n */\r\nfunction createFactory(type) {\r\n\treturn createElement.bind(null, type);\r\n}\r\n\r\n/**\r\n * Check if the passed element is a valid (p)react node.\r\n * @param {*} element The element to check\r\n * @returns {boolean}\r\n */\r\nfunction isValidElement(element) {\r\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\r\n}\r\n\r\n/**\r\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\r\n * all vnode normalizations.\r\n * @param {import('./internal').VNode} element The vnode to clone\r\n * @param {object} props Props to add when cloning\r\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\r\n */\r\nfunction cloneElement(element) {\r\n\tif (!isValidElement(element)) return element;\r\n\treturn preactCloneElement.apply(null, arguments);\r\n}\r\n\r\n/**\r\n * Remove a component tree from the DOM, including state and event handlers.\r\n * @param {import('./internal').PreactElement} container\r\n * @returns {boolean}\r\n */\r\nfunction unmountComponentAtNode(container) {\r\n\tif (container._children) {\r\n\t\tpreactRender(null, container);\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Get the matching DOM node for a component\r\n * @param {import('./internal').Component} component\r\n * @returns {import('./internal').PreactElement | null}\r\n */\r\nfunction findDOMNode(component) {\r\n\treturn (\r\n\t\t(component &&\r\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\r\n\t\tnull\r\n\t);\r\n}\r\n\r\n/**\r\n * Deprecated way to control batched rendering inside the reconciler, but we\r\n * already schedule in batches inside our rendering code\r\n * @template Arg\r\n * @param {(arg: Arg) => void} callback function that triggers the updated\r\n * @param {Arg} [arg] Optional argument that can be passed to the callback\r\n */\r\n// eslint-disable-next-line camelcase\r\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\r\n\r\n/**\r\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\r\n * implmented here as a no-op.\r\n * @template Arg\r\n * @template Result\r\n * @param {(arg: Arg) => Result} callback function that runs before the flush\r\n * @param {Arg} [arg] Optional arugment that can be passed to the callback\r\n * @returns\r\n */\r\nconst flushSync = (callback, arg) => callback(arg);\r\n\r\n/**\r\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\r\n * that just renders its children without imposing any restrictions.\r\n */\r\nconst StrictMode = Fragment;\r\n\r\nexport * from 'preact/hooks';\r\nexport {\r\n\tversion,\r\n\tChildren,\r\n\trender,\r\n\thydrate,\r\n\tunmountComponentAtNode,\r\n\tcreatePortal,\r\n\tcreateElement,\r\n\tcreateContext,\r\n\tcreateFactory,\r\n\tcloneElement,\r\n\tcreateRef,\r\n\tFragment,\r\n\tisValidElement,\r\n\tfindDOMNode,\r\n\tComponent,\r\n\tPureComponent,\r\n\tmemo,\r\n\tforwardRef,\r\n\tflushSync,\r\n\t// eslint-disable-next-line camelcase\r\n\tunstable_batchedUpdates,\r\n\tStrictMode,\r\n\tSuspense,\r\n\tSuspenseList,\r\n\tlazy,\r\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\r\n};\r\n\r\n// React copies the named exports to the default one.\r\nexport default {\r\n\tuseState,\r\n\tuseReducer,\r\n\tuseEffect,\r\n\tuseLayoutEffect,\r\n\tuseRef,\r\n\tuseImperativeHandle,\r\n\tuseMemo,\r\n\tuseCallback,\r\n\tuseContext,\r\n\tuseDebugValue,\r\n\tversion,\r\n\tChildren,\r\n\trender,\r\n\thydrate,\r\n\tunmountComponentAtNode,\r\n\tcreatePortal,\r\n\tcreateElement,\r\n\tcreateContext,\r\n\tcreateFactory,\r\n\tcloneElement,\r\n\tcreateRef,\r\n\tFragment,\r\n\tisValidElement,\r\n\tfindDOMNode,\r\n\tComponent,\r\n\tPureComponent,\r\n\tmemo,\r\n\tforwardRef,\r\n\tflushSync,\r\n\tunstable_batchedUpdates,\r\n\tStrictMode,\r\n\tSuspense,\r\n\tSuspenseList,\r\n\tlazy,\r\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\r\n};\r\n","export const EMPTY_OBJ = {};\r\nexport const EMPTY_ARR = [];\r\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\r\n","import { EMPTY_ARR } from \"./constants\";\r\n\r\n/**\r\n * Assign properties from `props` to `obj`\r\n * @template O, P The obj and props types\r\n * @param {O} obj The object to copy properties to\r\n * @param {P} props The object to copy properties from\r\n * @returns {O & P}\r\n */\r\nexport function assign(obj, props) {\r\n\t// @ts-ignore We change the type of `obj` to be `O & P`\r\n\tfor (let i in props) obj[i] = props[i];\r\n\treturn /** @type {O & P} */ (obj);\r\n}\r\n\r\n/**\r\n * Remove a child node from its parent if attached. This is a workaround for\r\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\r\n * is smaller than including a dedicated polyfill.\r\n * @param {Node} node The node to remove\r\n */\r\nexport function removeNode(node) {\r\n\tlet parentNode = node.parentNode;\r\n\tif (parentNode) parentNode.removeChild(node);\r\n}\r\n\r\nexport const slice = EMPTY_ARR.slice;\r\n","import { _catchError } from './diff/catch-error';\r\n\r\n/**\r\n * The `option` object can potentially contain callback functions\r\n * that are called during various stages of our renderer. This is the\r\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\r\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\r\n * for a full list of available option hooks (most editors/IDEs allow you to\r\n * ctrl+click or cmd+click on mac the type definition below).\r\n * @type {import('./internal').Options}\r\n */\r\nconst options = {\r\n\t_catchError\r\n};\r\n\r\nexport default options;\r\n","import { slice } from './util';\r\nimport options from './options';\r\n\r\nlet vnodeId = 0;\r\n\r\n/**\r\n * Create an virtual node (used for JSX)\r\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\r\n * constructor for this virtual node\r\n * @param {object | null | undefined} [props] The properties of the virtual node\r\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\r\n * @returns {import('./internal').VNode}\r\n */\r\nexport function createElement(type, props, children) {\r\n\tlet normalizedProps = {},\r\n\t\tkey,\r\n\t\tref,\r\n\t\ti;\r\n\tfor (i in props) {\r\n\t\tif (i == 'key') key = props[i];\r\n\t\telse if (i == 'ref') ref = props[i];\r\n\t\telse normalizedProps[i] = props[i];\r\n\t}\r\n\r\n\tif (arguments.length > 2) {\r\n\t\tnormalizedProps.children =\r\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\r\n\t}\r\n\r\n\t// If a Component VNode, check for and apply defaultProps\r\n\t// Note: type may be undefined in development, must never error here.\r\n\tif (typeof type == 'function' && type.defaultProps != null) {\r\n\t\tfor (i in type.defaultProps) {\r\n\t\t\tif (normalizedProps[i] === undefined) {\r\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn createVNode(type, normalizedProps, key, ref, null);\r\n}\r\n\r\n/**\r\n * Create a VNode (used internally by Preact)\r\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\r\n * Constructor for this virtual node\r\n * @param {object | string | number | null} props The properties of this virtual node.\r\n * If this virtual node represents a text node, this is the text of the node (string or number).\r\n * @param {string | number | null} key The key for this virtual node, used when\r\n * diffing it against its children\r\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\r\n * receive a reference to its created child\r\n * @returns {import('./internal').VNode}\r\n */\r\nexport function createVNode(type, props, key, ref, original) {\r\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\r\n\t// Do not inline into createElement and coerceToVNode!\r\n\tconst vnode = {\r\n\t\ttype,\r\n\t\tprops,\r\n\t\tkey,\r\n\t\tref,\r\n\t\t_children: null,\r\n\t\t_parent: null,\r\n\t\t_depth: 0,\r\n\t\t_dom: null,\r\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\r\n\t\t// be set to dom.nextSibling which can return `null` and it is important\r\n\t\t// to be able to distinguish between an uninitialized _nextDom and\r\n\t\t// a _nextDom that has been set to `null`\r\n\t\t_nextDom: undefined,\r\n\t\t_component: null,\r\n\t\t_hydrating: null,\r\n\t\tconstructor: undefined,\r\n\t\t_original: original == null ? ++vnodeId : original\r\n\t};\r\n\r\n\t// Only invoke the vnode hook if this was *not* a direct copy:\r\n\tif (original == null && options.vnode != null) options.vnode(vnode);\r\n\r\n\treturn vnode;\r\n}\r\n\r\nexport function createRef() {\r\n\treturn { current: null };\r\n}\r\n\r\nexport function Fragment(props) {\r\n\treturn props.children;\r\n}\r\n\r\n/**\r\n * Check if a the argument is a valid Preact VNode.\r\n * @param {*} vnode\r\n * @returns {vnode is import('./internal').VNode}\r\n */\r\nexport const isValidElement = vnode =>\r\n\tvnode != null && vnode.constructor === undefined;\r\n","import { assign } from './util';\r\nimport { diff, commitRoot } from './diff/index';\r\nimport options from './options';\r\nimport { Fragment } from './create-element';\r\n\r\n/**\r\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\r\n * trigger rendering\r\n * @param {object} props The initial component props\r\n * @param {object} context The initial context from parent components'\r\n * getChildContext\r\n */\r\nexport function Component(props, context) {\r\n\tthis.props = props;\r\n\tthis.context = context;\r\n}\r\n\r\n/**\r\n * Update component state and schedule a re-render.\r\n * @this {import('./internal').Component}\r\n * @param {object | ((s: object, p: object) => object)} update A hash of state\r\n * properties to update with new values or a function that given the current\r\n * state and props returns a new partial state\r\n * @param {() => void} [callback] A function to be called once component state is\r\n * updated\r\n */\r\nComponent.prototype.setState = function(update, callback) {\r\n\t// only clone state when copying to nextState the first time.\r\n\tlet s;\r\n\tif (this._nextState != null && this._nextState !== this.state) {\r\n\t\ts = this._nextState;\r\n\t} else {\r\n\t\ts = this._nextState = assign({}, this.state);\r\n\t}\r\n\r\n\tif (typeof update == 'function') {\r\n\t\t// Some libraries like `immer` mark the current state as readonly,\r\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\r\n\t\tupdate = update(assign({}, s), this.props);\r\n\t}\r\n\r\n\tif (update) {\r\n\t\tassign(s, update);\r\n\t}\r\n\r\n\t// Skip update if updater function returned null\r\n\tif (update == null) return;\r\n\r\n\tif (this._vnode) {\r\n\t\tif (callback) this._renderCallbacks.push(callback);\r\n\t\tenqueueRender(this);\r\n\t}\r\n};\r\n\r\n/**\r\n * Immediately perform a synchronous re-render of the component\r\n * @this {import('./internal').Component}\r\n * @param {() => void} [callback] A function to be called after component is\r\n * re-rendered\r\n */\r\nComponent.prototype.forceUpdate = function(callback) {\r\n\tif (this._vnode) {\r\n\t\t// Set render mode so that we can differentiate where the render request\r\n\t\t// is coming from. We need this because forceUpdate should never call\r\n\t\t// shouldComponentUpdate\r\n\t\tthis._force = true;\r\n\t\tif (callback) this._renderCallbacks.push(callback);\r\n\t\tenqueueRender(this);\r\n\t}\r\n};\r\n\r\n/**\r\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\r\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\r\n * @param {object} props Props (eg: JSX attributes) received from parent\r\n * element/component\r\n * @param {object} state The component's current state\r\n * @param {object} context Context object, as returned by the nearest\r\n * ancestor's `getChildContext()`\r\n * @returns {import('./index').ComponentChildren | void}\r\n */\r\nComponent.prototype.render = Fragment;\r\n\r\n/**\r\n * @param {import('./internal').VNode} vnode\r\n * @param {number | null} [childIndex]\r\n */\r\nexport function getDomSibling(vnode, childIndex) {\r\n\tif (childIndex == null) {\r\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\r\n\t\treturn vnode._parent\r\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\r\n\t\t\t: null;\r\n\t}\r\n\r\n\tlet sibling;\r\n\tfor (; childIndex < vnode._children.length; childIndex++) {\r\n\t\tsibling = vnode._children[childIndex];\r\n\r\n\t\tif (sibling != null && sibling._dom != null) {\r\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\r\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\r\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\r\n\t\t\treturn sibling._dom;\r\n\t\t}\r\n\t}\r\n\r\n\t// If we get here, we have not found a DOM node in this vnode's children.\r\n\t// We must resume from this vnode's sibling (in it's parent _children array)\r\n\t// Only climb up and search the parent if we aren't searching through a DOM\r\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\r\n\t// the search)\r\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\r\n}\r\n\r\n/**\r\n * Trigger in-place re-rendering of a component.\r\n * @param {import('./internal').Component} component The component to rerender\r\n */\r\nfunction renderComponent(component) {\r\n\tlet vnode = component._vnode,\r\n\t\toldDom = vnode._dom,\r\n\t\tparentDom = component._parentDom;\r\n\r\n\tif (parentDom) {\r\n\t\tlet commitQueue = [];\r\n\t\tconst oldVNode = assign({}, vnode);\r\n\t\toldVNode._original = vnode._original + 1;\r\n\r\n\t\tdiff(\r\n\t\t\tparentDom,\r\n\t\t\tvnode,\r\n\t\t\toldVNode,\r\n\t\t\tcomponent._globalContext,\r\n\t\t\tparentDom.ownerSVGElement !== undefined,\r\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\r\n\t\t\tcommitQueue,\r\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\r\n\t\t\tvnode._hydrating\r\n\t\t);\r\n\t\tcommitRoot(commitQueue, vnode);\r\n\r\n\t\tif (vnode._dom != oldDom) {\r\n\t\t\tupdateParentDomPointers(vnode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {import('./internal').VNode} vnode\r\n */\r\nfunction updateParentDomPointers(vnode) {\r\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\r\n\t\tvnode._dom = vnode._component.base = null;\r\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\r\n\t\t\tlet child = vnode._children[i];\r\n\t\t\tif (child != null && child._dom != null) {\r\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn updateParentDomPointers(vnode);\r\n\t}\r\n}\r\n\r\n/**\r\n * The render queue\r\n * @type {Array<import('./internal').Component>}\r\n */\r\nlet rerenderQueue = [];\r\n\r\n/**\r\n * Asynchronously schedule a callback\r\n * @type {(cb: () => void) => void}\r\n */\r\n/* istanbul ignore next */\r\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\r\nconst defer =\r\n\ttypeof Promise == 'function'\r\n\t\t? Promise.prototype.then.bind(Promise.resolve())\r\n\t\t: setTimeout;\r\n\r\n/*\r\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\r\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\r\n * do, and when their effects will be applied. See the links below for some further reading on designing\r\n * asynchronous APIs.\r\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\r\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\r\n */\r\n\r\nlet prevDebounce;\r\n\r\n/**\r\n * Enqueue a rerender of a component\r\n * @param {import('./internal').Component} c The component to rerender\r\n */\r\nexport function enqueueRender(c) {\r\n\tif (\r\n\t\t(!c._dirty &&\r\n\t\t\t(c._dirty = true) &&\r\n\t\t\trerenderQueue.push(c) &&\r\n\t\t\t!process._rerenderCount++) ||\r\n\t\tprevDebounce !== options.debounceRendering\r\n\t) {\r\n\t\tprevDebounce = options.debounceRendering;\r\n\t\t(prevDebounce || defer)(process);\r\n\t}\r\n}\r\n\r\n/** Flush the render queue by rerendering all queued components */\r\nfunction process() {\r\n\tlet queue;\r\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\r\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\r\n\t\trerenderQueue = [];\r\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\r\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\r\n\t\tqueue.some(c => {\r\n\t\t\tif (c._dirty) renderComponent(c);\r\n\t\t});\r\n\t}\r\n}\r\nprocess._rerenderCount = 0;\r\n","import { enqueueRender } from './component';\r\n\r\nexport let i = 0;\r\n\r\nexport function createContext(defaultValue, contextId) {\r\n\tcontextId = '__cC' + i++;\r\n\r\n\tconst context = {\r\n\t\t_id: contextId,\r\n\t\t_defaultValue: defaultValue,\r\n\t\t/** @type {import('./internal').FunctionComponent} */\r\n\t\tConsumer(props, contextValue) {\r\n\t\t\t// return props.children(\r\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\r\n\t\t\t// );\r\n\t\t\treturn props.children(contextValue);\r\n\t\t},\r\n\t\t/** @type {import('./internal').FunctionComponent} */\r\n\t\tProvider(props) {\r\n\t\t\tif (!this.getChildContext) {\r\n\t\t\t\tlet subs = [];\r\n\t\t\t\tlet ctx = {};\r\n\t\t\t\tctx[contextId] = this;\r\n\r\n\t\t\t\tthis.getChildContext = () => ctx;\r\n\r\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\r\n\t\t\t\t\tif (this.props.value !== _props.value) {\r\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\r\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\r\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\r\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\r\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\r\n\t\t\t\t\t\t// subs.some(c => {\r\n\t\t\t\t\t\t// \tc.context = _props.value;\r\n\t\t\t\t\t\t// \tenqueueRender(c);\r\n\t\t\t\t\t\t// });\r\n\r\n\t\t\t\t\t\t// subs.some(c => {\r\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\r\n\t\t\t\t\t\t// \tenqueueRender(c);\r\n\t\t\t\t\t\t// });\r\n\t\t\t\t\t\tsubs.some(enqueueRender);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.sub = c => {\r\n\t\t\t\t\tsubs.push(c);\r\n\t\t\t\t\tlet old = c.componentWillUnmount;\r\n\t\t\t\t\tc.componentWillUnmount = () => {\r\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\r\n\t\t\t\t\t\tif (old) old.call(c);\r\n\t\t\t\t\t};\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn props.children;\r\n\t\t}\r\n\t};\r\n\r\n\t// Devtools needs access to the context object when it\r\n\t// encounters a Provider. This is necessary to support\r\n\t// setting `displayName` on the context object instead\r\n\t// of on the component itself. See:\r\n\t// https://reactjs.org/docs/context.html#contextdisplayname\r\n\r\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\r\n}\r\n","import { diff, unmount, applyRef } from './index';\r\nimport { createVNode, Fragment } from '../create-element';\r\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\r\nimport { getDomSibling } from '../component';\r\n\r\n/**\r\n * Diff the children of a virtual node\r\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\r\n * children are being diffed\r\n * @param {import('../internal').ComponentChildren[]} renderResult\r\n * @param {import('../internal').VNode} newParentVNode The new virtual\r\n * node whose children should be diff'ed against oldParentVNode\r\n * @param {import('../internal').VNode} oldParentVNode The old virtual\r\n * node whose children should be diff'ed against newParentVNode\r\n * @param {object} globalContext The current context object - modified by getChildContext\r\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\r\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\r\n * @param {Array<import('../internal').Component>} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\r\n * element any new dom elements should be placed around. Likely `null` on first\r\n * render (except when hydrating). Can be a sibling DOM element when diffing\r\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\r\n * @param {boolean} isHydrating Whether or not we are in hydration\r\n */\r\nexport function diffChildren(\r\n\tparentDom,\r\n\trenderResult,\r\n\tnewParentVNode,\r\n\toldParentVNode,\r\n\tglobalContext,\r\n\tisSvg,\r\n\texcessDomChildren,\r\n\tcommitQueue,\r\n\toldDom,\r\n\tisHydrating\r\n) {\r\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\r\n\r\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\r\n\t// as EMPTY_OBJ._children should be `undefined`.\r\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\r\n\r\n\tlet oldChildrenLength = oldChildren.length;\r\n\r\n\tnewParentVNode._children = [];\r\n\tfor (i = 0; i < renderResult.length; i++) {\r\n\t\tchildVNode = renderResult[i];\r\n\r\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\r\n\t\t\tchildVNode = newParentVNode._children[i] = null;\r\n\t\t}\r\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\r\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\r\n\t\t// it's own DOM & etc. pointers\r\n\t\telse if (\r\n\t\t\ttypeof childVNode == 'string' ||\r\n\t\t\ttypeof childVNode == 'number' ||\r\n\t\t\t// eslint-disable-next-line valid-typeof\r\n\t\t\ttypeof childVNode == 'bigint'\r\n\t\t) {\r\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\r\n\t\t\t\tnull,\r\n\t\t\t\tchildVNode,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tchildVNode\r\n\t\t\t);\r\n\t\t} else if (Array.isArray(childVNode)) {\r\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\r\n\t\t\t\tFragment,\r\n\t\t\t\t{ children: childVNode },\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull\r\n\t\t\t);\r\n\t\t} else if (childVNode._depth > 0) {\r\n\t\t\t// VNode is already in use, clone it. This can happen in the following\r\n\t\t\t// scenario:\r\n\t\t\t// const reuse = <div />\r\n\t\t\t// <div>{reuse}<span />{reuse}</div>\r\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\r\n\t\t\t\tchildVNode.type,\r\n\t\t\t\tchildVNode.props,\r\n\t\t\t\tchildVNode.key,\r\n\t\t\t\tnull,\r\n\t\t\t\tchildVNode._original\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\r\n\t\t}\r\n\r\n\t\t// Terser removes the `continue` here and wraps the loop body\r\n\t\t// in a `if (childVNode) { ... } condition\r\n\t\tif (childVNode == null) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tchildVNode._parent = newParentVNode;\r\n\t\tchildVNode._depth = newParentVNode._depth + 1;\r\n\r\n\t\t// Check if we find a corresponding element in oldChildren.\r\n\t\t// If found, delete the array item by setting to `undefined`.\r\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\r\n\t\t// (holes).\r\n\t\toldVNode = oldChildren[i];\r\n\r\n\t\tif (\r\n\t\t\toldVNode === null ||\r\n\t\t\t(oldVNode &&\r\n\t\t\t\tchildVNode.key == oldVNode.key &&\r\n\t\t\t\tchildVNode.type === oldVNode.type)\r\n\t\t) {\r\n\t\t\toldChildren[i] = undefined;\r\n\t\t} else {\r\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\r\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\r\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\r\n\t\t\t\toldVNode = oldChildren[j];\r\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\r\n\t\t\t\t// We always match by type (in either case).\r\n\t\t\t\tif (\r\n\t\t\t\t\toldVNode &&\r\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\r\n\t\t\t\t\tchildVNode.type === oldVNode.type\r\n\t\t\t\t) {\r\n\t\t\t\t\toldChildren[j] = undefined;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\toldVNode = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toldVNode = oldVNode || EMPTY_OBJ;\r\n\r\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\r\n\t\tdiff(\r\n\t\t\tparentDom,\r\n\t\t\tchildVNode,\r\n\t\t\toldVNode,\r\n\t\t\tglobalContext,\r\n\t\t\tisSvg,\r\n\t\t\texcessDomChildren,\r\n\t\t\tcommitQueue,\r\n\t\t\toldDom,\r\n\t\t\tisHydrating\r\n\t\t);\r\n\r\n\t\tnewDom = childVNode._dom;\r\n\r\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\r\n\t\t\tif (!refs) refs = [];\r\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\r\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\r\n\t\t}\r\n\r\n\t\tif (newDom != null) {\r\n\t\t\tif (firstChildDom == null) {\r\n\t\t\t\tfirstChildDom = newDom;\r\n\t\t\t}\r\n\r\n\t\t\tif (\r\n\t\t\t\ttypeof childVNode.type == 'function' &&\r\n\t\t\t\tchildVNode._children === oldVNode._children\r\n\t\t\t) {\r\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\r\n\t\t\t\t\tchildVNode,\r\n\t\t\t\t\toldDom,\r\n\t\t\t\t\tparentDom\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\toldDom = placeChild(\r\n\t\t\t\t\tparentDom,\r\n\t\t\t\t\tchildVNode,\r\n\t\t\t\t\toldVNode,\r\n\t\t\t\t\toldChildren,\r\n\t\t\t\t\tnewDom,\r\n\t\t\t\t\toldDom\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof newParentVNode.type == 'function') {\r\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\r\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\r\n\t\t\t\t//\r\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\r\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\r\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\r\n\t\t\t\t// node's nextSibling.\r\n\t\t\t\tnewParentVNode._nextDom = oldDom;\r\n\t\t\t}\r\n\t\t} else if (\r\n\t\t\toldDom &&\r\n\t\t\toldVNode._dom == oldDom &&\r\n\t\t\toldDom.parentNode != parentDom\r\n\t\t) {\r\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\r\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\r\n\t\t\toldDom = getDomSibling(oldVNode);\r\n\t\t}\r\n\t}\r\n\r\n\tnewParentVNode._dom = firstChildDom;\r\n\r\n\t// Remove remaining oldChildren if there are any.\r\n\tfor (i = oldChildrenLength; i--; ) {\r\n\t\tif (oldChildren[i] != null) {\r\n\t\t\tif (\r\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\r\n\t\t\t\toldChildren[i]._dom != null &&\r\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\r\n\t\t\t) {\r\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\r\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\r\n\t\t\t\t// _nextDom to it\r\n\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldParentVNode, i + 1);\r\n\t\t\t}\r\n\r\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\r\n\t\t}\r\n\t}\r\n\r\n\t// Set refs only after unmount\r\n\tif (refs) {\r\n\t\tfor (i = 0; i < refs.length; i++) {\r\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction reorderChildren(childVNode, oldDom, parentDom) {\r\n\t// Note: VNodes in nested suspended trees may be missing _children.\r\n\tlet c = childVNode._children;\r\n\tlet tmp = 0;\r\n\tfor (; c && tmp < c.length; tmp++) {\r\n\t\tlet vnode = c[tmp];\r\n\t\tif (vnode) {\r\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\r\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\r\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\r\n\t\t\t// (childVNode here).\r\n\t\t\tvnode._parent = childVNode;\r\n\r\n\t\t\tif (typeof vnode.type == 'function') {\r\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\r\n\t\t\t} else {\r\n\t\t\t\toldDom = placeChild(\r\n\t\t\t\t\tparentDom,\r\n\t\t\t\t\tvnode,\r\n\t\t\t\t\tvnode,\r\n\t\t\t\t\tc,\r\n\t\t\t\t\tvnode._dom,\r\n\t\t\t\t\toldDom\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn oldDom;\r\n}\r\n\r\n/**\r\n * Flatten and loop through the children of a virtual node\r\n * @param {import('../index').ComponentChildren} children The unflattened\r\n * children of a virtual node\r\n * @returns {import('../internal').VNode[]}\r\n */\r\nexport function toChildArray(children, out) {\r\n\tout = out || [];\r\n\tif (children == null || typeof children == 'boolean') {\r\n\t} else if (Array.isArray(children)) {\r\n\t\tchildren.some(child => {\r\n\t\t\ttoChildArray(child, out);\r\n\t\t});\r\n\t} else {\r\n\t\tout.push(children);\r\n\t}\r\n\treturn out;\r\n}\r\n\r\nfunction placeChild(\r\n\tparentDom,\r\n\tchildVNode,\r\n\toldVNode,\r\n\toldChildren,\r\n\tnewDom,\r\n\toldDom\r\n) {\r\n\tlet nextDom;\r\n\tif (childVNode._nextDom !== undefined) {\r\n\t\t// Only Fragments or components that return Fragment like VNodes will\r\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\r\n\t\t// of last DOM child of this child VNode\r\n\t\tnextDom = childVNode._nextDom;\r\n\r\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\r\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\r\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\r\n\t\t// can clean up the property\r\n\t\tchildVNode._nextDom = undefined;\r\n\t} else if (\r\n\t\toldVNode == null ||\r\n\t\tnewDom != oldDom ||\r\n\t\tnewDom.parentNode == null\r\n\t) {\r\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\r\n\t\t\tparentDom.appendChild(newDom);\r\n\t\t\tnextDom = null;\r\n\t\t} else {\r\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\r\n\t\t\tfor (\r\n\t\t\t\tlet sibDom = oldDom, j = 0;\r\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\r\n\t\t\t\tj += 2\r\n\t\t\t) {\r\n\t\t\t\tif (sibDom == newDom) {\r\n\t\t\t\t\tbreak outer;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tparentDom.insertBefore(newDom, oldDom);\r\n\t\t\tnextDom = oldDom;\r\n\t\t}\r\n\t}\r\n\r\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\r\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\r\n\t// See more detail in create-element.js:createVNode\r\n\tif (nextDom !== undefined) {\r\n\t\toldDom = nextDom;\r\n\t} else {\r\n\t\toldDom = newDom.nextSibling;\r\n\t}\r\n\r\n\treturn oldDom;\r\n}\r\n","import { IS_NON_DIMENSIONAL } from '../constants';\r\nimport options from '../options';\r\n\r\n/**\r\n * Diff the old and new properties of a VNode and apply changes to the DOM node\r\n * @param {import('../internal').PreactElement} dom The DOM node to apply\r\n * changes to\r\n * @param {object} newProps The new props\r\n * @param {object} oldProps The old props\r\n * @param {boolean} isSvg Whether or not this node is an SVG node\r\n * @param {boolean} hydrate Whether or not we are in hydration mode\r\n */\r\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\r\n\tlet i;\r\n\r\n\tfor (i in oldProps) {\r\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\r\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\r\n\t\t}\r\n\t}\r\n\r\n\tfor (i in newProps) {\r\n\t\tif (\r\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\r\n\t\t\ti !== 'children' &&\r\n\t\t\ti !== 'key' &&\r\n\t\t\ti !== 'value' &&\r\n\t\t\ti !== 'checked' &&\r\n\t\t\toldProps[i] !== newProps[i]\r\n\t\t) {\r\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction setStyle(style, key, value) {\r\n\tif (key[0] === '-') {\r\n\t\tstyle.setProperty(key, value);\r\n\t} else if (value == null) {\r\n\t\tstyle[key] = '';\r\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\r\n\t\tstyle[key] = value;\r\n\t} else {\r\n\t\tstyle[key] = value + 'px';\r\n\t}\r\n}\r\n\r\n/**\r\n * Set a property value on a DOM node\r\n * @param {import('../internal').PreactElement} dom The DOM node to modify\r\n * @param {string} name The name of the property to set\r\n * @param {*} value The value to set the property to\r\n * @param {*} oldValue The old value the property had\r\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\r\n */\r\nexport function setProperty(dom, name, value, oldValue, isSvg) {\r\n\tlet useCapture;\r\n\r\n\to: if (name === 'style') {\r\n\t\tif (typeof value == 'string') {\r\n\t\t\tdom.style.cssText = value;\r\n\t\t} else {\r\n\t\t\tif (typeof oldValue == 'string') {\r\n\t\t\t\tdom.style.cssText = oldValue = '';\r\n\t\t\t}\r\n\r\n\t\t\tif (oldValue) {\r\n\t\t\t\tfor (name in oldValue) {\r\n\t\t\t\t\tif (!(value && name in value)) {\r\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\tfor (name in value) {\r\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\r\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\r\n\telse if (name[0] === 'o' && name[1] === 'n') {\r\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\r\n\r\n\t\t// Infer correct casing for DOM built-in events:\r\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\r\n\t\telse name = name.slice(2);\r\n\r\n\t\tif (!dom._listeners) dom._listeners = {};\r\n\t\tdom._listeners[name + useCapture] = value;\r\n\r\n\t\tif (value) {\r\n\t\t\tif (!oldValue) {\r\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\r\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\r\n\t\t\tdom.removeEventListener(name, handler, useCapture);\r\n\t\t}\r\n\t} else if (name !== 'dangerouslySetInnerHTML') {\r\n\t\tif (isSvg) {\r\n\t\t\t// Normalize incorrect prop usage for SVG:\r\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\r\n\t\t\t// - className --> class\r\n\t\t\tname = name.replace(/xlink[H:h]/, 'h').replace(/sName$/, 's');\r\n\t\t} else if (\r\n\t\t\tname !== 'href' &&\r\n\t\t\tname !== 'list' &&\r\n\t\t\tname !== 'form' &&\r\n\t\t\t// Default value in browsers is `-1` and an empty string is\r\n\t\t\t// cast to `0` instead\r\n\t\t\tname !== 'tabIndex' &&\r\n\t\t\tname !== 'download' &&\r\n\t\t\tname in dom\r\n\t\t) {\r\n\t\t\ttry {\r\n\t\t\t\tdom[name] = value == null ? '' : value;\r\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\r\n\t\t\t\tbreak o;\r\n\t\t\t} catch (e) {}\r\n\t\t}\r\n\r\n\t\t// ARIA-attributes have a different notion of boolean values.\r\n\t\t// The value `false` is different from the attribute not\r\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\r\n\t\t// ARIA-attributes we could treat false as a removal, but the\r\n\t\t// amount of exceptions would cost us too many bytes. On top of\r\n\t\t// that other VDOM frameworks also always stringify `false`.\r\n\r\n\t\tif (typeof value === 'function') {\r\n\t\t\t// never serialize functions as attribute values\r\n\t\t} else if (\r\n\t\t\tvalue != null &&\r\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\r\n\t\t) {\r\n\t\t\tdom.setAttribute(name, value);\r\n\t\t} else {\r\n\t\t\tdom.removeAttribute(name);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Proxy an event to hooked event handlers\r\n * @param {Event} e The event object from the browser\r\n * @private\r\n */\r\nfunction eventProxy(e) {\r\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\r\n}\r\n\r\nfunction eventProxyCapture(e) {\r\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\r\n}\r\n","import { EMPTY_OBJ } from '../constants';\r\nimport { Component, getDomSibling } from '../component';\r\nimport { Fragment } from '../create-element';\r\nimport { diffChildren } from './children';\r\nimport { diffProps, setProperty } from './props';\r\nimport { assign, removeNode, slice } from '../util';\r\nimport options from '../options';\r\n\r\n/**\r\n * Diff two virtual nodes and apply proper changes to the DOM\r\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\r\n * @param {import('../internal').VNode} newVNode The new virtual node\r\n * @param {import('../internal').VNode} oldVNode The old virtual node\r\n * @param {object} globalContext The current context object. Modified by getChildContext\r\n * @param {boolean} isSvg Whether or not this element is an SVG node\r\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\r\n * @param {Array<import('../internal').Component>} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\r\n * element any new dom elements should be placed around. Likely `null` on first\r\n * render (except when hydrating). Can be a sibling DOM element when diffing\r\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\r\n * @param {boolean} [isHydrating] Whether or not we are in hydration\r\n */\r\nexport function diff(\r\n\tparentDom,\r\n\tnewVNode,\r\n\toldVNode,\r\n\tglobalContext,\r\n\tisSvg,\r\n\texcessDomChildren,\r\n\tcommitQueue,\r\n\toldDom,\r\n\tisHydrating\r\n) {\r\n\tlet tmp,\r\n\t\tnewType = newVNode.type;\r\n\r\n\t// When passing through createElement it assigns the object\r\n\t// constructor as undefined. This to prevent JSON-injection.\r\n\tif (newVNode.constructor !== undefined) return null;\r\n\r\n\t// If the previous diff bailed out, resume creating/hydrating.\r\n\tif (oldVNode._hydrating != null) {\r\n\t\tisHydrating = oldVNode._hydrating;\r\n\t\toldDom = newVNode._dom = oldVNode._dom;\r\n\t\t// if we resume, we want the tree to be \"unlocked\"\r\n\t\tnewVNode._hydrating = null;\r\n\t\texcessDomChildren = [oldDom];\r\n\t}\r\n\r\n\tif ((tmp = options._diff)) tmp(newVNode);\r\n\r\n\ttry {\r\n\t\touter: if (typeof newType == 'function') {\r\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\r\n\t\t\tlet newProps = newVNode.props;\r\n\r\n\t\t\t// Necessary for createContext api. Setting this property will pass\r\n\t\t\t// the context value as `this.context` just for this component.\r\n\t\t\ttmp = newType.contextType;\r\n\t\t\tlet provider = tmp && globalContext[tmp._id];\r\n\t\t\tlet componentContext = tmp\r\n\t\t\t\t? provider\r\n\t\t\t\t\t? provider.props.value\r\n\t\t\t\t\t: tmp._defaultValue\r\n\t\t\t\t: globalContext;\r\n\r\n\t\t\t// Get component and set it to `c`\r\n\t\t\tif (oldVNode._component) {\r\n\t\t\t\tc = newVNode._component = oldVNode._component;\r\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\r\n\t\t\t} else {\r\n\t\t\t\t// Instantiate the new component\r\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\r\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\r\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\r\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\r\n\t\t\t\t\tc.constructor = newType;\r\n\t\t\t\t\tc.render = doRender;\r\n\t\t\t\t}\r\n\t\t\t\tif (provider) provider.sub(c);\r\n\r\n\t\t\t\tc.props = newProps;\r\n\t\t\t\tif (!c.state) c.state = {};\r\n\t\t\t\tc.context = componentContext;\r\n\t\t\t\tc._globalContext = globalContext;\r\n\t\t\t\tisNew = c._dirty = true;\r\n\t\t\t\tc._renderCallbacks = [];\r\n\t\t\t}\r\n\r\n\t\t\t// Invoke getDerivedStateFromProps\r\n\t\t\tif (c._nextState == null) {\r\n\t\t\t\tc._nextState = c.state;\r\n\t\t\t}\r\n\t\t\tif (newType.getDerivedStateFromProps != null) {\r\n\t\t\t\tif (c._nextState == c.state) {\r\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tassign(\r\n\t\t\t\t\tc._nextState,\r\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\toldProps = c.props;\r\n\t\t\toldState = c.state;\r\n\r\n\t\t\t// Invoke pre-render lifecycle methods\r\n\t\t\tif (isNew) {\r\n\t\t\t\tif (\r\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\r\n\t\t\t\t\tc.componentWillMount != null\r\n\t\t\t\t) {\r\n\t\t\t\t\tc.componentWillMount();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.componentDidMount != null) {\r\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (\r\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\r\n\t\t\t\t\tnewProps !== oldProps &&\r\n\t\t\t\t\tc.componentWillReceiveProps != null\r\n\t\t\t\t) {\r\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t(!c._force &&\r\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\r\n\t\t\t\t\t\tc.shouldComponentUpdate(\r\n\t\t\t\t\t\t\tnewProps,\r\n\t\t\t\t\t\t\tc._nextState,\r\n\t\t\t\t\t\t\tcomponentContext\r\n\t\t\t\t\t\t) === false) ||\r\n\t\t\t\t\tnewVNode._original === oldVNode._original\r\n\t\t\t\t) {\r\n\t\t\t\t\tc.props = newProps;\r\n\t\t\t\t\tc.state = c._nextState;\r\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\r\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\r\n\t\t\t\t\tc._vnode = newVNode;\r\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\r\n\t\t\t\t\tnewVNode._children = oldVNode._children;\r\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\r\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (c._renderCallbacks.length) {\r\n\t\t\t\t\t\tcommitQueue.push(c);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak outer;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.componentWillUpdate != null) {\r\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (c.componentDidUpdate != null) {\r\n\t\t\t\t\tc._renderCallbacks.push(() => {\r\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tc.context = componentContext;\r\n\t\t\tc.props = newProps;\r\n\t\t\tc.state = c._nextState;\r\n\r\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\r\n\r\n\t\t\tc._dirty = false;\r\n\t\t\tc._vnode = newVNode;\r\n\t\t\tc._parentDom = parentDom;\r\n\r\n\t\t\ttmp = c.render(c.props, c.state, c.context);\r\n\r\n\t\t\t// Handle setState called in render, see #2553\r\n\t\t\tc.state = c._nextState;\r\n\r\n\t\t\tif (c.getChildContext != null) {\r\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\r\n\t\t\t}\r\n\r\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\r\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\r\n\t\t\t}\r\n\r\n\t\t\tlet isTopLevelFragment =\r\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\r\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\r\n\r\n\t\t\tdiffChildren(\r\n\t\t\t\tparentDom,\r\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\r\n\t\t\t\tnewVNode,\r\n\t\t\t\toldVNode,\r\n\t\t\t\tglobalContext,\r\n\t\t\t\tisSvg,\r\n\t\t\t\texcessDomChildren,\r\n\t\t\t\tcommitQueue,\r\n\t\t\t\toldDom,\r\n\t\t\t\tisHydrating\r\n\t\t\t);\r\n\r\n\t\t\tc.base = newVNode._dom;\r\n\r\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\r\n\t\t\tnewVNode._hydrating = null;\r\n\r\n\t\t\tif (c._renderCallbacks.length) {\r\n\t\t\t\tcommitQueue.push(c);\r\n\t\t\t}\r\n\r\n\t\t\tif (clearProcessingException) {\r\n\t\t\t\tc._pendingError = c._processingException = null;\r\n\t\t\t}\r\n\r\n\t\t\tc._force = false;\r\n\t\t} else if (\r\n\t\t\texcessDomChildren == null &&\r\n\t\t\tnewVNode._original === oldVNode._original\r\n\t\t) {\r\n\t\t\tnewVNode._children = oldVNode._children;\r\n\t\t\tnewVNode._dom = oldVNode._dom;\r\n\t\t} else {\r\n\t\t\tnewVNode._dom = diffElementNodes(\r\n\t\t\t\toldVNode._dom,\r\n\t\t\t\tnewVNode,\r\n\t\t\t\toldVNode,\r\n\t\t\t\tglobalContext,\r\n\t\t\t\tisSvg,\r\n\t\t\t\texcessDomChildren,\r\n\t\t\t\tcommitQueue,\r\n\t\t\t\tisHydrating\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\r\n\t} catch (e) {\r\n\t\tnewVNode._original = null;\r\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\r\n\t\tif (isHydrating || excessDomChildren != null) {\r\n\t\t\tnewVNode._dom = oldDom;\r\n\t\t\tnewVNode._hydrating = !!isHydrating;\r\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\r\n\t\t\t// ^ could possibly be simplified to:\r\n\t\t\t// excessDomChildren.length = 0;\r\n\t\t}\r\n\t\toptions._catchError(e, newVNode, oldVNode);\r\n\t}\r\n}\r\n\r\n/**\r\n * @param {Array<import('../internal').Component>} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {import('../internal').VNode} root\r\n */\r\nexport function commitRoot(commitQueue, root) {\r\n\tif (options._commit) options._commit(root, commitQueue);\r\n\r\n\tcommitQueue.some(c => {\r\n\t\ttry {\r\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\r\n\t\t\tcommitQueue = c._renderCallbacks;\r\n\t\t\tc._renderCallbacks = [];\r\n\t\t\tcommitQueue.some(cb => {\r\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\r\n\t\t\t\tcb.call(c);\r\n\t\t\t});\r\n\t\t} catch (e) {\r\n\t\t\toptions._catchError(e, c._vnode);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Diff two virtual nodes representing DOM element\r\n * @param {import('../internal').PreactElement} dom The DOM element representing\r\n * the virtual nodes being diffed\r\n * @param {import('../internal').VNode} newVNode The new virtual node\r\n * @param {import('../internal').VNode} oldVNode The old virtual node\r\n * @param {object} globalContext The current context object\r\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\r\n * @param {*} excessDomChildren\r\n * @param {Array<import('../internal').Component>} commitQueue List of components\r\n * which have callbacks to invoke in commitRoot\r\n * @param {boolean} isHydrating Whether or not we are in hydration\r\n * @returns {import('../internal').PreactElement}\r\n */\r\nfunction diffElementNodes(\r\n\tdom,\r\n\tnewVNode,\r\n\toldVNode,\r\n\tglobalContext,\r\n\tisSvg,\r\n\texcessDomChildren,\r\n\tcommitQueue,\r\n\tisHydrating\r\n) {\r\n\tlet oldProps = oldVNode.props;\r\n\tlet newProps = newVNode.props;\r\n\tlet nodeType = newVNode.type;\r\n\tlet i = 0;\r\n\r\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\r\n\tif (nodeType === 'svg') isSvg = true;\r\n\r\n\tif (excessDomChildren != null) {\r\n\t\tfor (; i < excessDomChildren.length; i++) {\r\n\t\t\tconst child = excessDomChildren[i];\r\n\r\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\r\n\t\t\t// argument matches an element in excessDomChildren, remove it from\r\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\r\n\t\t\tif (\r\n\t\t\t\tchild &&\r\n\t\t\t\t'setAttribute' in child === !!nodeType &&\r\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\r\n\t\t\t) {\r\n\t\t\t\tdom = child;\r\n\t\t\t\texcessDomChildren[i] = null;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (dom == null) {\r\n\t\tif (nodeType === null) {\r\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\r\n\t\t\treturn document.createTextNode(newProps);\r\n\t\t}\r\n\r\n\t\tif (isSvg) {\r\n\t\t\tdom = document.createElementNS(\r\n\t\t\t\t'http://www.w3.org/2000/svg',\r\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\r\n\t\t\t\tnodeType\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tdom = document.createElement(\r\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\r\n\t\t\t\tnodeType,\r\n\t\t\t\tnewProps.is && newProps\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// we created a new parent, so none of the previously attached children can be reused:\r\n\t\texcessDomChildren = null;\r\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\r\n\t\tisHydrating = false;\r\n\t}\r\n\r\n\tif (nodeType === null) {\r\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\r\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\r\n\t\t\tdom.data = newProps;\r\n\t\t}\r\n\t} else {\r\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\r\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\r\n\r\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\r\n\r\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\r\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\r\n\r\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\r\n\t\t// @TODO we should warn in debug mode when props don't match here.\r\n\t\tif (!isHydrating) {\r\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\r\n\t\t\t// we should read the existing DOM attributes to diff them\r\n\t\t\tif (excessDomChildren != null) {\r\n\t\t\t\toldProps = {};\r\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\r\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (newHtml || oldHtml) {\r\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\r\n\t\t\t\tif (\r\n\t\t\t\t\t!newHtml ||\r\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\r\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\r\n\t\t\t\t) {\r\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\r\n\r\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\r\n\t\tif (newHtml) {\r\n\t\t\tnewVNode._children = [];\r\n\t\t} else {\r\n\t\t\ti = newVNode.props.children;\r\n\t\t\tdiffChildren(\r\n\t\t\t\tdom,\r\n\t\t\t\tArray.isArray(i) ? i : [i],\r\n\t\t\t\tnewVNode,\r\n\t\t\t\toldVNode,\r\n\t\t\t\tglobalContext,\r\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\r\n\t\t\t\texcessDomChildren,\r\n\t\t\t\tcommitQueue,\r\n\t\t\t\texcessDomChildren\r\n\t\t\t\t\t? excessDomChildren[0]\r\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\r\n\t\t\t\tisHydrating\r\n\t\t\t);\r\n\r\n\t\t\t// Remove children that are not part of any vnode.\r\n\t\t\tif (excessDomChildren != null) {\r\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\r\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// (as above, don't diff props during hydration)\r\n\t\tif (!isHydrating) {\r\n\t\t\tif (\r\n\t\t\t\t'value' in newProps &&\r\n\t\t\t\t(i = newProps.value) !== undefined &&\r\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\r\n\t\t\t\t// despite the attribute not being present. When the attribute\r\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\r\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\r\n\t\t\t\t(i !== oldProps.value ||\r\n\t\t\t\t\ti !== dom.value ||\r\n\t\t\t\t\t(nodeType === 'progress' && !i))\r\n\t\t\t) {\r\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\t'checked' in newProps &&\r\n\t\t\t\t(i = newProps.checked) !== undefined &&\r\n\t\t\t\ti !== dom.checked\r\n\t\t\t) {\r\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn dom;\r\n}\r\n\r\n/**\r\n * Invoke or update a ref, depending on whether it is a function or object ref.\r\n * @param {object|function} ref\r\n * @param {any} value\r\n * @param {import('../internal').VNode} vnode\r\n */\r\nexport function applyRef(ref, value, vnode) {\r\n\ttry {\r\n\t\tif (typeof ref == 'function') ref(value);\r\n\t\telse ref.current = value;\r\n\t} catch (e) {\r\n\t\toptions._catchError(e, vnode);\r\n\t}\r\n}\r\n\r\n/**\r\n * Unmount a virtual node from the tree and apply DOM changes\r\n * @param {import('../internal').VNode} vnode The virtual node to unmount\r\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\r\n * initiated the unmount\r\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\r\n * current element is already detached from the DOM.\r\n */\r\nexport function unmount(vnode, parentVNode, skipRemove) {\r\n\tlet r;\r\n\tif (options.unmount) options.unmount(vnode);\r\n\r\n\tif ((r = vnode.ref)) {\r\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\r\n\t}\r\n\r\n\tif ((r = vnode._component) != null) {\r\n\t\tif (r.componentWillUnmount) {\r\n\t\t\ttry {\r\n\t\t\t\tr.componentWillUnmount();\r\n\t\t\t} catch (e) {\r\n\t\t\t\toptions._catchError(e, parentVNode);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tr.base = r._parentDom = null;\r\n\t}\r\n\r\n\tif ((r = vnode._children)) {\r\n\t\tfor (let i = 0; i < r.length; i++) {\r\n\t\t\tif (r[i]) {\r\n\t\t\t\tunmount(r[i], parentVNode, typeof vnode.type != 'function');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (!skipRemove && vnode._dom != null) removeNode(vnode._dom);\r\n\r\n\t// Must be set to `undefined` to properly clean up `_nextDom`\r\n\t// for which `null` is a valid value. See comment in `create-element.js`\r\n\tvnode._dom = vnode._nextDom = undefined;\r\n}\r\n\r\n/** The `.render()` method for a PFC backing instance. */\r\nfunction doRender(props, state, context) {\r\n\treturn this.constructor(props, context);\r\n}\r\n","import { EMPTY_OBJ } from './constants';\r\nimport { commitRoot, diff } from './diff/index';\r\nimport { createElement, Fragment } from './create-element';\r\nimport options from './options';\r\nimport { slice } from './util';\r\n\r\n/**\r\n * Render a Preact virtual node into a DOM element\r\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\r\n * @param {import('./internal').PreactElement} parentDom The DOM element to\r\n * render into\r\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\r\n * existing DOM tree rooted at `replaceNode`\r\n */\r\nexport function render(vnode, parentDom, replaceNode) {\r\n\tif (options._root) options._root(vnode, parentDom);\r\n\r\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\r\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\r\n\t// element..\r\n\tlet isHydrating = typeof replaceNode === 'function';\r\n\r\n\t// To be able to support calling `render()` multiple times on the same\r\n\t// DOM node, we need to obtain a reference to the previous tree. We do\r\n\t// this by assigning a new `_children` property to DOM nodes which points\r\n\t// to the last rendered tree. By default this property is not present, which\r\n\t// means that we are mounting a new tree for the first time.\r\n\tlet oldVNode = isHydrating\r\n\t\t? null\r\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\r\n\r\n\tvnode = (\r\n\t\t(!isHydrating && replaceNode) ||\r\n\t\tparentDom\r\n\t)._children = createElement(Fragment, null, [vnode]);\r\n\r\n\t// List of effects that need to be called after diffing.\r\n\tlet commitQueue = [];\r\n\tdiff(\r\n\t\tparentDom,\r\n\t\t// Determine the new vnode tree and store it on the DOM element on\r\n\t\t// our custom `_children` property.\r\n\t\tvnode,\r\n\t\toldVNode || EMPTY_OBJ,\r\n\t\tEMPTY_OBJ,\r\n\t\tparentDom.ownerSVGElement !== undefined,\r\n\t\t!isHydrating && replaceNode\r\n\t\t\t? [replaceNode]\r\n\t\t\t: oldVNode\r\n\t\t\t? null\r\n\t\t\t: parentDom.firstChild\r\n\t\t\t? slice.call(parentDom.childNodes)\r\n\t\t\t: null,\r\n\t\tcommitQueue,\r\n\t\t!isHydrating && replaceNode\r\n\t\t\t? replaceNode\r\n\t\t\t: oldVNode\r\n\t\t\t? oldVNode._dom\r\n\t\t\t: parentDom.firstChild,\r\n\t\tisHydrating\r\n\t);\r\n\r\n\t// Flush all queued effects\r\n\tcommitRoot(commitQueue, vnode);\r\n}\r\n\r\n/**\r\n * Update an existing DOM element with data from a Preact virtual node\r\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\r\n * @param {import('./internal').PreactElement} parentDom The DOM element to\r\n * update\r\n */\r\nexport function hydrate(vnode, parentDom) {\r\n\trender(vnode, parentDom, hydrate);\r\n}\r\n","import { assign, slice } from './util';\r\nimport { createVNode } from './create-element';\r\n\r\n/**\r\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\r\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\r\n * @param {object} props Attributes/props to add when cloning\r\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\r\n * @returns {import('./internal').VNode}\r\n */\r\nexport function cloneElement(vnode, props, children) {\r\n\tlet normalizedProps = assign({}, vnode.props),\r\n\t\tkey,\r\n\t\tref,\r\n\t\ti;\r\n\tfor (i in props) {\r\n\t\tif (i == 'key') key = props[i];\r\n\t\telse if (i == 'ref') ref = props[i];\r\n\t\telse normalizedProps[i] = props[i];\r\n\t}\r\n\r\n\tif (arguments.length > 2) {\r\n\t\tnormalizedProps.children =\r\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\r\n\t}\r\n\r\n\treturn createVNode(\r\n\t\tvnode.type,\r\n\t\tnormalizedProps,\r\n\t\tkey || vnode.key,\r\n\t\tref || vnode.ref,\r\n\t\tnull\r\n\t);\r\n}\r\n","/**\r\n * Find the closest error boundary to a thrown error and call it\r\n * @param {object} error The thrown value\r\n * @param {import('../internal').VNode} vnode The vnode that threw\r\n * the error that was caught (except for unmounting when this parameter\r\n * is the highest parent that was being unmounted)\r\n */\r\nexport function _catchError(error, vnode) {\r\n\t/** @type {import('../internal').Component} */\r\n\tlet component, ctor, handled;\r\n\r\n\tfor (; (vnode = vnode._parent); ) {\r\n\t\tif ((component = vnode._component) && !component._processingException) {\r\n\t\t\ttry {\r\n\t\t\t\tctor = component.constructor;\r\n\r\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\r\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\r\n\t\t\t\t\thandled = component._dirty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (component.componentDidCatch != null) {\r\n\t\t\t\t\tcomponent.componentDidCatch(error);\r\n\t\t\t\t\thandled = component._dirty;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\r\n\t\t\t\tif (handled) {\r\n\t\t\t\t\treturn (component._pendingError = component);\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\terror = e;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthrow error;\r\n}\r\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * 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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\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 _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\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 portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\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 = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return { prevParent: prevParent, nextParent: nextParent };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n }\n\n // Stop unnecessary renders if modal is remaining closed\n if (!prevProps.isOpen && !isOpen) return;\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\n \"div\",\n props,\n contentEl\n );\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\n \"div\",\n props,\n children\n );\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"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 _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\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\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName;\n\n // Remove classes.\n\n bodyOpenClassName && classList.remove(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName;\n\n // Add classes.\n\n bodyOpenClassName && classList.add(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \"<html /> (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object/;\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n return zeroSize ? style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0 : style.getPropertyValue(\"display\") == \"none\";\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.2\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.2',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY).replace(/\\s\\s*$/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","import { options, Fragment } from 'preact';\r\n\r\n/** @typedef {import('preact').VNode} VNode */\r\n\r\nlet vnodeId = 0;\r\n\r\n/**\r\n * @fileoverview\r\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\r\n * - jsx(type, props, key)\r\n * - jsxs(type, props, key)\r\n * - jsxDEV(type, props, key, __source, __self)\r\n *\r\n * The implementation of createVNode here is optimized for performance.\r\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\r\n */\r\n\r\n/**\r\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\r\n * @param {VNode['type']} type\r\n * @param {VNode['props']} props\r\n * @param {VNode['key']} [key]\r\n * @param {string} [__source]\r\n * @param {string} [__self]\r\n */\r\nfunction createVNode(type, props, key, __source, __self) {\r\n\t// We'll want to preserve `ref` in props to get rid of the need for\r\n\t// forwardRef components in the future, but that should happen via\r\n\t// a separate PR.\r\n\tlet normalizedProps = {},\r\n\t\tref,\r\n\t\ti;\r\n\tfor (i in props) {\r\n\t\tif (i == 'ref') {\r\n\t\t\tref = props[i];\r\n\t\t} else {\r\n\t\t\tnormalizedProps[i] = props[i];\r\n\t\t}\r\n\t}\r\n\r\n\tconst vnode = {\r\n\t\ttype,\r\n\t\tprops: normalizedProps,\r\n\t\tkey,\r\n\t\tref,\r\n\t\t_children: null,\r\n\t\t_parent: null,\r\n\t\t_depth: 0,\r\n\t\t_dom: null,\r\n\t\t_nextDom: undefined,\r\n\t\t_component: null,\r\n\t\t_hydrating: null,\r\n\t\tconstructor: undefined,\r\n\t\t_original: --vnodeId,\r\n\t\t__source,\r\n\t\t__self\r\n\t};\r\n\r\n\t// If a Component VNode, check for and apply defaultProps.\r\n\t// Note: `type` is often a String, and can be `undefined` in development.\r\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\r\n\t\tfor (i in ref)\r\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\r\n\t\t\t\tnormalizedProps[i] = ref[i];\r\n\t\t\t}\r\n\t}\r\n\r\n\tif (options.vnode) options.vnode(vnode);\r\n\treturn vnode;\r\n}\r\n\r\nexport {\r\n\tcreateVNode as jsx,\r\n\tcreateVNode as jsxs,\r\n\tcreateVNode as jsxDEV,\r\n\tFragment\r\n};\r\n","import react from 'react';\nimport reactDom from 'react-dom';\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction err(message) {\n const error = new Error(message); // In V8, Error objects keep the closure scope chain alive until the\n // err.stack property is accessed.\n\n if (error.stack === undefined) {\n // IE sets the stack only if error is thrown\n try {\n throw error;\n } catch (_) {} // eslint-disable-line fb-www/no-unused-catch-bindings, no-empty\n\n }\n\n return error;\n}\n\nvar err_1 = err;\n\n// @oss-only\n\n\nvar Recoil_err = err_1;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\n// Split declaration and implementation to allow this function to pretend to\n// check for actual instance of Promise instead of something with a `then`\n// method.\n// eslint-disable-next-line no-redeclare\nfunction isPromise(p) {\n return !!p && typeof p.then === 'function';\n}\n\nvar Recoil_isPromise = isPromise;\n\nfunction nullthrows(x, message) {\n if (x != null) {\n return x;\n }\n\n throw Recoil_err(message !== null && message !== void 0 ? message : 'Got unexpected null or undefined');\n}\n\nvar Recoil_nullthrows = nullthrows;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nclass BaseLoadable {\n getValue() {\n throw Recoil_err('BaseLoadable');\n }\n\n toPromise() {\n throw Recoil_err('BaseLoadable');\n }\n\n valueMaybe() {\n throw Recoil_err('BaseLoadable');\n }\n\n valueOrThrow() {\n // $FlowFixMe[prop-missing]\n throw Recoil_err(`Loadable expected value, but in \"${this.state}\" state`);\n }\n\n promiseMaybe() {\n throw Recoil_err('BaseLoadable');\n }\n\n promiseOrThrow() {\n // $FlowFixMe[prop-missing]\n throw Recoil_err(`Loadable expected promise, but in \"${this.state}\" state`);\n }\n\n errorMaybe() {\n throw Recoil_err('BaseLoadable');\n }\n\n errorOrThrow() {\n // $FlowFixMe[prop-missing]\n throw Recoil_err(`Loadable expected error, but in \"${this.state}\" state`);\n }\n\n is(other) {\n // $FlowFixMe[prop-missing]\n return other.state === this.state && other.contents === this.contents;\n }\n\n map(_map) {\n throw Recoil_err('BaseLoadable');\n }\n\n}\n\nclass ValueLoadable extends BaseLoadable {\n constructor(value) {\n super();\n\n _defineProperty(this, \"state\", 'hasValue');\n\n _defineProperty(this, \"contents\", void 0);\n\n this.contents = value;\n }\n\n getValue() {\n return this.contents;\n }\n\n toPromise() {\n return Promise.resolve(this.contents);\n }\n\n valueMaybe() {\n return this.contents;\n }\n\n valueOrThrow() {\n return this.contents;\n }\n\n promiseMaybe() {\n return undefined;\n }\n\n errorMaybe() {\n return undefined;\n }\n\n map(map) {\n try {\n const next = map(this.contents);\n return Recoil_isPromise(next) ? loadableWithPromise(next) : isLoadable(next) ? next : loadableWithValue(next);\n } catch (e) {\n return Recoil_isPromise(e) ? // If we \"suspended\", then try again.\n // errors and subsequent retries will be handled in 'loading' case\n loadableWithPromise(e.next(() => this.map(map))) : loadableWithError(e);\n }\n }\n\n}\n\nclass ErrorLoadable extends BaseLoadable {\n constructor(error) {\n super();\n\n _defineProperty(this, \"state\", 'hasError');\n\n _defineProperty(this, \"contents\", void 0);\n\n this.contents = error;\n }\n\n getValue() {\n throw this.contents;\n }\n\n toPromise() {\n return Promise.reject(this.contents);\n }\n\n valueMaybe() {\n return undefined;\n }\n\n promiseMaybe() {\n return undefined;\n }\n\n errorMaybe() {\n return this.contents;\n }\n\n errorOrThrow() {\n return this.contents;\n }\n\n map(_map) {\n // $FlowIssue[incompatible-return]\n return this;\n }\n\n}\n\nclass LoadingLoadable extends BaseLoadable {\n constructor(promise) {\n super();\n\n _defineProperty(this, \"state\", 'loading');\n\n _defineProperty(this, \"contents\", void 0);\n\n this.contents = promise;\n }\n\n getValue() {\n throw this.contents;\n }\n\n toPromise() {\n return this.contents;\n }\n\n valueMaybe() {\n return undefined;\n }\n\n promiseMaybe() {\n return this.contents;\n }\n\n promiseOrThrow() {\n return this.contents;\n }\n\n errorMaybe() {\n return undefined;\n }\n\n map(map) {\n return loadableWithPromise(this.contents.then(value => {\n const next = map(value);\n\n if (isLoadable(next)) {\n const nextLoadable = next;\n\n switch (nextLoadable.state) {\n case 'hasValue':\n return nextLoadable.contents;\n\n case 'hasError':\n throw nextLoadable.contents;\n\n case 'loading':\n return nextLoadable.contents;\n }\n } // $FlowIssue[incompatible-return]\n\n\n return next;\n }).catch(e => {\n if (Recoil_isPromise(e)) {\n // we were \"suspended,\" try again\n return e.then(() => this.map(map).contents);\n }\n\n throw e;\n }));\n }\n\n}\n\nfunction loadableWithValue(value) {\n return Object.freeze(new ValueLoadable(value));\n}\n\nfunction loadableWithError(error) {\n return Object.freeze(new ErrorLoadable(error));\n}\n\nfunction loadableWithPromise(promise) {\n return Object.freeze(new LoadingLoadable(promise));\n}\n\nfunction loadableLoading() {\n return Object.freeze(new LoadingLoadable(new Promise(() => {})));\n}\n\nfunction loadableAllArray(inputs) {\n return inputs.every(i => i.state === 'hasValue') ? loadableWithValue(inputs.map(i => i.contents)) : inputs.some(i => i.state === 'hasError') ? loadableWithError(Recoil_nullthrows(inputs.find(i => i.state === 'hasError'), 'Invalid loadable passed to loadableAll').contents) : loadableWithPromise(Promise.all(inputs.map(i => i.contents)));\n}\n\nfunction loadableAll(inputs) {\n const unwrapedInputs = Array.isArray(inputs) ? inputs : Object.getOwnPropertyNames(inputs).map(key => inputs[key]);\n const output = loadableAllArray(unwrapedInputs);\n return Array.isArray(inputs) ? // $FlowIssue[incompatible-return]\n output : // Object.getOwnPropertyNames() has consistent key ordering with ES6\n // $FlowIssue[incompatible-call]\n output.map(outputs => Object.getOwnPropertyNames(inputs).reduce((out, key, idx) => ({ ...out,\n [key]: outputs[idx]\n }), {}));\n}\n\nfunction isLoadable(x) {\n return x instanceof BaseLoadable;\n}\n\nconst LoadableStaticInterface = {\n of: value => Recoil_isPromise(value) ? loadableWithPromise(value) : loadableWithValue(value),\n error: error => loadableWithError(error),\n // $FlowIssue[unclear-type]\n all: loadableAll,\n isLoadable\n};\nvar Recoil_Loadable = {\n loadableWithValue,\n loadableWithError,\n loadableWithPromise,\n loadableLoading,\n loadableAll,\n isLoadable,\n RecoilLoadable: LoadableStaticInterface\n};\n\nvar Recoil_Loadable_1 = Recoil_Loadable.loadableWithValue;\nvar Recoil_Loadable_2 = Recoil_Loadable.loadableWithError;\nvar Recoil_Loadable_3 = Recoil_Loadable.loadableWithPromise;\nvar Recoil_Loadable_4 = Recoil_Loadable.loadableLoading;\nvar Recoil_Loadable_5 = Recoil_Loadable.loadableAll;\nvar Recoil_Loadable_6 = Recoil_Loadable.isLoadable;\nvar Recoil_Loadable_7 = Recoil_Loadable.RecoilLoadable;\n\nvar Recoil_Loadable$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n loadableWithValue: Recoil_Loadable_1,\n loadableWithError: Recoil_Loadable_2,\n loadableWithPromise: Recoil_Loadable_3,\n loadableLoading: Recoil_Loadable_4,\n loadableAll: Recoil_Loadable_5,\n isLoadable: Recoil_Loadable_6,\n RecoilLoadable: Recoil_Loadable_7\n});\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction sprintf(format, ...args) {\n let index = 0;\n return format.replace(/%s/g, () => String(args[index++]));\n}\n\nvar sprintf_1 = sprintf;\n\nfunction expectationViolation(format, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const message = sprintf_1.call(null, format, ...args);\n const error = new Error(message);\n error.name = 'Expectation Violation';\n console.error(error);\n }\n}\n\nvar expectationViolation_1 = expectationViolation;\n\n// @oss-only\n\n\nvar Recoil_expectationViolation = expectationViolation_1;\n\nvar _useMutableSource;\n\n // FIXME T2710559282599660\n\n\nconst useMutableSource = // flowlint-line unclear-type:off\n(_useMutableSource = react.useMutableSource) !== null && _useMutableSource !== void 0 ? _useMutableSource : react.unstable_useMutableSource; // flowlint-line unclear-type:off\n\nfunction mutableSourceExists() {\n return useMutableSource && !(typeof window !== 'undefined' && window.$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE);\n}\n\nvar Recoil_mutableSource = {\n mutableSourceExists,\n useMutableSource\n};\n\nconst {\n mutableSourceExists: mutableSourceExists$1\n} = Recoil_mutableSource;\n\nconst gks = new Map().set('recoil_hamt_2020', true).set('recoil_memory_managament_2020', true).set('recoil_suppress_rerender_in_callback', true);\n\nfunction Recoil_gkx(gk) {\n var _gks$get;\n\n if (gk === 'recoil_early_rendering_2021' && !mutableSourceExists$1()) {\n return false;\n }\n\n return (_gks$get = gks.get(gk)) !== null && _gks$get !== void 0 ? _gks$get : false;\n}\n\nRecoil_gkx.setPass = gk => {\n gks.set(gk, true);\n};\n\nRecoil_gkx.setFail = gk => {\n gks.set(gk, false);\n};\n\nvar Recoil_gkx_1 = Recoil_gkx; // @oss-only\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Creates a new iterable whose output is generated by passing the input\n * iterable's values through the mapper function.\n */\n\nfunction mapIterable(iterable, callback) {\n // Use generator to create iterable/iterator\n return function* () {\n let index = 0;\n\n for (const value of iterable) {\n yield callback(value, index++);\n }\n }();\n}\n\nvar Recoil_mapIterable = mapIterable;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction recoverableViolation(message, projectName, {\n error\n} = {}) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(message, error);\n }\n\n return null;\n}\n\nvar recoverableViolation_1 = recoverableViolation;\n\n// @oss-only\n\n\nvar Recoil_recoverableViolation = recoverableViolation_1;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\n// eslint-disable-next-line no-unused-vars\nclass AbstractRecoilValue {\n constructor(newKey) {\n _defineProperty(this, \"key\", void 0);\n\n this.key = newKey;\n }\n\n}\n\nclass RecoilState extends AbstractRecoilValue {}\n\nclass RecoilValueReadOnly extends AbstractRecoilValue {}\n\nfunction isRecoilValue(x) {\n return x instanceof RecoilState || x instanceof RecoilValueReadOnly;\n}\n\nvar Recoil_RecoilValue = {\n AbstractRecoilValue,\n RecoilState,\n RecoilValueReadOnly,\n isRecoilValue\n};\n\nvar Recoil_RecoilValue_1 = Recoil_RecoilValue.AbstractRecoilValue;\nvar Recoil_RecoilValue_2 = Recoil_RecoilValue.RecoilState;\nvar Recoil_RecoilValue_3 = Recoil_RecoilValue.RecoilValueReadOnly;\nvar Recoil_RecoilValue_4 = Recoil_RecoilValue.isRecoilValue;\n\nvar Recoil_RecoilValue$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n AbstractRecoilValue: Recoil_RecoilValue_1,\n RecoilState: Recoil_RecoilValue_2,\n RecoilValueReadOnly: Recoil_RecoilValue_3,\n isRecoilValue: Recoil_RecoilValue_4\n});\n\nclass DefaultValue {}\n\nconst DEFAULT_VALUE = new DefaultValue();\n\nclass RecoilValueNotReady extends Error {\n constructor(key) {\n super(`Tried to set the value of Recoil selector ${key} using an updater function, but it is an async selector in a pending or error state; this is not supported.`);\n }\n\n}\n\n// flowlint-next-line unclear-type:off\nconst nodes = new Map(); // flowlint-next-line unclear-type:off\n\nconst recoilValues = new Map();\n/* eslint-disable no-redeclare */\n\nfunction recoilValuesForKeys(keys) {\n return Recoil_mapIterable(keys, key => Recoil_nullthrows(recoilValues.get(key)));\n}\n\nfunction registerNode(node) {\n if (nodes.has(node.key)) {\n const message = `Duplicate atom key \"${node.key}\". This is a FATAL ERROR in\n production. But it is safe to ignore this warning if it occurred because of\n hot module replacement.`; // TODO Need to figure out if there is a standard/open-source equivalent to see if hot module replacement is happening:\n // prettier-ignore\n // @fb-only: if (__DEV__) {\n // @fb-only: const isAcceptingUpdate = require('__debug').isAcceptingUpdate;\n // prettier-ignore\n // @fb-only: if (typeof isAcceptingUpdate !== 'function' || !isAcceptingUpdate()) {\n // @fb-only: expectationViolation(message, 'recoil');\n // @fb-only: }\n // prettier-ignore\n // @fb-only: } else {\n // @fb-only: recoverableViolation(message, 'recoil');\n // @fb-only: }\n\n console.warn(message); // @oss-only\n }\n\n nodes.set(node.key, node);\n const recoilValue = node.set == null ? new Recoil_RecoilValue$1.RecoilValueReadOnly(node.key) : new Recoil_RecoilValue$1.RecoilState(node.key);\n recoilValues.set(node.key, recoilValue);\n return recoilValue;\n}\n/* eslint-enable no-redeclare */\n\n\nclass NodeMissingError extends Error {} // flowlint-next-line unclear-type:off\n\n\nfunction getNode(key) {\n const node = nodes.get(key);\n\n if (node == null) {\n throw new NodeMissingError(`Missing definition for RecoilValue: \"${key}\"\"`);\n }\n\n return node;\n} // flowlint-next-line unclear-type:off\n\n\nfunction getNodeMaybe(key) {\n return nodes.get(key);\n}\n\nconst configDeletionHandlers = new Map();\n\nfunction deleteNodeConfigIfPossible(key) {\n var _node$shouldDeleteCon;\n\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n const node = nodes.get(key);\n\n if (node === null || node === void 0 ? void 0 : (_node$shouldDeleteCon = node.shouldDeleteConfigOnRelease) === null || _node$shouldDeleteCon === void 0 ? void 0 : _node$shouldDeleteCon.call(node)) {\n var _getConfigDeletionHan;\n\n nodes.delete(key);\n (_getConfigDeletionHan = getConfigDeletionHandler(key)) === null || _getConfigDeletionHan === void 0 ? void 0 : _getConfigDeletionHan();\n configDeletionHandlers.delete(key);\n }\n}\n\nfunction setConfigDeletionHandler(key, fn) {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n if (fn === undefined) {\n configDeletionHandlers.delete(key);\n } else {\n configDeletionHandlers.set(key, fn);\n }\n}\n\nfunction getConfigDeletionHandler(key) {\n return configDeletionHandlers.get(key);\n}\n\nvar Recoil_Node = {\n nodes,\n recoilValues,\n registerNode,\n getNode,\n getNodeMaybe,\n deleteNodeConfigIfPossible,\n setConfigDeletionHandler,\n getConfigDeletionHandler,\n recoilValuesForKeys,\n NodeMissingError,\n DefaultValue,\n DEFAULT_VALUE,\n RecoilValueNotReady\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction enqueueExecution(s, f) {\n f();\n}\n\nvar Recoil_Queue = {\n enqueueExecution\n};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar hamt_1 = createCommonjsModule(function (module) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n/**\n @fileOverview Hash Array Mapped Trie.\n\n Code based on: https://github.com/exclipy/pdata\n*/\n\n\nvar hamt = {}; // export\n\n/* Configuration\n ******************************************************************************/\n\nvar SIZE = 5;\nvar BUCKET_SIZE = Math.pow(2, SIZE);\nvar MASK = BUCKET_SIZE - 1;\nvar MAX_INDEX_NODE = BUCKET_SIZE / 2;\nvar MIN_ARRAY_NODE = BUCKET_SIZE / 4;\n/*\n ******************************************************************************/\n\nvar nothing = {};\n\nvar constant = function constant(x) {\n return function () {\n return x;\n };\n};\n/**\n Get 32 bit hash of string.\n\n Based on:\n http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery\n*/\n\n\nvar hash = hamt.hash = function (str) {\n var type = typeof str === 'undefined' ? 'undefined' : _typeof(str);\n if (type === 'number') return str;\n if (type !== 'string') str += '';\n var hash = 0;\n\n for (var i = 0, len = str.length; i < len; ++i) {\n var c = str.charCodeAt(i);\n hash = (hash << 5) - hash + c | 0;\n }\n\n return hash;\n};\n/* Bit Ops\n ******************************************************************************/\n\n/**\n Hamming weight.\n\n Taken from: http://jsperf.com/hamming-weight\n*/\n\n\nvar popcount = function popcount(x) {\n x -= x >> 1 & 0x55555555;\n x = (x & 0x33333333) + (x >> 2 & 0x33333333);\n x = x + (x >> 4) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n};\n\nvar hashFragment = function hashFragment(shift, h) {\n return h >>> shift & MASK;\n};\n\nvar toBitmap = function toBitmap(x) {\n return 1 << x;\n};\n\nvar fromBitmap = function fromBitmap(bitmap, bit) {\n return popcount(bitmap & bit - 1);\n};\n/* Array Ops\n ******************************************************************************/\n\n/**\n Set a value in an array.\n\n @param mutate Should the input array be mutated?\n @param at Index to change.\n @param v New value\n @param arr Array.\n*/\n\n\nvar arrayUpdate = function arrayUpdate(mutate, at, v, arr) {\n var out = arr;\n\n if (!mutate) {\n var len = arr.length;\n out = new Array(len);\n\n for (var i = 0; i < len; ++i) {\n out[i] = arr[i];\n }\n }\n\n out[at] = v;\n return out;\n};\n/**\n Remove a value from an array.\n\n @param mutate Should the input array be mutated?\n @param at Index to remove.\n @param arr Array.\n*/\n\n\nvar arraySpliceOut = function arraySpliceOut(mutate, at, arr) {\n var newLen = arr.length - 1;\n var i = 0;\n var g = 0;\n var out = arr;\n\n if (mutate) {\n i = g = at;\n } else {\n out = new Array(newLen);\n\n while (i < at) {\n out[g++] = arr[i++];\n }\n }\n\n ++i;\n\n while (i <= newLen) {\n out[g++] = arr[i++];\n }\n\n if (mutate) {\n out.length = newLen;\n }\n\n return out;\n};\n/**\n Insert a value into an array.\n\n @param mutate Should the input array be mutated?\n @param at Index to insert at.\n @param v Value to insert,\n @param arr Array.\n*/\n\n\nvar arraySpliceIn = function arraySpliceIn(mutate, at, v, arr) {\n var len = arr.length;\n\n if (mutate) {\n var _i = len;\n\n while (_i >= at) {\n arr[_i--] = arr[_i];\n }\n\n arr[at] = v;\n return arr;\n }\n\n var i = 0,\n g = 0;\n var out = new Array(len + 1);\n\n while (i < at) {\n out[g++] = arr[i++];\n }\n\n out[at] = v;\n\n while (i < len) {\n out[++g] = arr[i++];\n }\n\n return out;\n};\n/* Node Structures\n ******************************************************************************/\n\n\nvar LEAF = 1;\nvar COLLISION = 2;\nvar INDEX = 3;\nvar ARRAY = 4;\n/**\n Empty node.\n*/\n\nvar empty = {\n __hamt_isEmpty: true\n};\n\nvar isEmptyNode = function isEmptyNode(x) {\n return x === empty || x && x.__hamt_isEmpty;\n};\n/**\n Leaf holding a value.\n\n @member edit Edit of the node.\n @member hash Hash of key.\n @member key Key.\n @member value Value stored.\n*/\n\n\nvar Leaf = function Leaf(edit, hash, key, value) {\n return {\n type: LEAF,\n edit: edit,\n hash: hash,\n key: key,\n value: value,\n _modify: Leaf__modify\n };\n};\n/**\n Leaf holding multiple values with the same hash but different keys.\n\n @member edit Edit of the node.\n @member hash Hash of key.\n @member children Array of collision children node.\n*/\n\n\nvar Collision = function Collision(edit, hash, children) {\n return {\n type: COLLISION,\n edit: edit,\n hash: hash,\n children: children,\n _modify: Collision__modify\n };\n};\n/**\n Internal node with a sparse set of children.\n\n Uses a bitmap and array to pack children.\n\n @member edit Edit of the node.\n @member mask Bitmap that encode the positions of children in the array.\n @member children Array of child nodes.\n*/\n\n\nvar IndexedNode = function IndexedNode(edit, mask, children) {\n return {\n type: INDEX,\n edit: edit,\n mask: mask,\n children: children,\n _modify: IndexedNode__modify\n };\n};\n/**\n Internal node with many children.\n\n @member edit Edit of the node.\n @member size Number of children.\n @member children Array of child nodes.\n*/\n\n\nvar ArrayNode = function ArrayNode(edit, size, children) {\n return {\n type: ARRAY,\n edit: edit,\n size: size,\n children: children,\n _modify: ArrayNode__modify\n };\n};\n/**\n Is `node` a leaf node?\n*/\n\n\nvar isLeaf = function isLeaf(node) {\n return node === empty || node.type === LEAF || node.type === COLLISION;\n};\n/* Internal node operations.\n ******************************************************************************/\n\n/**\n Expand an indexed node into an array node.\n\n @param edit Current edit.\n @param frag Index of added child.\n @param child Added child.\n @param mask Index node mask before child added.\n @param subNodes Index node children before child added.\n*/\n\n\nvar expand = function expand(edit, frag, child, bitmap, subNodes) {\n var arr = [];\n var bit = bitmap;\n var count = 0;\n\n for (var i = 0; bit; ++i) {\n if (bit & 1) arr[i] = subNodes[count++];\n bit >>>= 1;\n }\n\n arr[frag] = child;\n return ArrayNode(edit, count + 1, arr);\n};\n/**\n Collapse an array node into a indexed node.\n\n @param edit Current edit.\n @param count Number of elements in new array.\n @param removed Index of removed element.\n @param elements Array node children before remove.\n*/\n\n\nvar pack = function pack(edit, count, removed, elements) {\n var children = new Array(count - 1);\n var g = 0;\n var bitmap = 0;\n\n for (var i = 0, len = elements.length; i < len; ++i) {\n if (i !== removed) {\n var elem = elements[i];\n\n if (elem && !isEmptyNode(elem)) {\n children[g++] = elem;\n bitmap |= 1 << i;\n }\n }\n }\n\n return IndexedNode(edit, bitmap, children);\n};\n/**\n Merge two leaf nodes.\n\n @param shift Current shift.\n @param h1 Node 1 hash.\n @param n1 Node 1.\n @param h2 Node 2 hash.\n @param n2 Node 2.\n*/\n\n\nvar mergeLeaves = function mergeLeaves(edit, shift, h1, n1, h2, n2) {\n if (h1 === h2) return Collision(edit, h1, [n2, n1]);\n var subH1 = hashFragment(shift, h1);\n var subH2 = hashFragment(shift, h2);\n return IndexedNode(edit, toBitmap(subH1) | toBitmap(subH2), subH1 === subH2 ? [mergeLeaves(edit, shift + SIZE, h1, n1, h2, n2)] : subH1 < subH2 ? [n1, n2] : [n2, n1]);\n};\n/**\n Update an entry in a collision list.\n\n @param mutate Should mutation be used?\n @param edit Current edit.\n @param keyEq Key compare function.\n @param hash Hash of collision.\n @param list Collision list.\n @param f Update function.\n @param k Key to update.\n @param size Size ref.\n*/\n\n\nvar updateCollisionList = function updateCollisionList(mutate, edit, keyEq, h, list, f, k, size) {\n var len = list.length;\n\n for (var i = 0; i < len; ++i) {\n var child = list[i];\n\n if (keyEq(k, child.key)) {\n var value = child.value;\n\n var _newValue = f(value);\n\n if (_newValue === value) return list;\n\n if (_newValue === nothing) {\n --size.value;\n return arraySpliceOut(mutate, i, list);\n }\n\n return arrayUpdate(mutate, i, Leaf(edit, h, k, _newValue), list);\n }\n }\n\n var newValue = f();\n if (newValue === nothing) return list;\n ++size.value;\n return arrayUpdate(mutate, len, Leaf(edit, h, k, newValue), list);\n};\n\nvar canEditNode = function canEditNode(edit, node) {\n return edit === node.edit;\n};\n/* Editing\n ******************************************************************************/\n\n\nvar Leaf__modify = function Leaf__modify(edit, keyEq, shift, f, h, k, size) {\n if (keyEq(k, this.key)) {\n var _v = f(this.value);\n\n if (_v === this.value) return this;else if (_v === nothing) {\n --size.value;\n return empty;\n }\n\n if (canEditNode(edit, this)) {\n this.value = _v;\n return this;\n }\n\n return Leaf(edit, h, k, _v);\n }\n\n var v = f();\n if (v === nothing) return this;\n ++size.value;\n return mergeLeaves(edit, shift, this.hash, this, h, Leaf(edit, h, k, v));\n};\n\nvar Collision__modify = function Collision__modify(edit, keyEq, shift, f, h, k, size) {\n if (h === this.hash) {\n var canEdit = canEditNode(edit, this);\n var list = updateCollisionList(canEdit, edit, keyEq, this.hash, this.children, f, k, size);\n if (list === this.children) return this;\n return list.length > 1 ? Collision(edit, this.hash, list) : list[0]; // collapse single element collision list\n }\n\n var v = f();\n if (v === nothing) return this;\n ++size.value;\n return mergeLeaves(edit, shift, this.hash, this, h, Leaf(edit, h, k, v));\n};\n\nvar IndexedNode__modify = function IndexedNode__modify(edit, keyEq, shift, f, h, k, size) {\n var mask = this.mask;\n var children = this.children;\n var frag = hashFragment(shift, h);\n var bit = toBitmap(frag);\n var indx = fromBitmap(mask, bit);\n var exists = mask & bit;\n var current = exists ? children[indx] : empty;\n\n var child = current._modify(edit, keyEq, shift + SIZE, f, h, k, size);\n\n if (current === child) return this;\n var canEdit = canEditNode(edit, this);\n var bitmap = mask;\n var newChildren = void 0;\n\n if (exists && isEmptyNode(child)) {\n // remove\n bitmap &= ~bit;\n if (!bitmap) return empty;\n if (children.length <= 2 && isLeaf(children[indx ^ 1])) return children[indx ^ 1]; // collapse\n\n newChildren = arraySpliceOut(canEdit, indx, children);\n } else if (!exists && !isEmptyNode(child)) {\n // add\n if (children.length >= MAX_INDEX_NODE) return expand(edit, frag, child, mask, children);\n bitmap |= bit;\n newChildren = arraySpliceIn(canEdit, indx, child, children);\n } else {\n // modify\n newChildren = arrayUpdate(canEdit, indx, child, children);\n }\n\n if (canEdit) {\n this.mask = bitmap;\n this.children = newChildren;\n return this;\n }\n\n return IndexedNode(edit, bitmap, newChildren);\n};\n\nvar ArrayNode__modify = function ArrayNode__modify(edit, keyEq, shift, f, h, k, size) {\n var count = this.size;\n var children = this.children;\n var frag = hashFragment(shift, h);\n var child = children[frag];\n\n var newChild = (child || empty)._modify(edit, keyEq, shift + SIZE, f, h, k, size);\n\n if (child === newChild) return this;\n var canEdit = canEditNode(edit, this);\n var newChildren = void 0;\n\n if (isEmptyNode(child) && !isEmptyNode(newChild)) {\n // add\n ++count;\n newChildren = arrayUpdate(canEdit, frag, newChild, children);\n } else if (!isEmptyNode(child) && isEmptyNode(newChild)) {\n // remove\n --count;\n if (count <= MIN_ARRAY_NODE) return pack(edit, count, frag, children);\n newChildren = arrayUpdate(canEdit, frag, empty, children);\n } else {\n // modify\n newChildren = arrayUpdate(canEdit, frag, newChild, children);\n }\n\n if (canEdit) {\n this.size = count;\n this.children = newChildren;\n return this;\n }\n\n return ArrayNode(edit, count, newChildren);\n};\n\nempty._modify = function (edit, keyEq, shift, f, h, k, size) {\n var v = f();\n if (v === nothing) return empty;\n ++size.value;\n return Leaf(edit, h, k, v);\n};\n/*\n ******************************************************************************/\n\n\nfunction Map(editable, edit, config, root, size) {\n this._editable = editable;\n this._edit = edit;\n this._config = config;\n this._root = root;\n this._size = size;\n}\n\nMap.prototype.setTree = function (newRoot, newSize) {\n if (this._editable) {\n this._root = newRoot;\n this._size = newSize;\n return this;\n }\n\n return newRoot === this._root ? this : new Map(this._editable, this._edit, this._config, newRoot, newSize);\n};\n/* Queries\n ******************************************************************************/\n\n/**\n Lookup the value for `key` in `map` using a custom `hash`.\n\n Returns the value or `alt` if none.\n*/\n\n\nvar tryGetHash = hamt.tryGetHash = function (alt, hash, key, map) {\n var node = map._root;\n var shift = 0;\n var keyEq = map._config.keyEq;\n\n while (true) {\n switch (node.type) {\n case LEAF:\n {\n return keyEq(key, node.key) ? node.value : alt;\n }\n\n case COLLISION:\n {\n if (hash === node.hash) {\n var children = node.children;\n\n for (var i = 0, len = children.length; i < len; ++i) {\n var child = children[i];\n if (keyEq(key, child.key)) return child.value;\n }\n }\n\n return alt;\n }\n\n case INDEX:\n {\n var frag = hashFragment(shift, hash);\n var bit = toBitmap(frag);\n\n if (node.mask & bit) {\n node = node.children[fromBitmap(node.mask, bit)];\n shift += SIZE;\n break;\n }\n\n return alt;\n }\n\n case ARRAY:\n {\n node = node.children[hashFragment(shift, hash)];\n\n if (node) {\n shift += SIZE;\n break;\n }\n\n return alt;\n }\n\n default:\n return alt;\n }\n }\n};\n\nMap.prototype.tryGetHash = function (alt, hash, key) {\n return tryGetHash(alt, hash, key, this);\n};\n/**\n Lookup the value for `key` in `map` using internal hash function.\n\n @see `tryGetHash`\n*/\n\n\nvar tryGet = hamt.tryGet = function (alt, key, map) {\n return tryGetHash(alt, map._config.hash(key), key, map);\n};\n\nMap.prototype.tryGet = function (alt, key) {\n return tryGet(alt, key, this);\n};\n/**\n Lookup the value for `key` in `map` using a custom `hash`.\n\n Returns the value or `undefined` if none.\n*/\n\n\nvar getHash = hamt.getHash = function (hash, key, map) {\n return tryGetHash(undefined, hash, key, map);\n};\n\nMap.prototype.getHash = function (hash, key) {\n return getHash(hash, key, this);\n};\n/**\n Lookup the value for `key` in `map` using internal hash function.\n\n @see `get`\n*/\n\n\nvar get = hamt.get = function (key, map) {\n return tryGetHash(undefined, map._config.hash(key), key, map);\n};\n\nMap.prototype.get = function (key, alt) {\n return tryGet(alt, key, this);\n};\n/**\n Does an entry exist for `key` in `map`? Uses custom `hash`.\n*/\n\n\nvar hasHash = hamt.has = function (hash, key, map) {\n return tryGetHash(nothing, hash, key, map) !== nothing;\n};\n\nMap.prototype.hasHash = function (hash, key) {\n return hasHash(hash, key, this);\n};\n/**\n Does an entry exist for `key` in `map`? Uses internal hash function.\n*/\n\n\nvar has = hamt.has = function (key, map) {\n return hasHash(map._config.hash(key), key, map);\n};\n\nMap.prototype.has = function (key) {\n return has(key, this);\n};\n\nvar defKeyCompare = function defKeyCompare(x, y) {\n return x === y;\n};\n/**\n Create an empty map.\n\n @param config Configuration.\n*/\n\n\nhamt.make = function (config) {\n return new Map(0, 0, {\n keyEq: config && config.keyEq || defKeyCompare,\n hash: config && config.hash || hash\n }, empty, 0);\n};\n/**\n Empty map.\n*/\n\n\nhamt.empty = hamt.make();\n/**\n Does `map` contain any elements?\n*/\n\nvar isEmpty = hamt.isEmpty = function (map) {\n return map && !!isEmptyNode(map._root);\n};\n\nMap.prototype.isEmpty = function () {\n return isEmpty(this);\n};\n/* Updates\n ******************************************************************************/\n\n/**\n Alter the value stored for `key` in `map` using function `f` using\n custom hash.\n\n `f` is invoked with the current value for `k` if it exists,\n or no arguments if no such value exists. `modify` will always either\n update or insert a value into the map.\n\n Returns a map with the modified value. Does not alter `map`.\n*/\n\n\nvar modifyHash = hamt.modifyHash = function (f, hash, key, map) {\n var size = {\n value: map._size\n };\n\n var newRoot = map._root._modify(map._editable ? map._edit : NaN, map._config.keyEq, 0, f, hash, key, size);\n\n return map.setTree(newRoot, size.value);\n};\n\nMap.prototype.modifyHash = function (hash, key, f) {\n return modifyHash(f, hash, key, this);\n};\n/**\n Alter the value stored for `key` in `map` using function `f` using\n internal hash function.\n\n @see `modifyHash`\n*/\n\n\nvar modify = hamt.modify = function (f, key, map) {\n return modifyHash(f, map._config.hash(key), key, map);\n};\n\nMap.prototype.modify = function (key, f) {\n return modify(f, key, this);\n};\n/**\n Store `value` for `key` in `map` using custom `hash`.\n\n Returns a map with the modified value. Does not alter `map`.\n*/\n\n\nvar setHash = hamt.setHash = function (hash, key, value, map) {\n return modifyHash(constant(value), hash, key, map);\n};\n\nMap.prototype.setHash = function (hash, key, value) {\n return setHash(hash, key, value, this);\n};\n/**\n Store `value` for `key` in `map` using internal hash function.\n\n @see `setHash`\n*/\n\n\nvar set = hamt.set = function (key, value, map) {\n return setHash(map._config.hash(key), key, value, map);\n};\n\nMap.prototype.set = function (key, value) {\n return set(key, value, this);\n};\n/**\n Remove the entry for `key` in `map`.\n\n Returns a map with the value removed. Does not alter `map`.\n*/\n\n\nvar del = constant(nothing);\n\nvar removeHash = hamt.removeHash = function (hash, key, map) {\n return modifyHash(del, hash, key, map);\n};\n\nMap.prototype.removeHash = Map.prototype.deleteHash = function (hash, key) {\n return removeHash(hash, key, this);\n};\n/**\n Remove the entry for `key` in `map` using internal hash function.\n\n @see `removeHash`\n*/\n\n\nvar remove = hamt.remove = function (key, map) {\n return removeHash(map._config.hash(key), key, map);\n};\n\nMap.prototype.remove = Map.prototype.delete = function (key) {\n return remove(key, this);\n};\n/* Mutation\n ******************************************************************************/\n\n/**\n Mark `map` as mutable.\n */\n\n\nvar beginMutation = hamt.beginMutation = function (map) {\n return new Map(map._editable + 1, map._edit + 1, map._config, map._root, map._size);\n};\n\nMap.prototype.beginMutation = function () {\n return beginMutation(this);\n};\n/**\n Mark `map` as immutable.\n */\n\n\nvar endMutation = hamt.endMutation = function (map) {\n map._editable = map._editable && map._editable - 1;\n return map;\n};\n\nMap.prototype.endMutation = function () {\n return endMutation(this);\n};\n/**\n Mutate `map` within the context of `f`.\n @param f\n @param map HAMT\n*/\n\n\nvar mutate = hamt.mutate = function (f, map) {\n var transient = beginMutation(map);\n f(transient);\n return endMutation(transient);\n};\n\nMap.prototype.mutate = function (f) {\n return mutate(f, this);\n};\n/* Traversal\n ******************************************************************************/\n\n/**\n Apply a continuation.\n*/\n\n\nvar appk = function appk(k) {\n return k && lazyVisitChildren(k[0], k[1], k[2], k[3], k[4]);\n};\n/**\n Recursively visit all values stored in an array of nodes lazily.\n*/\n\n\nvar lazyVisitChildren = function lazyVisitChildren(len, children, i, f, k) {\n while (i < len) {\n var child = children[i++];\n if (child && !isEmptyNode(child)) return lazyVisit(child, f, [len, children, i, f, k]);\n }\n\n return appk(k);\n};\n/**\n Recursively visit all values stored in `node` lazily.\n*/\n\n\nvar lazyVisit = function lazyVisit(node, f, k) {\n switch (node.type) {\n case LEAF:\n return {\n value: f(node),\n rest: k\n };\n\n case COLLISION:\n case ARRAY:\n case INDEX:\n var children = node.children;\n return lazyVisitChildren(children.length, children, 0, f, k);\n\n default:\n return appk(k);\n }\n};\n\nvar DONE = {\n done: true\n};\n/**\n Javascript iterator over a map.\n*/\n\nfunction MapIterator(v) {\n this.v = v;\n}\n\nMapIterator.prototype.next = function () {\n if (!this.v) return DONE;\n var v0 = this.v;\n this.v = appk(v0.rest);\n return v0;\n};\n\nMapIterator.prototype[Symbol.iterator] = function () {\n return this;\n};\n/**\n Lazily visit each value in map with function `f`.\n*/\n\n\nvar visit = function visit(map, f) {\n return new MapIterator(lazyVisit(map._root, f));\n};\n/**\n Get a Javascsript iterator of `map`.\n\n Iterates over `[key, value]` arrays.\n*/\n\n\nvar buildPairs = function buildPairs(x) {\n return [x.key, x.value];\n};\n\nvar entries = hamt.entries = function (map) {\n return visit(map, buildPairs);\n};\n\nMap.prototype.entries = Map.prototype[Symbol.iterator] = function () {\n return entries(this);\n};\n/**\n Get array of all keys in `map`.\n\n Order is not guaranteed.\n*/\n\n\nvar buildKeys = function buildKeys(x) {\n return x.key;\n};\n\nvar keys = hamt.keys = function (map) {\n return visit(map, buildKeys);\n};\n\nMap.prototype.keys = function () {\n return keys(this);\n};\n/**\n Get array of all values in `map`.\n\n Order is not guaranteed, duplicates are preserved.\n*/\n\n\nvar buildValues = function buildValues(x) {\n return x.value;\n};\n\nvar values = hamt.values = Map.prototype.values = function (map) {\n return visit(map, buildValues);\n};\n\nMap.prototype.values = function () {\n return values(this);\n};\n/* Fold\n ******************************************************************************/\n\n/**\n Visit every entry in the map, aggregating data.\n\n Order of nodes is not guaranteed.\n\n @param f Function mapping accumulated value, value, and key to new value.\n @param z Starting value.\n @param m HAMT\n*/\n\n\nvar fold = hamt.fold = function (f, z, m) {\n var root = m._root;\n if (root.type === LEAF) return f(z, root.value, root.key);\n var toVisit = [root.children];\n var children = void 0;\n\n while (children = toVisit.pop()) {\n for (var i = 0, len = children.length; i < len;) {\n var child = children[i++];\n\n if (child && child.type) {\n if (child.type === LEAF) z = f(z, child.value, child.key);else toVisit.push(child.children);\n }\n }\n }\n\n return z;\n};\n\nMap.prototype.fold = function (f, z) {\n return fold(f, z, this);\n};\n/**\n Visit every entry in the map, aggregating data.\n\n Order of nodes is not guaranteed.\n\n @param f Function invoked with value and key\n @param map HAMT\n*/\n\n\nvar forEach = hamt.forEach = function (f, map) {\n return fold(function (_, value, key) {\n return f(value, key, map);\n }, null, map);\n};\n\nMap.prototype.forEach = function (f) {\n return forEach(f, this);\n};\n/* Aggregate\n ******************************************************************************/\n\n/**\n Get the number of entries in `map`.\n*/\n\n\nvar count = hamt.count = function (map) {\n return map._size;\n};\n\nMap.prototype.count = function () {\n return count(this);\n};\n\nObject.defineProperty(Map.prototype, 'size', {\n get: Map.prototype.count\n});\n/* Export\n ******************************************************************************/\n\nif ( module.exports) {\n module.exports = hamt;\n} else {\n undefined.hamt = hamt;\n}\n});\n\nclass BuiltInMap {\n constructor(existing) {\n _defineProperty(this, \"_map\", void 0);\n\n this._map = new Map(existing === null || existing === void 0 ? void 0 : existing.entries());\n }\n\n keys() {\n return this._map.keys();\n }\n\n entries() {\n return this._map.entries();\n }\n\n get(k) {\n return this._map.get(k);\n }\n\n has(k) {\n return this._map.has(k);\n }\n\n set(k, v) {\n this._map.set(k, v);\n\n return this;\n }\n\n delete(k) {\n this._map.delete(k);\n\n return this;\n }\n\n clone() {\n return persistentMap(this);\n }\n\n toMap() {\n return new Map(this._map);\n }\n\n}\n\nclass HashArrayMappedTrieMap {\n // Because hamt.empty is not a function there is no way to introduce type\n // parameters on it, so empty is typed as HAMTPlusMap<string, mixed>.\n // $FlowIssue\n constructor(existing) {\n _defineProperty(this, \"_hamt\", hamt_1.empty.beginMutation());\n\n if (existing instanceof HashArrayMappedTrieMap) {\n const h = existing._hamt.endMutation();\n\n existing._hamt = h.beginMutation();\n this._hamt = h.beginMutation();\n } else if (existing) {\n for (const [k, v] of existing.entries()) {\n this._hamt.set(k, v);\n }\n }\n }\n\n keys() {\n return this._hamt.keys();\n }\n\n entries() {\n return this._hamt.entries();\n }\n\n get(k) {\n return this._hamt.get(k);\n }\n\n has(k) {\n return this._hamt.has(k);\n }\n\n set(k, v) {\n this._hamt.set(k, v);\n\n return this;\n }\n\n delete(k) {\n this._hamt.delete(k);\n\n return this;\n }\n\n clone() {\n return persistentMap(this);\n }\n\n toMap() {\n return new Map(this._hamt);\n }\n\n}\n\nfunction persistentMap(existing) {\n if (Recoil_gkx_1('recoil_hamt_2020')) {\n return new HashArrayMappedTrieMap(existing);\n } else {\n return new BuiltInMap(existing);\n }\n}\n\nvar Recoil_PersistentMap = {\n persistentMap\n};\n\nvar Recoil_PersistentMap_1 = Recoil_PersistentMap.persistentMap;\n\nvar Recoil_PersistentMap$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n persistentMap: Recoil_PersistentMap_1\n});\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Returns a set containing all of the values from the first set that are not\n * present in any of the subsequent sets.\n *\n * Note: this is written procedurally (i.e., without filterSet) for performant\n * use in tight loops.\n */\n\nfunction differenceSets(set, ...setsWithValuesToRemove) {\n const ret = new Set();\n\n FIRST: for (const value of set) {\n for (const otherSet of setsWithValuesToRemove) {\n if (otherSet.has(value)) {\n continue FIRST;\n }\n }\n\n ret.add(value);\n }\n\n return ret;\n}\n\nvar Recoil_differenceSets = differenceSets;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Returns a new Map object with the same keys as the original, but with the\n * values replaced with the output of the given callback function.\n */\n\nfunction mapMap(map, callback) {\n const result = new Map();\n map.forEach((value, key) => {\n result.set(key, callback(value, key));\n });\n return result;\n}\n\nvar Recoil_mapMap = mapMap;\n\nfunction graph() {\n return {\n nodeDeps: new Map(),\n nodeToNodeSubscriptions: new Map()\n };\n}\n\nfunction cloneGraph(graph) {\n return {\n nodeDeps: Recoil_mapMap(graph.nodeDeps, s => new Set(s)),\n nodeToNodeSubscriptions: Recoil_mapMap(graph.nodeToNodeSubscriptions, s => new Set(s))\n };\n} // Note that this overwrites the deps of existing nodes, rather than unioning\n// the new deps with the old deps.\n\n\nfunction mergeDependencyMapIntoGraph(deps, graph, // If olderGraph is given then we will not overwrite changes made to the given\n// graph compared with olderGraph:\nolderGraph) {\n const {\n nodeDeps,\n nodeToNodeSubscriptions\n } = graph;\n deps.forEach((upstreams, downstream) => {\n const existingUpstreams = nodeDeps.get(downstream);\n\n if (existingUpstreams && olderGraph && existingUpstreams !== olderGraph.nodeDeps.get(downstream)) {\n return;\n } // Update nodeDeps:\n\n\n nodeDeps.set(downstream, new Set(upstreams)); // Add new deps to nodeToNodeSubscriptions:\n\n const addedUpstreams = existingUpstreams == null ? upstreams : Recoil_differenceSets(upstreams, existingUpstreams);\n addedUpstreams.forEach(upstream => {\n if (!nodeToNodeSubscriptions.has(upstream)) {\n nodeToNodeSubscriptions.set(upstream, new Set());\n }\n\n const existing = Recoil_nullthrows(nodeToNodeSubscriptions.get(upstream));\n existing.add(downstream);\n }); // Remove removed deps from nodeToNodeSubscriptions:\n\n if (existingUpstreams) {\n const removedUpstreams = Recoil_differenceSets(existingUpstreams, upstreams);\n removedUpstreams.forEach(upstream => {\n if (!nodeToNodeSubscriptions.has(upstream)) {\n return;\n }\n\n const existing = Recoil_nullthrows(nodeToNodeSubscriptions.get(upstream));\n existing.delete(downstream);\n\n if (existing.size === 0) {\n nodeToNodeSubscriptions.delete(upstream);\n }\n });\n }\n });\n}\n\nfunction saveDependencyMapToStore(dependencyMap, store, version) {\n var _storeState$nextTree, _storeState$previousT, _storeState$previousT2, _storeState$previousT3;\n\n const storeState = store.getState();\n\n if (!(version === storeState.currentTree.version || version === ((_storeState$nextTree = storeState.nextTree) === null || _storeState$nextTree === void 0 ? void 0 : _storeState$nextTree.version) || version === ((_storeState$previousT = storeState.previousTree) === null || _storeState$previousT === void 0 ? void 0 : _storeState$previousT.version))) {\n Recoil_recoverableViolation('Tried to save dependencies to a discarded tree');\n } // Merge the dependencies discovered into the store's dependency map\n // for the version that was read:\n\n\n const graph = store.getGraph(version);\n mergeDependencyMapIntoGraph(dependencyMap, graph); // If this version is not the latest version, also write these dependencies\n // into later versions if they don't already have their own:\n\n if (version === ((_storeState$previousT2 = storeState.previousTree) === null || _storeState$previousT2 === void 0 ? void 0 : _storeState$previousT2.version)) {\n const currentGraph = store.getGraph(storeState.currentTree.version);\n mergeDependencyMapIntoGraph(dependencyMap, currentGraph, graph);\n }\n\n if (version === ((_storeState$previousT3 = storeState.previousTree) === null || _storeState$previousT3 === void 0 ? void 0 : _storeState$previousT3.version) || version === storeState.currentTree.version) {\n var _storeState$nextTree2;\n\n const nextVersion = (_storeState$nextTree2 = storeState.nextTree) === null || _storeState$nextTree2 === void 0 ? void 0 : _storeState$nextTree2.version;\n\n if (nextVersion !== undefined) {\n const nextGraph = store.getGraph(nextVersion);\n mergeDependencyMapIntoGraph(dependencyMap, nextGraph, graph);\n }\n }\n}\n\nfunction mergeDepsIntoDependencyMap(from, into) {\n from.forEach((upstreamDeps, downstreamNode) => {\n if (!into.has(downstreamNode)) {\n into.set(downstreamNode, new Set());\n }\n\n const deps = Recoil_nullthrows(into.get(downstreamNode));\n upstreamDeps.forEach(dep => deps.add(dep));\n });\n}\n\nfunction addToDependencyMap(downstream, upstream, dependencyMap) {\n if (!dependencyMap.has(downstream)) {\n dependencyMap.set(downstream, new Set());\n }\n\n Recoil_nullthrows(dependencyMap.get(downstream)).add(upstream);\n}\n\nvar Recoil_Graph = {\n addToDependencyMap,\n cloneGraph,\n graph,\n mergeDepsIntoDependencyMap,\n saveDependencyMapToStore\n};\n\nconst {\n persistentMap: persistentMap$1\n} = Recoil_PersistentMap$1;\n\nconst {\n graph: graph$1\n} = Recoil_Graph;\n\nlet nextTreeStateVersion = 0;\n\nconst getNextTreeStateVersion = () => nextTreeStateVersion++;\n\nfunction makeEmptyTreeState() {\n const version = getNextTreeStateVersion();\n return {\n version,\n stateID: version,\n transactionMetadata: {},\n dirtyAtoms: new Set(),\n atomValues: persistentMap$1(),\n nonvalidatedAtoms: persistentMap$1()\n };\n}\n\nfunction makeEmptyStoreState() {\n const currentTree = makeEmptyTreeState();\n return {\n currentTree,\n nextTree: null,\n previousTree: null,\n commitDepth: 0,\n knownAtoms: new Set(),\n knownSelectors: new Set(),\n transactionSubscriptions: new Map(),\n nodeTransactionSubscriptions: new Map(),\n nodeToComponentSubscriptions: new Map(),\n queuedComponentCallbacks_DEPRECATED: [],\n suspendedComponentResolvers: new Set(),\n graphsByVersion: new Map().set(currentTree.version, graph$1()),\n versionsUsedByComponent: new Map(),\n retention: {\n referenceCounts: new Map(),\n nodesRetainedByZone: new Map(),\n retainablesToCheckForRelease: new Set()\n },\n nodeCleanupFunctions: new Map()\n };\n}\n\nvar Recoil_State = {\n makeEmptyTreeState,\n makeEmptyStoreState,\n getNextTreeStateVersion\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction unionSets(...sets) {\n const result = new Set();\n\n for (const set of sets) {\n for (const value of set) {\n result.add(value);\n }\n }\n\n return result;\n}\n\nvar Recoil_unionSets = unionSets;\n\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 * Utilities for working with built-in Maps and Sets without mutating them.\n *\n * @emails oncall+recoil\n * \n * @format\n */\n\nfunction setByAddingToSet(set, v) {\n const next = new Set(set);\n next.add(v);\n return next;\n}\n\nfunction setByDeletingFromSet(set, v) {\n const next = new Set(set);\n next.delete(v);\n return next;\n}\n\nfunction mapBySettingInMap(map, k, v) {\n const next = new Map(map);\n next.set(k, v);\n return next;\n}\n\nfunction mapByUpdatingInMap(map, k, updater) {\n const next = new Map(map);\n next.set(k, updater(next.get(k)));\n return next;\n}\n\nfunction mapByDeletingFromMap(map, k) {\n const next = new Map(map);\n next.delete(k);\n return next;\n}\n\nfunction mapByDeletingMultipleFromMap(map, ks) {\n const next = new Map(map);\n ks.forEach(k => next.delete(k));\n return next;\n}\n\nvar Recoil_CopyOnWrite = {\n setByAddingToSet,\n setByDeletingFromSet,\n mapBySettingInMap,\n mapByUpdatingInMap,\n mapByDeletingFromMap,\n mapByDeletingMultipleFromMap\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Creates a new iterable whose output is generated by passing the input\n * iterable's values through the filter function.\n */\n\nfunction* filterIterable(iterable, predicate) {\n // Use generator to create iterable/iterator\n let index = 0;\n\n for (const value of iterable) {\n if (predicate(value, index++)) {\n yield value;\n }\n }\n}\n\nvar Recoil_filterIterable = filterIterable;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nclass RetentionZone {}\n\nfunction retentionZone() {\n return new RetentionZone();\n}\n\nvar Recoil_RetentionZone = {\n RetentionZone,\n retentionZone\n};\n\nconst {\n setByAddingToSet: setByAddingToSet$1\n} = Recoil_CopyOnWrite;\n\n\n\n\n\n\n\nconst {\n getNode: getNode$1,\n getNodeMaybe: getNodeMaybe$1,\n recoilValuesForKeys: recoilValuesForKeys$1\n} = Recoil_Node;\n\nconst {\n RetentionZone: RetentionZone$1\n} = Recoil_RetentionZone; // flowlint-next-line unclear-type:off\n\n\nconst emptySet = Object.freeze(new Set());\n\nclass ReadOnlyRecoilValueError extends Error {}\n\nfunction initializeRetentionForNode(store, nodeKey, retainedBy) {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return () => undefined;\n }\n\n const {\n nodesRetainedByZone\n } = store.getState().retention;\n\n function addToZone(zone) {\n let set = nodesRetainedByZone.get(zone);\n\n if (!set) {\n nodesRetainedByZone.set(zone, set = new Set());\n }\n\n set.add(nodeKey);\n }\n\n if (retainedBy instanceof RetentionZone$1) {\n addToZone(retainedBy);\n } else if (Array.isArray(retainedBy)) {\n for (const zone of retainedBy) {\n addToZone(zone);\n }\n }\n\n return () => {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n const nodesRetainedByZone = store.getState().retention.nodesRetainedByZone;\n\n function deleteFromZone(zone) {\n const set = nodesRetainedByZone.get(zone);\n\n if (set) {\n set.delete(nodeKey);\n }\n\n if (set && set.size === 0) {\n nodesRetainedByZone.delete(zone);\n }\n }\n\n if (retainedBy instanceof RetentionZone$1) {\n deleteFromZone(retainedBy);\n } else if (Array.isArray(retainedBy)) {\n for (const zone of retainedBy) {\n deleteFromZone(zone);\n }\n }\n };\n}\n\nfunction initializeNodeIfNewToStore(store, treeState, key, trigger) {\n const storeState = store.getState();\n\n if (storeState.nodeCleanupFunctions.has(key)) {\n return;\n }\n\n const config = getNode$1(key);\n const retentionCleanup = initializeRetentionForNode(store, key, config.retainedBy);\n const nodeCleanup = config.init(store, treeState, trigger);\n storeState.nodeCleanupFunctions.set(key, () => {\n nodeCleanup();\n retentionCleanup();\n });\n}\n\nfunction cleanUpNode(store, key) {\n var _state$nodeCleanupFun;\n\n const state = store.getState();\n (_state$nodeCleanupFun = state.nodeCleanupFunctions.get(key)) === null || _state$nodeCleanupFun === void 0 ? void 0 : _state$nodeCleanupFun();\n state.nodeCleanupFunctions.delete(key);\n} // Get the current value loadable of a node and update the state.\n// Update dependencies and subscriptions for selectors.\n// Update saved value validation for atoms.\n\n\nfunction getNodeLoadable(store, state, key) {\n initializeNodeIfNewToStore(store, state, key, 'get');\n return getNode$1(key).get(store, state);\n} // Peek at the current value loadable for a node without any evaluation or state change\n\n\nfunction peekNodeLoadable(store, state, key) {\n return getNode$1(key).peek(store, state);\n} // Write value directly to state bypassing the Node interface as the node\n// definitions may not have been loaded yet when processing the initial snapshot.\n\n\nfunction setUnvalidatedAtomValue_DEPRECATED(state, key, newValue) {\n var _node$invalidate;\n\n const node = getNodeMaybe$1(key);\n node === null || node === void 0 ? void 0 : (_node$invalidate = node.invalidate) === null || _node$invalidate === void 0 ? void 0 : _node$invalidate.call(node, state);\n return { ...state,\n atomValues: state.atomValues.clone().delete(key),\n nonvalidatedAtoms: state.nonvalidatedAtoms.clone().set(key, newValue),\n dirtyAtoms: setByAddingToSet$1(state.dirtyAtoms, key)\n };\n} // Return the discovered dependencies and values to be written by setting\n// a node value. (Multiple values may be written due to selectors getting to\n// set upstreams; deps may be discovered because of reads in updater functions.)\n\n\nfunction setNodeValue(store, state, key, newValue) {\n const node = getNode$1(key);\n\n if (node.set == null) {\n throw new ReadOnlyRecoilValueError(`Attempt to set read-only RecoilValue: ${key}`);\n }\n\n const set = node.set; // so flow doesn't lose the above refinement.\n\n initializeNodeIfNewToStore(store, state, key, 'set');\n return set(store, state, newValue);\n}\n\nfunction peekNodeInfo(store, state, key) {\n var _graph$nodeDeps$get, _storeState$nodeToCom, _storeState$nodeToCom2;\n\n const storeState = store.getState();\n const graph = store.getGraph(state.version);\n const type = storeState.knownAtoms.has(key) ? 'atom' : storeState.knownSelectors.has(key) ? 'selector' : undefined;\n const downstreamNodes = Recoil_filterIterable(getDownstreamNodes(store, state, new Set([key])), nodeKey => nodeKey !== key);\n return {\n loadable: peekNodeLoadable(store, state, key),\n isActive: storeState.knownAtoms.has(key) || storeState.knownSelectors.has(key),\n isSet: type === 'selector' ? false : state.atomValues.has(key),\n isModified: state.dirtyAtoms.has(key),\n type,\n // Report current dependencies. If the node hasn't been evaluated, then\n // dependencies may be missing based on the current state.\n deps: recoilValuesForKeys$1((_graph$nodeDeps$get = graph.nodeDeps.get(key)) !== null && _graph$nodeDeps$get !== void 0 ? _graph$nodeDeps$get : []),\n // Reportsall \"current\" subscribers. Evaluating other nodes or\n // previous in-progress async evaluations may introduce new subscribers.\n subscribers: {\n nodes: recoilValuesForKeys$1(downstreamNodes),\n components: Recoil_mapIterable((_storeState$nodeToCom = (_storeState$nodeToCom2 = storeState.nodeToComponentSubscriptions.get(key)) === null || _storeState$nodeToCom2 === void 0 ? void 0 : _storeState$nodeToCom2.values()) !== null && _storeState$nodeToCom !== void 0 ? _storeState$nodeToCom : [], ([name]) => ({\n name\n }))\n }\n };\n} // Find all of the recursively dependent nodes\n\n\nfunction getDownstreamNodes(store, state, keys) {\n const visitedNodes = new Set();\n const visitingNodes = Array.from(keys);\n const graph = store.getGraph(state.version);\n\n for (let key = visitingNodes.pop(); key; key = visitingNodes.pop()) {\n var _graph$nodeToNodeSubs;\n\n visitedNodes.add(key);\n const subscribedNodes = (_graph$nodeToNodeSubs = graph.nodeToNodeSubscriptions.get(key)) !== null && _graph$nodeToNodeSubs !== void 0 ? _graph$nodeToNodeSubs : emptySet;\n\n for (const downstreamNode of subscribedNodes) {\n if (!visitedNodes.has(downstreamNode)) {\n visitingNodes.push(downstreamNode);\n }\n }\n }\n\n return visitedNodes;\n}\n\nvar Recoil_FunctionalCore = {\n getNodeLoadable,\n peekNodeLoadable,\n setNodeValue,\n cleanUpNode,\n setUnvalidatedAtomValue_DEPRECATED,\n peekNodeInfo,\n getDownstreamNodes,\n initializeNodeIfNewToStore\n};\n\nconst {\n getDownstreamNodes: getDownstreamNodes$1,\n getNodeLoadable: getNodeLoadable$1,\n setNodeValue: setNodeValue$1\n} = Recoil_FunctionalCore;\n\nconst {\n getNodeMaybe: getNodeMaybe$2\n} = Recoil_Node;\n\nconst {\n DefaultValue: DefaultValue$1,\n RecoilValueNotReady: RecoilValueNotReady$1\n} = Recoil_Node;\n\nconst {\n AbstractRecoilValue: AbstractRecoilValue$1,\n RecoilState: RecoilState$1,\n RecoilValueReadOnly: RecoilValueReadOnly$1,\n isRecoilValue: isRecoilValue$1\n} = Recoil_RecoilValue$1;\n\nfunction getRecoilValueAsLoadable(store, {\n key\n}, treeState = store.getState().currentTree) {\n var _storeState$nextTree, _storeState$previousT;\n\n // Reading from an older tree can cause bugs because the dependencies that we\n // discover during the read are lost.\n const storeState = store.getState();\n\n if (!(treeState.version === storeState.currentTree.version || treeState.version === ((_storeState$nextTree = storeState.nextTree) === null || _storeState$nextTree === void 0 ? void 0 : _storeState$nextTree.version) || treeState.version === ((_storeState$previousT = storeState.previousTree) === null || _storeState$previousT === void 0 ? void 0 : _storeState$previousT.version))) {\n Recoil_recoverableViolation('Tried to read from a discarded tree');\n }\n\n const loadable = getNodeLoadable$1(store, treeState, key);\n\n if (loadable.state === 'loading') {\n loadable.contents.catch(() => {\n /**\n * HACK: intercept thrown error here to prevent an uncaught promise exception. Ideally this would happen closer to selector\n * execution (perhaps introducing a new ERROR class to be resolved by async selectors that are in an error state)\n */\n return;\n });\n }\n\n return loadable;\n}\n\nfunction applyAtomValueWrites(atomValues, writes) {\n const result = atomValues.clone();\n writes.forEach((v, k) => {\n if (v.state === 'hasValue' && v.contents instanceof DefaultValue$1) {\n result.delete(k);\n } else {\n result.set(k, v);\n }\n });\n return result;\n}\n\nfunction valueFromValueOrUpdater(store, state, {\n key\n}, valueOrUpdater) {\n if (typeof valueOrUpdater === 'function') {\n // Updater form: pass in the current value. Throw if the current value\n // is unavailable (namely when updating an async selector that's\n // pending or errored):\n const current = getNodeLoadable$1(store, state, key);\n\n if (current.state === 'loading') {\n throw new RecoilValueNotReady$1(key);\n } else if (current.state === 'hasError') {\n throw current.contents;\n } // T itself may be a function, so our refinement is not sufficient:\n\n\n return valueOrUpdater(current.contents); // flowlint-line unclear-type:off\n } else {\n return valueOrUpdater;\n }\n}\n\nfunction applyAction(store, state, action) {\n if (action.type === 'set') {\n const {\n recoilValue,\n valueOrUpdater\n } = action;\n const newValue = valueFromValueOrUpdater(store, state, recoilValue, valueOrUpdater);\n const writes = setNodeValue$1(store, state, recoilValue.key, newValue);\n\n for (const [key, loadable] of writes.entries()) {\n writeLoadableToTreeState(state, key, loadable);\n }\n } else if (action.type === 'setLoadable') {\n const {\n recoilValue: {\n key\n },\n loadable\n } = action;\n writeLoadableToTreeState(state, key, loadable);\n } else if (action.type === 'markModified') {\n const {\n recoilValue: {\n key\n }\n } = action;\n state.dirtyAtoms.add(key);\n } else if (action.type === 'setUnvalidated') {\n var _node$invalidate;\n\n // Write value directly to state bypassing the Node interface as the node\n // definitions may not have been loaded yet when processing the initial snapshot.\n const {\n recoilValue: {\n key\n },\n unvalidatedValue\n } = action;\n const node = getNodeMaybe$2(key);\n node === null || node === void 0 ? void 0 : (_node$invalidate = node.invalidate) === null || _node$invalidate === void 0 ? void 0 : _node$invalidate.call(node, state);\n state.atomValues.delete(key);\n state.nonvalidatedAtoms.set(key, unvalidatedValue);\n state.dirtyAtoms.add(key);\n } else {\n Recoil_recoverableViolation(`Unknown action ${action.type}`);\n }\n}\n\nfunction writeLoadableToTreeState(state, key, loadable) {\n if (loadable.state === 'hasValue' && loadable.contents instanceof DefaultValue$1) {\n state.atomValues.delete(key);\n } else {\n state.atomValues.set(key, loadable);\n }\n\n state.dirtyAtoms.add(key);\n state.nonvalidatedAtoms.delete(key);\n}\n\nfunction applyActionsToStore(store, actions) {\n store.replaceState(state => {\n const newState = copyTreeState(state);\n\n for (const action of actions) {\n applyAction(store, newState, action);\n }\n\n invalidateDownstreams(store, newState);\n return newState;\n });\n}\n\nfunction queueOrPerformStateUpdate(store, action) {\n if (batchStack.length) {\n const actionsByStore = batchStack[batchStack.length - 1];\n let actions = actionsByStore.get(store);\n\n if (!actions) {\n actionsByStore.set(store, actions = []);\n }\n\n actions.push(action);\n } else {\n applyActionsToStore(store, [action]);\n }\n}\n\nconst batchStack = [];\n\nfunction batchStart() {\n const actionsByStore = new Map();\n batchStack.push(actionsByStore);\n return () => {\n for (const [store, actions] of actionsByStore) {\n applyActionsToStore(store, actions);\n }\n\n const popped = batchStack.pop();\n\n if (popped !== actionsByStore) {\n Recoil_recoverableViolation('Incorrect order of batch popping');\n }\n };\n}\n\nfunction copyTreeState(state) {\n return { ...state,\n atomValues: state.atomValues.clone(),\n nonvalidatedAtoms: state.nonvalidatedAtoms.clone(),\n dirtyAtoms: new Set(state.dirtyAtoms)\n };\n}\n\nfunction invalidateDownstreams(store, state) {\n // Inform any nodes that were changed or downstream of changes so that they\n // can clear out any caches as needed due to the update:\n const downstreams = getDownstreamNodes$1(store, state, state.dirtyAtoms);\n\n for (const key of downstreams) {\n var _getNodeMaybe, _getNodeMaybe$invalid;\n\n (_getNodeMaybe = getNodeMaybe$2(key)) === null || _getNodeMaybe === void 0 ? void 0 : (_getNodeMaybe$invalid = _getNodeMaybe.invalidate) === null || _getNodeMaybe$invalid === void 0 ? void 0 : _getNodeMaybe$invalid.call(_getNodeMaybe, state);\n }\n}\n\nfunction setRecoilValue(store, recoilValue, valueOrUpdater) {\n queueOrPerformStateUpdate(store, {\n type: 'set',\n recoilValue,\n valueOrUpdater\n });\n}\n\nfunction setRecoilValueLoadable(store, recoilValue, loadable) {\n if (loadable instanceof DefaultValue$1) {\n return setRecoilValue(store, recoilValue, loadable);\n }\n\n queueOrPerformStateUpdate(store, {\n type: 'setLoadable',\n recoilValue,\n loadable: loadable\n });\n}\n\nfunction markRecoilValueModified(store, recoilValue) {\n queueOrPerformStateUpdate(store, {\n type: 'markModified',\n recoilValue\n });\n}\n\nfunction setUnvalidatedRecoilValue(store, recoilValue, unvalidatedValue) {\n queueOrPerformStateUpdate(store, {\n type: 'setUnvalidated',\n recoilValue,\n unvalidatedValue\n });\n}\n\nlet subscriptionID = 0;\n\nfunction subscribeToRecoilValue(store, {\n key\n}, callback, componentDebugName = null) {\n const subID = subscriptionID++;\n const storeState = store.getState();\n\n if (!storeState.nodeToComponentSubscriptions.has(key)) {\n storeState.nodeToComponentSubscriptions.set(key, new Map());\n }\n\n Recoil_nullthrows(storeState.nodeToComponentSubscriptions.get(key)).set(subID, [componentDebugName !== null && componentDebugName !== void 0 ? componentDebugName : '<not captured>', callback]); // Handle the case that, during the same tick that we are subscribing, an atom\n // has been updated by some effect handler. Otherwise we will miss the update.\n\n if (Recoil_gkx_1('recoil_early_rendering_2021')) {\n const nextTree = store.getState().nextTree;\n\n if (nextTree && nextTree.dirtyAtoms.has(key)) {\n callback(nextTree);\n }\n }\n\n return {\n release: () => {\n const storeState = store.getState();\n const subs = storeState.nodeToComponentSubscriptions.get(key);\n\n if (subs === undefined || !subs.has(subID)) {\n Recoil_recoverableViolation(`Subscription missing at release time for atom ${key}. This is a bug in Recoil.`);\n return;\n }\n\n subs.delete(subID);\n\n if (subs.size === 0) {\n storeState.nodeToComponentSubscriptions.delete(key);\n }\n }\n };\n}\n\nvar Recoil_RecoilValueInterface = {\n RecoilValueReadOnly: RecoilValueReadOnly$1,\n AbstractRecoilValue: AbstractRecoilValue$1,\n RecoilState: RecoilState$1,\n getRecoilValueAsLoadable,\n setRecoilValue,\n setRecoilValueLoadable,\n markRecoilValueModified,\n setUnvalidatedRecoilValue,\n subscribeToRecoilValue,\n isRecoilValue: isRecoilValue$1,\n applyAtomValueWrites,\n // TODO Remove export when deprecating initialStoreState_DEPRECATED in RecoilRoot\n batchStart,\n writeLoadableToTreeState,\n invalidateDownstreams,\n copyTreeState,\n invalidateDownstreams_FOR_TESTING: invalidateDownstreams\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * The someSet() method tests whether some elements in the given Set pass the\n * test implemented by the provided function.\n */\n\nfunction someSet(set, callback, context) {\n const iterator = set.entries();\n let current = iterator.next();\n\n while (!current.done) {\n const entry = current.value;\n\n if (callback.call(context, entry[1], entry[0], set)) {\n return true;\n }\n\n current = iterator.next();\n }\n\n return false;\n}\n\nvar Recoil_someSet = someSet;\n\nconst {\n cleanUpNode: cleanUpNode$1\n} = Recoil_FunctionalCore;\n\nconst {\n deleteNodeConfigIfPossible: deleteNodeConfigIfPossible$1,\n getNode: getNode$2\n} = Recoil_Node;\n\nconst {\n RetentionZone: RetentionZone$2\n} = Recoil_RetentionZone; // Components that aren't mounted after suspending for this long will be assumed\n// to be discarded and their resources released.\n\n\nconst SUSPENSE_TIMEOUT_MS = 120000;\nconst emptySet$1 = new Set();\n\nfunction releaseRetainablesNowOnCurrentTree(store, retainables) {\n const storeState = store.getState();\n const treeState = storeState.currentTree;\n\n if (storeState.nextTree) {\n Recoil_recoverableViolation('releaseNodesNowOnCurrentTree should only be called at the end of a batch');\n return; // leak memory rather than erase something that's about to be used.\n }\n\n const nodes = new Set();\n\n for (const r of retainables) {\n if (r instanceof RetentionZone$2) {\n for (const n of nodesRetainedByZone(storeState, r)) {\n nodes.add(n);\n }\n } else {\n nodes.add(r);\n }\n }\n\n const releasableNodes = findReleasableNodes(store, nodes);\n\n for (const node of releasableNodes) {\n releaseNode(store, treeState, node);\n }\n}\n\nfunction findReleasableNodes(store, searchFromNodes) {\n const storeState = store.getState();\n const treeState = storeState.currentTree;\n const graph = store.getGraph(treeState.version);\n const releasableNodes = new Set(); // mutated to collect answer\n\n const nonReleasableNodes = new Set();\n findReleasableNodesInner(searchFromNodes);\n return releasableNodes;\n\n function findReleasableNodesInner(searchFromNodes) {\n const releasableNodesFoundThisIteration = new Set();\n const downstreams = getDownstreamNodesInTopologicalOrder(store, treeState, searchFromNodes, releasableNodes, // don't descend into these\n nonReleasableNodes // don't descend into these\n ); // Find which of the downstream nodes are releasable and which are not:\n\n for (const node of downstreams) {\n var _storeState$retention;\n\n // Not releasable if configured to be retained forever:\n if (getNode$2(node).retainedBy === 'recoilRoot') {\n nonReleasableNodes.add(node);\n continue;\n } // Not releasable if retained directly by a component:\n\n\n if (((_storeState$retention = storeState.retention.referenceCounts.get(node)) !== null && _storeState$retention !== void 0 ? _storeState$retention : 0) > 0) {\n nonReleasableNodes.add(node);\n continue;\n } // Not releasable if retained by a zone:\n\n\n if (zonesThatCouldRetainNode(node).some(z => storeState.retention.referenceCounts.get(z))) {\n nonReleasableNodes.add(node);\n continue;\n } // Not releasable if it has a non-releasable child (which will already be in\n // nonReleasableNodes because we are going in topological order):\n\n\n const nodeChildren = graph.nodeToNodeSubscriptions.get(node);\n\n if (nodeChildren && Recoil_someSet(nodeChildren, child => nonReleasableNodes.has(child))) {\n nonReleasableNodes.add(node);\n continue;\n }\n\n releasableNodes.add(node);\n releasableNodesFoundThisIteration.add(node);\n } // If we found any releasable nodes, we need to walk UP from those nodes to\n // find whether their parents can now be released as well:\n\n\n const parents = new Set();\n\n for (const node of releasableNodesFoundThisIteration) {\n for (const parent of (_graph$nodeDeps$get = graph.nodeDeps.get(node)) !== null && _graph$nodeDeps$get !== void 0 ? _graph$nodeDeps$get : emptySet$1) {\n var _graph$nodeDeps$get;\n\n if (!releasableNodes.has(parent)) {\n parents.add(parent);\n }\n }\n }\n\n if (parents.size) {\n findReleasableNodesInner(parents);\n }\n }\n} // Children before parents\n\n\nfunction getDownstreamNodesInTopologicalOrder(store, treeState, nodes, // Mutable set is destroyed in place\ndoNotDescendInto1, doNotDescendInto2) {\n const graph = store.getGraph(treeState.version);\n const answer = [];\n const visited = new Set();\n\n while (nodes.size > 0) {\n visit(Recoil_nullthrows(nodes.values().next().value));\n }\n\n return answer;\n\n function visit(node) {\n if (doNotDescendInto1.has(node) || doNotDescendInto2.has(node)) {\n nodes.delete(node);\n return;\n }\n\n if (visited.has(node)) {\n return;\n }\n\n const children = graph.nodeToNodeSubscriptions.get(node);\n\n if (children) {\n for (const child of children) {\n visit(child);\n }\n }\n\n visited.add(node);\n nodes.delete(node);\n answer.push(node);\n }\n}\n\nfunction releaseNode(store, treeState, node) {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n } // Atom effects, in-closure caches, etc.:\n\n\n cleanUpNode$1(store, node); // Delete from store state:\n\n const storeState = store.getState();\n storeState.knownAtoms.delete(node);\n storeState.knownSelectors.delete(node);\n storeState.nodeTransactionSubscriptions.delete(node);\n storeState.retention.referenceCounts.delete(node);\n const zones = zonesThatCouldRetainNode(node);\n\n for (const zone of zones) {\n var _storeState$retention2;\n\n (_storeState$retention2 = storeState.retention.nodesRetainedByZone.get(zone)) === null || _storeState$retention2 === void 0 ? void 0 : _storeState$retention2.delete(node);\n } // Note that we DO NOT delete from nodeToComponentSubscriptions because this\n // already happens when the last component that was retaining the node unmounts,\n // and this could happen either before or after that.\n // Delete from TreeState and dep graph:\n\n\n treeState.atomValues.delete(node);\n treeState.dirtyAtoms.delete(node);\n treeState.nonvalidatedAtoms.delete(node);\n const graph = storeState.graphsByVersion.get(treeState.version);\n\n if (graph) {\n const deps = graph.nodeDeps.get(node);\n\n if (deps !== undefined) {\n graph.nodeDeps.delete(node);\n\n for (const dep of deps) {\n var _graph$nodeToNodeSubs;\n\n (_graph$nodeToNodeSubs = graph.nodeToNodeSubscriptions.get(dep)) === null || _graph$nodeToNodeSubs === void 0 ? void 0 : _graph$nodeToNodeSubs.delete(node);\n }\n } // No need to delete sub's deps as there should be no subs at this point.\n // But an invariant would require deleting nodes in topological order.\n\n\n graph.nodeToNodeSubscriptions.delete(node);\n } // Node config (for family members only as their configs can be recreated, and\n // only if they are not retained within any other Stores):\n\n\n deleteNodeConfigIfPossible$1(node);\n}\n\nfunction nodesRetainedByZone(storeState, zone) {\n var _storeState$retention3;\n\n return (_storeState$retention3 = storeState.retention.nodesRetainedByZone.get(zone)) !== null && _storeState$retention3 !== void 0 ? _storeState$retention3 : emptySet$1;\n}\n\nfunction zonesThatCouldRetainNode(node) {\n const retainedBy = getNode$2(node).retainedBy;\n\n if (retainedBy === undefined || retainedBy === 'components' || retainedBy === 'recoilRoot') {\n return [];\n } else if (retainedBy instanceof RetentionZone$2) {\n return [retainedBy];\n } else {\n return retainedBy; // it's an array of zones\n }\n}\n\nfunction scheduleOrPerformPossibleReleaseOfRetainable(store, retainable) {\n const state = store.getState();\n\n if (state.nextTree) {\n state.retention.retainablesToCheckForRelease.add(retainable);\n } else {\n releaseRetainablesNowOnCurrentTree(store, new Set([retainable]));\n }\n}\n\nfunction updateRetainCount(store, retainable, delta) {\n var _map$get;\n\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n const map = store.getState().retention.referenceCounts;\n const newCount = ((_map$get = map.get(retainable)) !== null && _map$get !== void 0 ? _map$get : 0) + delta;\n\n if (newCount === 0) {\n updateRetainCountToZero(store, retainable);\n } else {\n map.set(retainable, newCount);\n }\n}\n\nfunction updateRetainCountToZero(store, retainable) {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n const map = store.getState().retention.referenceCounts;\n map.delete(retainable);\n scheduleOrPerformPossibleReleaseOfRetainable(store, retainable);\n}\n\nfunction releaseScheduledRetainablesNow(store) {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n const state = store.getState();\n releaseRetainablesNowOnCurrentTree(store, state.retention.retainablesToCheckForRelease);\n state.retention.retainablesToCheckForRelease.clear();\n}\n\nfunction retainedByOptionWithDefault(r) {\n // The default will change from 'recoilRoot' to 'components' in the future.\n return r === undefined ? 'recoilRoot' : r;\n}\n\nvar Recoil_Retention = {\n SUSPENSE_TIMEOUT_MS,\n updateRetainCount,\n updateRetainCountToZero,\n releaseScheduledRetainablesNow,\n retainedByOptionWithDefault\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Combines multiple Iterables into a single Iterable.\n * Traverses the input Iterables in the order provided and maintains the order\n * of their elements.\n *\n * Example:\n * ```\n * const r = Array.from(concatIterables(['a', 'b'], ['c'], ['d', 'e', 'f']));\n * r == ['a', 'b', 'c', 'd', 'e', 'f'];\n * ```\n */\n\nfunction* concatIterables(iters) {\n for (const iter of iters) {\n for (const val of iter) {\n yield val;\n }\n }\n}\n\nvar Recoil_concatIterables = concatIterables;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nconst isSSR = typeof window === 'undefined';\nconst isReactNative = typeof navigator !== 'undefined' && navigator.product === 'ReactNative'; // eslint-disable-line fb-www/typeof-undefined\n\nvar Recoil_Environment = {\n isSSR,\n isReactNative\n};\n\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 * @emails oncall+recoil\n * \n * @format\n *\n * This is to export esstiential functions from react-dom\n * for our web build\n */\nconst {\n unstable_batchedUpdates\n} = reactDom;\n\nvar ReactBatchedUpdates = {\n unstable_batchedUpdates\n};\n\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 * @emails oncall+recoil\n * \n * @format\n *\n * This is to export esstiential functions from react-dom\n * for our web build\n */\n// @fb-only: const {unstable_batchedUpdates} = require('ReactDOMComet');\n// prettier-ignore\nconst {\n unstable_batchedUpdates: unstable_batchedUpdates$1\n} = ReactBatchedUpdates; // @oss-only\n\n\nvar Recoil_ReactBatchedUpdates = {\n unstable_batchedUpdates: unstable_batchedUpdates$1\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\nconst {\n batchStart: batchStart$1\n} = Recoil_RecoilValueInterface;\n\nconst {\n unstable_batchedUpdates: unstable_batchedUpdates$2\n} = Recoil_ReactBatchedUpdates;\n\nlet batcher = unstable_batchedUpdates$2; // flowlint-next-line unclear-type:off\n\n/**\n * Sets the provided batcher function as the batcher function used by Recoil.\n *\n * Set the batcher to a custom batcher for your renderer,\n * if you use a renderer other than React DOM or React Native.\n */\nconst setBatcher = newBatcher => {\n batcher = newBatcher;\n};\n/**\n * Returns the current batcher function.\n */\n\n\nconst getBatcher = () => batcher;\n/**\n * Calls the current batcher function and passes the\n * provided callback function.\n */\n\n\nconst batchUpdates = callback => {\n batcher(() => {\n let batchEnd = () => undefined;\n\n try {\n batchEnd = batchStart$1();\n callback();\n } finally {\n batchEnd();\n }\n });\n};\n\nvar Recoil_Batching = {\n getBatcher,\n setBatcher,\n batchUpdates\n};\n\nconst {\n isSSR: isSSR$1\n} = Recoil_Environment;\n\n\n\n\n\n\n\n\n\n\n\nconst {\n batchUpdates: batchUpdates$1\n} = Recoil_Batching;\n\nconst {\n initializeNodeIfNewToStore: initializeNodeIfNewToStore$1,\n peekNodeInfo: peekNodeInfo$1\n} = Recoil_FunctionalCore;\n\nconst {\n graph: graph$2\n} = Recoil_Graph;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$1,\n recoilValues: recoilValues$1,\n recoilValuesForKeys: recoilValuesForKeys$2\n} = Recoil_Node;\n\nconst {\n AbstractRecoilValue: AbstractRecoilValue$2,\n getRecoilValueAsLoadable: getRecoilValueAsLoadable$1,\n setRecoilValue: setRecoilValue$1,\n setUnvalidatedRecoilValue: setUnvalidatedRecoilValue$1\n} = Recoil_RecoilValueInterface;\n\nconst {\n updateRetainCount: updateRetainCount$1\n} = Recoil_Retention;\n\nconst {\n getNextTreeStateVersion: getNextTreeStateVersion$1,\n makeEmptyStoreState: makeEmptyStoreState$1\n} = Recoil_State; // Opaque at this surface because it's part of the public API from here.\n\n\nconst retainWarning = `\nRecoil Snapshots only last for the duration of the callback they are provided to. To keep a Snapshot longer, do this:\n\n const release = snapshot.retain();\n try {\n await useTheSnapshotAsynchronously(snapshot);\n } finally {\n release();\n }\n\nThis is currently a DEV-only warning but will become a thrown exception in the next release of Recoil.\n`; // A \"Snapshot\" is \"read-only\" and captures a specific set of values of atoms.\n// However, the data-flow-graph and selector values may evolve as selector\n// evaluation functions are executed and async selectors resolve.\n\nclass Snapshot {\n constructor(storeState) {\n _defineProperty(this, \"_store\", void 0);\n\n _defineProperty(this, \"_refCount\", 0);\n\n _defineProperty(this, \"getLoadable\", recoilValue => {\n this.checkRefCount_INTERNAL();\n return getRecoilValueAsLoadable$1(this._store, recoilValue);\n });\n\n _defineProperty(this, \"getPromise\", recoilValue => {\n this.checkRefCount_INTERNAL();\n return this.getLoadable(recoilValue).toPromise();\n });\n\n _defineProperty(this, \"getNodes_UNSTABLE\", opt => {\n this.checkRefCount_INTERNAL(); // TODO Deal with modified selectors\n\n if ((opt === null || opt === void 0 ? void 0 : opt.isModified) === true) {\n if ((opt === null || opt === void 0 ? void 0 : opt.isInitialized) === false) {\n return [];\n }\n\n const state = this._store.getState().currentTree;\n\n return recoilValuesForKeys$2(state.dirtyAtoms);\n }\n\n const knownAtoms = this._store.getState().knownAtoms;\n\n const knownSelectors = this._store.getState().knownSelectors;\n\n return (opt === null || opt === void 0 ? void 0 : opt.isInitialized) == null ? recoilValues$1.values() : opt.isInitialized === true ? recoilValuesForKeys$2(Recoil_concatIterables([this._store.getState().knownAtoms, this._store.getState().knownSelectors])) : Recoil_filterIterable(recoilValues$1.values(), ({\n key\n }) => !knownAtoms.has(key) && !knownSelectors.has(key));\n });\n\n _defineProperty(this, \"getInfo_UNSTABLE\", ({\n key\n }) => {\n this.checkRefCount_INTERNAL();\n return peekNodeInfo$1(this._store, this._store.getState().currentTree, key);\n });\n\n _defineProperty(this, \"map\", mapper => {\n this.checkRefCount_INTERNAL();\n const mutableSnapshot = new MutableSnapshot(this, batchUpdates$1);\n mapper(mutableSnapshot); // if removing batchUpdates from `set` add it here\n\n return cloneSnapshot(mutableSnapshot.getStore_INTERNAL());\n });\n\n _defineProperty(this, \"asyncMap\", async mapper => {\n this.checkRefCount_INTERNAL();\n const mutableSnapshot = new MutableSnapshot(this, batchUpdates$1);\n await mapper(mutableSnapshot);\n return cloneSnapshot(mutableSnapshot.getStore_INTERNAL());\n });\n\n this._store = {\n getState: () => storeState,\n replaceState: replacer => {\n storeState.currentTree = replacer(storeState.currentTree); // no batching so nextTree is never active\n },\n getGraph: version => {\n const graphs = storeState.graphsByVersion;\n\n if (graphs.has(version)) {\n return Recoil_nullthrows(graphs.get(version));\n }\n\n const newGraph = graph$2();\n graphs.set(version, newGraph);\n return newGraph;\n },\n subscribeToTransactions: () => ({\n release: () => {}\n }),\n addTransactionMetadata: () => {\n throw Recoil_err('Cannot subscribe to Snapshots');\n }\n }; // Initialize any nodes that are live in the parent store (primarily so that this\n // snapshot gets counted towards the node's live stores count).\n\n for (const nodeKey of this._store.getState().nodeCleanupFunctions.keys()) {\n initializeNodeIfNewToStore$1(this._store, storeState.currentTree, nodeKey, 'get');\n updateRetainCount$1(this._store, nodeKey, 1);\n }\n\n this.retain();\n this.autorelease_INTERNAL();\n }\n\n retain() {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return () => undefined;\n }\n\n this._refCount++;\n let released = false;\n return () => {\n if (!released) {\n released = true;\n this.release_INTERNAL();\n }\n };\n }\n\n autorelease_INTERNAL() {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n if (!isSSR$1) {\n window.setTimeout(() => this.release_INTERNAL(), 0);\n }\n }\n\n release_INTERNAL() {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n this._refCount--;\n\n if (this._refCount === 0) ;\n }\n\n checkRefCount_INTERNAL() {\n if (Recoil_gkx_1('recoil_memory_managament_2020') && this._refCount <= 0) {\n if (process.env.NODE_ENV !== \"production\") {\n Recoil_recoverableViolation(retainWarning);\n } // What we will ship later:\n // throw err(retainWarning);\n\n }\n }\n\n getStore_INTERNAL() {\n this.checkRefCount_INTERNAL();\n return this._store;\n }\n\n getID() {\n this.checkRefCount_INTERNAL();\n return this.getID_INTERNAL();\n }\n\n getID_INTERNAL() {\n this.checkRefCount_INTERNAL();\n return this._store.getState().currentTree.stateID;\n } // We want to allow the methods to be destructured and used as accessors\n // eslint-disable-next-line fb-www/extra-arrow-initializer\n\n\n}\n\nfunction cloneStoreState(store, treeState, bumpVersion = false) {\n const storeState = store.getState();\n const version = bumpVersion ? getNextTreeStateVersion$1() : treeState.version;\n return {\n currentTree: bumpVersion ? {\n // TODO snapshots shouldn't really have versions because a new version number\n // is always assigned when the snapshot is gone to.\n version,\n stateID: version,\n transactionMetadata: { ...treeState.transactionMetadata\n },\n dirtyAtoms: new Set(treeState.dirtyAtoms),\n atomValues: treeState.atomValues.clone(),\n nonvalidatedAtoms: treeState.nonvalidatedAtoms.clone()\n } : treeState,\n commitDepth: 0,\n nextTree: null,\n previousTree: null,\n knownAtoms: new Set(storeState.knownAtoms),\n // FIXME here's a copy\n knownSelectors: new Set(storeState.knownSelectors),\n // FIXME here's a copy\n transactionSubscriptions: new Map(),\n nodeTransactionSubscriptions: new Map(),\n nodeToComponentSubscriptions: new Map(),\n queuedComponentCallbacks_DEPRECATED: [],\n suspendedComponentResolvers: new Set(),\n graphsByVersion: new Map().set(version, store.getGraph(treeState.version)),\n versionsUsedByComponent: new Map(),\n retention: {\n referenceCounts: new Map(),\n nodesRetainedByZone: new Map(),\n retainablesToCheckForRelease: new Set()\n },\n nodeCleanupFunctions: new Map()\n };\n} // Factory to build a fresh snapshot\n\n\nfunction freshSnapshot(initializeState) {\n const snapshot = new Snapshot(makeEmptyStoreState$1());\n return initializeState != null ? snapshot.map(initializeState) : snapshot;\n} // Factory to clone a snapahot state\n\n\nfunction cloneSnapshot(store, version = 'current') {\n const storeState = store.getState();\n const treeState = version === 'current' ? storeState.currentTree : Recoil_nullthrows(storeState.previousTree);\n return new Snapshot(cloneStoreState(store, treeState));\n}\n\nclass MutableSnapshot extends Snapshot {\n constructor(snapshot, batch) {\n super(cloneStoreState(snapshot.getStore_INTERNAL(), snapshot.getStore_INTERNAL().getState().currentTree, true));\n\n _defineProperty(this, \"_batch\", void 0);\n\n _defineProperty(this, \"set\", (recoilState, newValueOrUpdater) => {\n this.checkRefCount_INTERNAL();\n const store = this.getStore_INTERNAL(); // This batchUpdates ensures this `set` is applied immediately and you can\n // read the written value after calling `set`. I would like to remove this\n // behavior and only batch in `Snapshot.map`, but this would be a breaking\n // change potentially.\n\n this._batch(() => {\n updateRetainCount$1(store, recoilState.key, 1);\n setRecoilValue$1(this.getStore_INTERNAL(), recoilState, newValueOrUpdater);\n });\n });\n\n _defineProperty(this, \"reset\", recoilState => {\n this.checkRefCount_INTERNAL();\n const store = this.getStore_INTERNAL(); // See note at `set` about batched updates.\n\n this._batch(() => {\n updateRetainCount$1(store, recoilState.key, 1);\n setRecoilValue$1(this.getStore_INTERNAL(), recoilState, DEFAULT_VALUE$1);\n });\n });\n\n _defineProperty(this, \"setUnvalidatedAtomValues_DEPRECATED\", values => {\n this.checkRefCount_INTERNAL();\n const store = this.getStore_INTERNAL(); // See note at `set` about batched updates.\n\n batchUpdates$1(() => {\n for (const [k, v] of values.entries()) {\n updateRetainCount$1(store, k, 1);\n setUnvalidatedRecoilValue$1(store, new AbstractRecoilValue$2(k), v);\n }\n });\n });\n\n this._batch = batch;\n } // We want to allow the methods to be destructured and used as accessors\n // eslint-disable-next-line fb-www/extra-arrow-initializer\n\n\n}\n\nvar Recoil_Snapshot = {\n Snapshot,\n MutableSnapshot,\n freshSnapshot,\n cloneSnapshot\n};\n\nvar Recoil_Snapshot_1 = Recoil_Snapshot.Snapshot;\nvar Recoil_Snapshot_2 = Recoil_Snapshot.MutableSnapshot;\nvar Recoil_Snapshot_3 = Recoil_Snapshot.freshSnapshot;\nvar Recoil_Snapshot_4 = Recoil_Snapshot.cloneSnapshot;\n\nvar Recoil_Snapshot$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Snapshot: Recoil_Snapshot_1,\n MutableSnapshot: Recoil_Snapshot_2,\n freshSnapshot: Recoil_Snapshot_3,\n cloneSnapshot: Recoil_Snapshot_4\n});\n\n// @fb-only: const RecoilusagelogEvent = require('RecoilusagelogEvent');\n// @fb-only: const RecoilUsageLogFalcoEvent = require('RecoilUsageLogFalcoEvent');\n// @fb-only: const URI = require('URI');\n\n\nconst {\n getNextTreeStateVersion: getNextTreeStateVersion$2,\n makeEmptyStoreState: makeEmptyStoreState$2\n} = Recoil_State;\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n cleanUpNode: cleanUpNode$2,\n getDownstreamNodes: getDownstreamNodes$2,\n setNodeValue: setNodeValue$2,\n setUnvalidatedAtomValue_DEPRECATED: setUnvalidatedAtomValue_DEPRECATED$1\n} = Recoil_FunctionalCore;\n\nconst {\n graph: graph$3\n} = Recoil_Graph;\n\nconst {\n cloneGraph: cloneGraph$1\n} = Recoil_Graph;\n\nconst {\n applyAtomValueWrites: applyAtomValueWrites$1\n} = Recoil_RecoilValueInterface;\n\nconst {\n releaseScheduledRetainablesNow: releaseScheduledRetainablesNow$1\n} = Recoil_Retention;\n\nconst {\n freshSnapshot: freshSnapshot$1\n} = Recoil_Snapshot$1;\n\n\n\nconst {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} = react;\n\nfunction notInAContext() {\n throw Recoil_err('This component must be used inside a <RecoilRoot> component.');\n}\n\nconst defaultStore = Object.freeze({\n getState: notInAContext,\n replaceState: notInAContext,\n getGraph: notInAContext,\n subscribeToTransactions: notInAContext,\n addTransactionMetadata: notInAContext\n});\nlet stateReplacerIsBeingExecuted = false;\n\nfunction startNextTreeIfNeeded(store) {\n if (stateReplacerIsBeingExecuted) {\n throw Recoil_err('An atom update was triggered within the execution of a state updater function. State updater functions provided to Recoil must be pure functions.');\n }\n\n const storeState = store.getState();\n\n if (storeState.nextTree === null) {\n if (Recoil_gkx_1('recoil_memory_managament_2020') && Recoil_gkx_1('recoil_release_on_cascading_update_killswitch_2021')) {\n // If this is a cascading update (that is, rendering due to one state change\n // invokes a second state change), we won't have cleaned up retainables yet\n // because this normally happens after notifying components. Do it before\n // proceeding with the cascading update so that it remains predictable:\n if (storeState.commitDepth > 0) {\n releaseScheduledRetainablesNow$1(store);\n }\n }\n\n const version = storeState.currentTree.version;\n const nextVersion = getNextTreeStateVersion$2();\n storeState.nextTree = { ...storeState.currentTree,\n version: nextVersion,\n stateID: nextVersion,\n dirtyAtoms: new Set(),\n transactionMetadata: {}\n };\n storeState.graphsByVersion.set(nextVersion, cloneGraph$1(Recoil_nullthrows(storeState.graphsByVersion.get(version))));\n }\n}\n\nconst AppContext = react.createContext({\n current: defaultStore\n});\n\nconst useStoreRef = () => useContext(AppContext);\n\nconst MutableSourceContext = react.createContext(null); // TODO T2710559282599660\n\nfunction useRecoilMutableSource() {\n const mutableSource = useContext(MutableSourceContext);\n\n if (mutableSource == null) {\n Recoil_expectationViolation('Attempted to use a Recoil hook outside of a <RecoilRoot>. ' + '<RecoilRoot> must be an ancestor of any component that uses ' + 'Recoil hooks.');\n }\n\n return mutableSource;\n}\n\nfunction notifyComponents(store, storeState, treeState) {\n const dependentNodes = getDownstreamNodes$2(store, treeState, treeState.dirtyAtoms);\n\n for (const key of dependentNodes) {\n const comps = storeState.nodeToComponentSubscriptions.get(key);\n\n if (comps) {\n for (const [_subID, [_debugName, callback]] of comps) {\n callback(treeState);\n }\n }\n }\n}\n\nfunction sendEndOfBatchNotifications(store) {\n const storeState = store.getState();\n const treeState = storeState.currentTree; // Inform transaction subscribers of the transaction:\n\n const dirtyAtoms = treeState.dirtyAtoms;\n\n if (dirtyAtoms.size) {\n // Execute Node-specific subscribers before global subscribers\n for (const [key, subscriptions] of storeState.nodeTransactionSubscriptions) {\n if (dirtyAtoms.has(key)) {\n for (const [_, subscription] of subscriptions) {\n subscription(store);\n }\n }\n }\n\n for (const [_, subscription] of storeState.transactionSubscriptions) {\n subscription(store);\n }\n\n if (!Recoil_gkx_1('recoil_early_rendering_2021') || storeState.suspendedComponentResolvers.size) {\n // Notifying components is needed to wake from suspense, even when using\n // early rendering.\n notifyComponents(store, storeState, treeState); // Wake all suspended components so the right one(s) can try to re-render.\n // We need to wake up components not just when some asynchronous selector\n // resolved, but also when changing synchronous values because this may cause\n // a selector to change from asynchronous to synchronous, in which case there\n // would be no follow-up asynchronous resolution to wake us up.\n // TODO OPTIMIZATION Only wake up related downstream components\n\n storeState.suspendedComponentResolvers.forEach(cb => cb());\n storeState.suspendedComponentResolvers.clear();\n }\n } // Special behavior ONLY invoked by useInterface.\n // FIXME delete queuedComponentCallbacks_DEPRECATED when deleting useInterface.\n\n\n storeState.queuedComponentCallbacks_DEPRECATED.forEach(cb => cb(treeState));\n storeState.queuedComponentCallbacks_DEPRECATED.splice(0, storeState.queuedComponentCallbacks_DEPRECATED.length);\n}\n\nfunction endBatch(storeRef) {\n const storeState = storeRef.current.getState();\n storeState.commitDepth++;\n\n try {\n const {\n nextTree\n } = storeState; // Ignore commits that are not because of Recoil transactions -- namely,\n // because something above RecoilRoot re-rendered:\n\n if (nextTree === null) {\n return;\n } // nextTree is now committed -- note that copying and reset occurs when\n // a transaction begins, in startNextTreeIfNeeded:\n\n\n storeState.previousTree = storeState.currentTree;\n storeState.currentTree = nextTree;\n storeState.nextTree = null;\n sendEndOfBatchNotifications(storeRef.current);\n\n if (storeState.previousTree != null) {\n storeState.graphsByVersion.delete(storeState.previousTree.version);\n } else {\n Recoil_recoverableViolation('Ended batch with no previous state, which is unexpected', 'recoil');\n }\n\n storeState.previousTree = null;\n\n if (Recoil_gkx_1('recoil_memory_managament_2020')) {\n releaseScheduledRetainablesNow$1(storeRef.current);\n }\n } finally {\n storeState.commitDepth--;\n }\n}\n/*\n * The purpose of the Batcher is to observe when React batches end so that\n * Recoil state changes can be batched. Whenever Recoil state changes, we call\n * setState on the batcher. Then we wait for that change to be committed, which\n * signifies the end of the batch. That's when we respond to the Recoil change.\n */\n\n\nfunction Batcher({\n setNotifyBatcherOfChange\n}) {\n const storeRef = useStoreRef();\n const [_, setState] = useState([]);\n setNotifyBatcherOfChange(() => setState({}));\n useEffect(() => {\n // enqueueExecution runs this function immediately; it is only used to\n // manipulate the order of useEffects during tests, since React seems to\n // call useEffect in an unpredictable order sometimes.\n Recoil_Queue.enqueueExecution('Batcher', () => {\n endBatch(storeRef);\n });\n }); // If an asynchronous selector resolves after the Batcher is unmounted,\n // notifyBatcherOfChange will still be called. An error gets thrown whenever\n // setState is called after a component is already unmounted, so this sets\n // notifyBatcherOfChange to be a no-op.\n\n useEffect(() => {\n return () => {\n setNotifyBatcherOfChange(() => {});\n };\n }, [setNotifyBatcherOfChange]);\n return null;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== 'undefined' && !window.$recoilDebugStates) {\n window.$recoilDebugStates = [];\n }\n} // When removing this deprecated function, remove stateBySettingRecoilValue\n// which will no longer be needed.\n\n\nfunction initialStoreState_DEPRECATED(store, initializeState) {\n const initial = makeEmptyStoreState$2();\n initializeState({\n // $FlowFixMe[escaped-generic]\n set: (atom, value) => {\n const state = initial.currentTree;\n const writes = setNodeValue$2(store, state, atom.key, value);\n const writtenNodes = new Set(writes.keys());\n const nonvalidatedAtoms = state.nonvalidatedAtoms.clone();\n\n for (const n of writtenNodes) {\n nonvalidatedAtoms.delete(n);\n }\n\n initial.currentTree = { ...state,\n dirtyAtoms: Recoil_unionSets(state.dirtyAtoms, writtenNodes),\n atomValues: applyAtomValueWrites$1(state.atomValues, writes),\n // NB: PLEASE un-export applyAtomValueWrites when deleting this code\n nonvalidatedAtoms\n };\n },\n setUnvalidatedAtomValues: atomValues => {\n // FIXME replace this with a mutative loop\n atomValues.forEach((v, k) => {\n initial.currentTree = setUnvalidatedAtomValue_DEPRECATED$1(initial.currentTree, k, v);\n });\n }\n });\n return initial;\n}\n\nfunction initialStoreState(initializeState) {\n const snapshot = freshSnapshot$1().map(initializeState);\n return snapshot.getStore_INTERNAL().getState();\n}\n\nlet nextID = 0;\n\nfunction RecoilRoot_INTERNAL({\n initializeState_DEPRECATED,\n initializeState,\n store_INTERNAL: storeProp,\n // For use with React \"context bridging\"\n children\n}) {\n var _createMutableSource;\n\n // prettier-ignore\n // @fb-only: useEffect(() => {\n // @fb-only: if (gkx('recoil_usage_logging')) {\n // @fb-only: try {\n // @fb-only: RecoilUsageLogFalcoEvent.log(() => ({\n // @fb-only: type: RecoilusagelogEvent.RECOIL_ROOT_MOUNTED,\n // @fb-only: path: URI.getRequestURI().getPath(),\n // @fb-only: }));\n // @fb-only: } catch {\n // @fb-only: recoverableViolation(\n // @fb-only: 'Error when logging Recoil Usage event',\n // @fb-only: 'recoil',\n // @fb-only: );\n // @fb-only: }\n // @fb-only: }\n // @fb-only: }, []);\n let storeState; // eslint-disable-line prefer-const\n\n const getGraph = version => {\n const graphs = storeState.current.graphsByVersion;\n\n if (graphs.has(version)) {\n return Recoil_nullthrows(graphs.get(version));\n }\n\n const newGraph = graph$3();\n graphs.set(version, newGraph);\n return newGraph;\n };\n\n const subscribeToTransactions = (callback, key) => {\n if (key == null) {\n // Global transaction subscriptions\n const {\n transactionSubscriptions\n } = storeRef.current.getState();\n const id = nextID++;\n transactionSubscriptions.set(id, callback);\n return {\n release: () => {\n transactionSubscriptions.delete(id);\n }\n };\n } else {\n // Node-specific transaction subscriptions:\n const {\n nodeTransactionSubscriptions\n } = storeRef.current.getState();\n\n if (!nodeTransactionSubscriptions.has(key)) {\n nodeTransactionSubscriptions.set(key, new Map());\n }\n\n const id = nextID++;\n Recoil_nullthrows(nodeTransactionSubscriptions.get(key)).set(id, callback);\n return {\n release: () => {\n const subs = nodeTransactionSubscriptions.get(key);\n\n if (subs) {\n subs.delete(id);\n\n if (subs.size === 0) {\n nodeTransactionSubscriptions.delete(key);\n }\n }\n }\n };\n }\n };\n\n const addTransactionMetadata = metadata => {\n startNextTreeIfNeeded(storeRef.current);\n\n for (const k of Object.keys(metadata)) {\n Recoil_nullthrows(storeRef.current.getState().nextTree).transactionMetadata[k] = metadata[k];\n }\n };\n\n const replaceState = replacer => {\n const storeState = storeRef.current.getState();\n startNextTreeIfNeeded(storeRef.current); // Use replacer to get the next state:\n\n const nextTree = Recoil_nullthrows(storeState.nextTree);\n let replaced;\n\n try {\n stateReplacerIsBeingExecuted = true;\n replaced = replacer(nextTree);\n } finally {\n stateReplacerIsBeingExecuted = false;\n }\n\n if (replaced === nextTree) {\n return;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== 'undefined') {\n window.$recoilDebugStates.push(replaced); // TODO this shouldn't happen here because it's not batched\n }\n } // Save changes to nextTree and schedule a React update:\n\n\n storeState.nextTree = replaced;\n\n if (Recoil_gkx_1('recoil_early_rendering_2021')) {\n notifyComponents(store, storeState, replaced);\n }\n\n Recoil_nullthrows(notifyBatcherOfChange.current)();\n };\n\n const notifyBatcherOfChange = useRef(null);\n const setNotifyBatcherOfChange = useCallback(x => {\n notifyBatcherOfChange.current = x;\n }, [notifyBatcherOfChange]); // FIXME T2710559282599660\n\n const createMutableSource = (_createMutableSource = react.createMutableSource) !== null && _createMutableSource !== void 0 ? _createMutableSource : // flowlint-line unclear-type:off\n react.unstable_createMutableSource; // flowlint-line unclear-type:off\n\n const store = storeProp !== null && storeProp !== void 0 ? storeProp : {\n getState: () => storeState.current,\n replaceState,\n getGraph,\n subscribeToTransactions,\n addTransactionMetadata\n };\n const storeRef = useRef(store);\n storeState = useRef(initializeState_DEPRECATED != null ? initialStoreState_DEPRECATED(store, initializeState_DEPRECATED) : initializeState != null ? initialStoreState(initializeState) : makeEmptyStoreState$2());\n const mutableSource = useMemo(() => createMutableSource ? createMutableSource(storeState, () => storeState.current.currentTree.version) : null, [createMutableSource, storeState]); // Cleanup when the <RecoilRoot> is unmounted\n\n useEffect(() => () => {\n for (const atomKey of storeRef.current.getState().knownAtoms) {\n cleanUpNode$2(storeRef.current, atomKey);\n }\n }, []);\n return /*#__PURE__*/react.createElement(AppContext.Provider, {\n value: storeRef\n }, /*#__PURE__*/react.createElement(MutableSourceContext.Provider, {\n value: mutableSource\n }, /*#__PURE__*/react.createElement(Batcher, {\n setNotifyBatcherOfChange: setNotifyBatcherOfChange\n }), children));\n}\n\nfunction RecoilRoot(props) {\n const {\n override,\n ...propsExceptOverride\n } = props;\n const ancestorStoreRef = useStoreRef();\n\n if (override === false && ancestorStoreRef.current !== defaultStore) {\n // If ancestorStoreRef.current !== defaultStore, it means that this\n // RecoilRoot is not nested within another.\n return props.children;\n }\n\n return /*#__PURE__*/react.createElement(RecoilRoot_INTERNAL, propsExceptOverride);\n}\n\nvar Recoil_RecoilRoot_react = {\n useStoreRef,\n useRecoilMutableSource,\n RecoilRoot,\n notifyComponents_FOR_TESTING: notifyComponents,\n sendEndOfBatchNotifications_FOR_TESTING: sendEndOfBatchNotifications\n};\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * MIT License\n *\n * Copyright (c) 2014-2019 Georg Tavonius\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * @emails oncall+recoil\n * \n * @format\n */\n\nconst UNKNOWN_FUNCTION = '<unknown>';\n/**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\nfunction stackTraceParser(stackString) {\n const lines = stackString.split('\\n');\n return lines.reduce((stack, line) => {\n const parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseNode(line) || parseJSC(line);\n\n if (parseResult) {\n stack.push(parseResult);\n }\n\n return stack;\n }, []);\n}\n\nconst chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nfunction parseChrome(line) {\n const parts = chromeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n const submatch = chromeEvalRe.exec(parts[2]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n\n parts[3] = submatch[2]; // line\n\n parts[4] = submatch[3]; // column\n }\n\n return {\n file: !isNative ? parts[2] : null,\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: isNative ? [parts[2]] : [],\n lineNumber: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n}\n\nconst winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseWinjs(line) {\n const parts = winjsRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nconst geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nfunction parseGecko(line) {\n const parts = geckoRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n const submatch = geckoEvalRe.exec(parts[3]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: parts[2] ? parts[2].split(',') : [],\n lineNumber: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n}\n\nconst javaScriptCoreRe = /^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\nfunction parseJSC(line) {\n const parts = javaScriptCoreRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[4],\n column: parts[5] ? +parts[5] : null\n };\n}\n\nconst nodeRe = /^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nfunction parseNode(line) {\n const parts = nodeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n}\n\nvar Recoil_stackTraceParser = stackTraceParser;\n\nconst {\n useRef: useRef$1\n} = react;\n\nfunction useComponentName() {\n const nameRef = useRef$1();\n\n if (process.env.NODE_ENV !== \"production\") {\n if (Recoil_gkx_1('recoil_infer_component_names')) {\n var _nameRef$current;\n\n if (nameRef.current === undefined) {\n // There is no blessed way to determine the calling React component from\n // within a hook. This hack uses the fact that hooks must start with 'use'\n // and that hooks are either called by React Components or other hooks. It\n // follows therefore, that to find the calling component, you simply need\n // to look down the stack and find the first function which doesn't start\n // with 'use'. We are only enabling this in dev for now, since once the\n // codebase is minified, the naming assumptions no longer hold true.\n // eslint-disable-next-line fb-www/no-new-error\n const frames = Recoil_stackTraceParser(new Error().stack);\n\n for (const {\n methodName\n } of frames) {\n // I observed cases where the frame was of the form 'Object.useXXX'\n // hence why I'm searching for hooks following a word boundary\n if (!methodName.match(/\\buse[^\\b]+$/)) {\n return nameRef.current = methodName;\n }\n }\n\n nameRef.current = null;\n }\n\n return (_nameRef$current = nameRef.current) !== null && _nameRef$current !== void 0 ? _nameRef$current : '<unable to determine component name>';\n }\n } // @fb-only: return \"<component name only available when both in dev mode and when passing GK 'recoil_infer_component_names'>\";\n\n\n return '<component name not available>'; // @oss-only\n}\n\nvar Recoil_useComponentName = useComponentName;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction shallowArrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nvar Recoil_shallowArrayEqual = shallowArrayEqual;\n\nconst {\n useEffect: useEffect$1,\n useRef: useRef$2\n} = react;\n\nfunction usePrevious(value) {\n const ref = useRef$2();\n useEffect$1(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nvar Recoil_usePrevious = usePrevious;\n\nconst {\n useStoreRef: useStoreRef$1\n} = Recoil_RecoilRoot_react;\n\nconst {\n SUSPENSE_TIMEOUT_MS: SUSPENSE_TIMEOUT_MS$1\n} = Recoil_Retention;\n\nconst {\n updateRetainCount: updateRetainCount$2\n} = Recoil_Retention;\n\nconst {\n RetentionZone: RetentionZone$3\n} = Recoil_RetentionZone;\n\nconst {\n isSSR: isSSR$2\n} = Recoil_Environment;\n\n\n\n\n\n\n\nconst {\n useEffect: useEffect$2,\n useRef: useRef$3\n} = react; // I don't see a way to avoid the any type here because we want to accept readable\n// and writable values with any type parameter, but normally with writable ones\n// RecoilState<SomeT> is not a subtype of RecoilState<mixed>.\n\n\n// flowlint-line unclear-type:off\nfunction useRetain(toRetain) {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n } // eslint-disable-next-line fb-www/react-hooks\n\n\n return useRetain_ACTUAL(toRetain);\n}\n\nfunction useRetain_ACTUAL(toRetain) {\n const array = Array.isArray(toRetain) ? toRetain : [toRetain];\n const retainables = array.map(a => a instanceof RetentionZone$3 ? a : a.key);\n const storeRef = useStoreRef$1();\n useEffect$2(() => {\n if (!Recoil_gkx_1('recoil_memory_managament_2020')) {\n return;\n }\n\n const store = storeRef.current;\n\n if (timeoutID.current && !isSSR$2) {\n // Already performed a temporary retain on render, simply cancel the release\n // of that temporary retain.\n window.clearTimeout(timeoutID.current);\n timeoutID.current = null;\n } else {\n for (const r of retainables) {\n updateRetainCount$2(store, r, 1);\n }\n }\n\n return () => {\n for (const r of retainables) {\n updateRetainCount$2(store, r, -1);\n }\n }; // eslint-disable-next-line fb-www/react-hooks-deps\n }, [storeRef, ...retainables]); // We want to retain if the component suspends. This is terrible but the Suspense\n // API affords us no better option. If we suspend and never commit after some\n // seconds, then release. The 'actual' retain/release in the effect above\n // cancels this.\n\n const timeoutID = useRef$3();\n const previousRetainables = Recoil_usePrevious(retainables);\n\n if (!isSSR$2 && (previousRetainables === undefined || !Recoil_shallowArrayEqual(previousRetainables, retainables))) {\n const store = storeRef.current;\n\n for (const r of retainables) {\n updateRetainCount$2(store, r, 1);\n }\n\n if (previousRetainables) {\n for (const r of previousRetainables) {\n updateRetainCount$2(store, r, -1);\n }\n }\n\n if (timeoutID.current) {\n window.clearTimeout(timeoutID.current);\n }\n\n timeoutID.current = window.setTimeout(() => {\n timeoutID.current = null;\n\n for (const r of retainables) {\n updateRetainCount$2(store, r, -1);\n }\n }, SUSPENSE_TIMEOUT_MS$1);\n }\n}\n\nvar Recoil_useRetain = useRetain;\n\nconst {\n batchUpdates: batchUpdates$2\n} = Recoil_Batching;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$2\n} = Recoil_Node;\n\nconst {\n useRecoilMutableSource: useRecoilMutableSource$1,\n useStoreRef: useStoreRef$2\n} = Recoil_RecoilRoot_react;\n\nconst {\n isRecoilValue: isRecoilValue$2\n} = Recoil_RecoilValue$1;\n\nconst {\n AbstractRecoilValue: AbstractRecoilValue$3,\n getRecoilValueAsLoadable: getRecoilValueAsLoadable$2,\n setRecoilValue: setRecoilValue$2,\n setUnvalidatedRecoilValue: setUnvalidatedRecoilValue$2,\n subscribeToRecoilValue: subscribeToRecoilValue$1\n} = Recoil_RecoilValueInterface;\n\nconst {\n setByAddingToSet: setByAddingToSet$2\n} = Recoil_CopyOnWrite;\n\n\n\n\n\n\n\n\n\nconst {\n mutableSourceExists: mutableSourceExists$2,\n useMutableSource: useMutableSource$1\n} = Recoil_mutableSource;\n\n\n\n\n\nconst {\n useCallback: useCallback$1,\n useEffect: useEffect$3,\n useMemo: useMemo$1,\n useRef: useRef$4,\n useState: useState$1\n} = react;\n\nfunction handleLoadable(loadable, recoilValue, storeRef) {\n // We can't just throw the promise we are waiting on to Suspense. If the\n // upstream dependencies change it may produce a state in which the component\n // can render, but it would still be suspended on a Promise that may never resolve.\n if (loadable.state === 'hasValue') {\n return loadable.contents;\n } else if (loadable.state === 'loading') {\n const promise = new Promise(resolve => {\n storeRef.current.getState().suspendedComponentResolvers.add(resolve);\n }); // $FlowFixMe Flow(prop-missing) for integrating with tools that inspect thrown promises @fb-only\n // @fb-only: promise.displayName = `Recoil State: ${recoilValue.key}`;\n\n throw promise;\n } else if (loadable.state === 'hasError') {\n throw loadable.contents;\n } else {\n throw Recoil_err(`Invalid value of loadable atom \"${recoilValue.key}\"`);\n }\n}\n\nfunction validateRecoilValue(recoilValue, hookName) {\n if (!isRecoilValue$2(recoilValue)) {\n throw Recoil_err(`Invalid argument to ${hookName}: expected an atom or selector but got ${String(recoilValue)}`);\n }\n}\n\n/**\n * Various things are broken with useRecoilInterface, particularly concurrent mode\n * and memory management. They will not be fixed.\n * */\nfunction useRecoilInterface_DEPRECATED() {\n const storeRef = useStoreRef$2();\n const [, forceUpdate] = useState$1([]);\n const recoilValuesUsed = useRef$4(new Set());\n recoilValuesUsed.current = new Set(); // Track the RecoilValues used just during this render\n\n const previousSubscriptions = useRef$4(new Set());\n const subscriptions = useRef$4(new Map());\n const unsubscribeFrom = useCallback$1(key => {\n const sub = subscriptions.current.get(key);\n\n if (sub) {\n sub.release();\n subscriptions.current.delete(key);\n }\n }, [subscriptions]);\n const componentName = Recoil_useComponentName();\n useEffect$3(() => {\n const store = storeRef.current;\n\n function updateState(_state, key) {\n if (!subscriptions.current.has(key)) {\n return;\n }\n\n forceUpdate([]);\n }\n\n Recoil_differenceSets(recoilValuesUsed.current, previousSubscriptions.current).forEach(key => {\n if (subscriptions.current.has(key)) {\n Recoil_expectationViolation(`Double subscription to RecoilValue \"${key}\"`);\n return;\n }\n\n const sub = subscribeToRecoilValue$1(store, new AbstractRecoilValue$3(key), state => {\n updateState(state, key);\n }, componentName);\n subscriptions.current.set(key, sub);\n /**\n * Since we're subscribing in an effect we need to update to the latest\n * value of the atom since it may have changed since we rendered. We can\n * go ahead and do that now, unless we're in the middle of a batch --\n * in which case we should do it at the end of the batch, due to the\n * following edge case: Suppose an atom is updated in another useEffect\n * of this same component. Then the following sequence of events occur:\n * 1. Atom is updated and subs fired (but we may not be subscribed\n * yet depending on order of effects, so we miss this) Updated value\n * is now in nextTree, but not currentTree.\n * 2. This effect happens. We subscribe and update.\n * 3. From the update we re-render and read currentTree, with old value.\n * 4. Batcher's effect sets currentTree to nextTree.\n * In this sequence we miss the update. To avoid that, add the update\n * to queuedComponentCallback if a batch is in progress.\n */\n // FIXME delete queuedComponentCallbacks_DEPRECATED when deleting useInterface.\n\n const state = store.getState();\n\n if (state.nextTree) {\n store.getState().queuedComponentCallbacks_DEPRECATED.push(() => {\n updateState(store.getState(), key);\n });\n } else {\n updateState(store.getState(), key);\n }\n });\n Recoil_differenceSets(previousSubscriptions.current, recoilValuesUsed.current).forEach(key => {\n unsubscribeFrom(key);\n });\n previousSubscriptions.current = recoilValuesUsed.current;\n });\n useEffect$3(() => {\n const subs = subscriptions.current;\n return () => subs.forEach((_, key) => unsubscribeFrom(key));\n }, [unsubscribeFrom]);\n return useMemo$1(() => {\n // eslint-disable-next-line no-shadow\n function useSetRecoilState(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useSetRecoilState');\n }\n\n return newValueOrUpdater => {\n setRecoilValue$2(storeRef.current, recoilState, newValueOrUpdater);\n };\n } // eslint-disable-next-line no-shadow\n\n\n function useResetRecoilState(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useResetRecoilState');\n }\n\n return () => setRecoilValue$2(storeRef.current, recoilState, DEFAULT_VALUE$2);\n } // eslint-disable-next-line no-shadow\n\n\n function useRecoilValueLoadable(recoilValue) {\n var _storeState$nextTree;\n\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilValue, 'useRecoilValueLoadable');\n }\n\n if (!recoilValuesUsed.current.has(recoilValue.key)) {\n recoilValuesUsed.current = setByAddingToSet$2(recoilValuesUsed.current, recoilValue.key);\n } // TODO Restore optimization to memoize lookup\n\n\n const storeState = storeRef.current.getState();\n return getRecoilValueAsLoadable$2(storeRef.current, recoilValue, Recoil_gkx_1('recoil_early_rendering_2021') ? (_storeState$nextTree = storeState.nextTree) !== null && _storeState$nextTree !== void 0 ? _storeState$nextTree : storeState.currentTree : storeState.currentTree);\n } // eslint-disable-next-line no-shadow\n\n\n function useRecoilValue(recoilValue) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilValue, 'useRecoilValue');\n }\n\n const loadable = useRecoilValueLoadable(recoilValue);\n return handleLoadable(loadable, recoilValue, storeRef);\n } // eslint-disable-next-line no-shadow\n\n\n function useRecoilState(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useRecoilState');\n }\n\n return [useRecoilValue(recoilState), useSetRecoilState(recoilState)];\n } // eslint-disable-next-line no-shadow\n\n\n function useRecoilStateLoadable(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useRecoilStateLoadable');\n }\n\n return [useRecoilValueLoadable(recoilState), useSetRecoilState(recoilState)];\n }\n\n return {\n getRecoilValue: useRecoilValue,\n getRecoilValueLoadable: useRecoilValueLoadable,\n getRecoilState: useRecoilState,\n getRecoilStateLoadable: useRecoilStateLoadable,\n getSetRecoilState: useSetRecoilState,\n getResetRecoilState: useResetRecoilState\n };\n }, [recoilValuesUsed, storeRef]);\n}\n\nconst recoilComponentGetRecoilValueCount_FOR_TESTING = {\n current: 0\n};\n\nfunction useRecoilValueLoadable_MUTABLESOURCE(recoilValue) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilValue, 'useRecoilValueLoadable');\n }\n\n const storeRef = useStoreRef$2();\n const getLoadable = useCallback$1(() => {\n var _storeState$nextTree2;\n\n const store = storeRef.current;\n const storeState = store.getState();\n const treeState = Recoil_gkx_1('recoil_early_rendering_2021') ? (_storeState$nextTree2 = storeState.nextTree) !== null && _storeState$nextTree2 !== void 0 ? _storeState$nextTree2 : storeState.currentTree : storeState.currentTree;\n return getRecoilValueAsLoadable$2(store, recoilValue, treeState);\n }, [storeRef, recoilValue]);\n const getLoadableWithTesting = useCallback$1(() => {\n if (process.env.NODE_ENV !== \"production\") {\n recoilComponentGetRecoilValueCount_FOR_TESTING.current++;\n }\n\n return getLoadable();\n }, [getLoadable]);\n const componentName = Recoil_useComponentName();\n const subscribe = useCallback$1((_storeState, callback) => {\n const store = storeRef.current;\n const subscription = subscribeToRecoilValue$1(store, recoilValue, () => {\n if (!Recoil_gkx_1('recoil_suppress_rerender_in_callback')) {\n return callback();\n } // Only re-render if the value has changed.\n // This will evaluate the atom/selector now as well as when the\n // component renders, but that may help with prefetching.\n\n\n const newLoadable = getLoadable();\n\n if (!prevLoadableRef.current.is(newLoadable)) {\n callback();\n } // If the component is suspended then the effect setting prevLoadableRef\n // will not run. So, set the previous value here when its subscription\n // is fired to wake it up. We can't just rely on this, though, because\n // this only executes when an atom/selector is dirty and the atom/selector\n // passed to the hook can dynamically change.\n\n\n prevLoadableRef.current = newLoadable;\n }, componentName);\n return subscription.release;\n }, [storeRef, recoilValue, componentName, getLoadable]);\n const source = useRecoilMutableSource$1();\n const loadable = useMutableSource$1(source, getLoadableWithTesting, subscribe);\n const prevLoadableRef = useRef$4(loadable);\n useEffect$3(() => {\n prevLoadableRef.current = loadable;\n });\n return loadable;\n}\n\nfunction useRecoilValueLoadable_LEGACY(recoilValue) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilValue, 'useRecoilValueLoadable');\n }\n\n const storeRef = useStoreRef$2();\n const [_, forceUpdate] = useState$1([]);\n const componentName = Recoil_useComponentName();\n useEffect$3(() => {\n const store = storeRef.current;\n const storeState = store.getState();\n const subscription = subscribeToRecoilValue$1(store, recoilValue, _state => {\n var _prevLoadableRef$curr;\n\n if (!Recoil_gkx_1('recoil_suppress_rerender_in_callback')) {\n return forceUpdate([]);\n }\n\n const newLoadable = getRecoilValueAsLoadable$2(store, recoilValue, store.getState().currentTree);\n\n if (!((_prevLoadableRef$curr = prevLoadableRef.current) === null || _prevLoadableRef$curr === void 0 ? void 0 : _prevLoadableRef$curr.is(newLoadable))) {\n forceUpdate(newLoadable);\n }\n\n prevLoadableRef.current = newLoadable;\n }, componentName);\n /**\n * Since we're subscribing in an effect we need to update to the latest\n * value of the atom since it may have changed since we rendered. We can\n * go ahead and do that now, unless we're in the middle of a batch --\n * in which case we should do it at the end of the batch, due to the\n * following edge case: Suppose an atom is updated in another useEffect\n * of this same component. Then the following sequence of events occur:\n * 1. Atom is updated and subs fired (but we may not be subscribed\n * yet depending on order of effects, so we miss this) Updated value\n * is now in nextTree, but not currentTree.\n * 2. This effect happens. We subscribe and update.\n * 3. From the update we re-render and read currentTree, with old value.\n * 4. Batcher's effect sets currentTree to nextTree.\n * In this sequence we miss the update. To avoid that, add the update\n * to queuedComponentCallback if a batch is in progress.\n */\n\n if (storeState.nextTree) {\n store.getState().queuedComponentCallbacks_DEPRECATED.push(() => {\n prevLoadableRef.current = null;\n forceUpdate([]);\n });\n } else {\n var _prevLoadableRef$curr2;\n\n if (!Recoil_gkx_1('recoil_suppress_rerender_in_callback')) {\n return forceUpdate([]);\n }\n\n const newLoadable = getRecoilValueAsLoadable$2(store, recoilValue, store.getState().currentTree);\n\n if (!((_prevLoadableRef$curr2 = prevLoadableRef.current) === null || _prevLoadableRef$curr2 === void 0 ? void 0 : _prevLoadableRef$curr2.is(newLoadable))) {\n forceUpdate(newLoadable);\n }\n\n prevLoadableRef.current = newLoadable;\n }\n\n return subscription.release;\n }, [componentName, recoilValue, storeRef]);\n const loadable = getRecoilValueAsLoadable$2(storeRef.current, recoilValue);\n const prevLoadableRef = useRef$4(loadable);\n useEffect$3(() => {\n prevLoadableRef.current = loadable;\n });\n return loadable;\n}\n/**\n Like useRecoilValue(), but either returns the value if available or\n just undefined if not available for any reason, such as pending or error.\n*/\n\n\nfunction useRecoilValueLoadable(recoilValue) {\n if (Recoil_gkx_1('recoil_memory_managament_2020')) {\n // eslint-disable-next-line fb-www/react-hooks\n Recoil_useRetain(recoilValue);\n }\n\n if (mutableSourceExists$2()) {\n // eslint-disable-next-line fb-www/react-hooks\n return useRecoilValueLoadable_MUTABLESOURCE(recoilValue);\n } else {\n // eslint-disable-next-line fb-www/react-hooks\n return useRecoilValueLoadable_LEGACY(recoilValue);\n }\n}\n/**\n Returns the value represented by the RecoilValue.\n If the value is pending, it will throw a Promise to suspend the component,\n if the value is an error it will throw it for the nearest React error boundary.\n This will also subscribe the component for any updates in the value.\n */\n\n\nfunction useRecoilValue(recoilValue) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilValue, 'useRecoilValue');\n }\n\n const storeRef = useStoreRef$2();\n const loadable = useRecoilValueLoadable(recoilValue);\n return handleLoadable(loadable, recoilValue, storeRef);\n}\n/**\n Returns a function that allows the value of a RecoilState to be updated, but does\n not subscribe the component to changes to that RecoilState.\n*/\n\n\nfunction useSetRecoilState(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useSetRecoilState');\n }\n\n const storeRef = useStoreRef$2();\n return useCallback$1(newValueOrUpdater => {\n setRecoilValue$2(storeRef.current, recoilState, newValueOrUpdater);\n }, [storeRef, recoilState]);\n}\n/**\n Returns a function that will reset the value of a RecoilState to its default\n*/\n\n\nfunction useResetRecoilState(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useResetRecoilState');\n }\n\n const storeRef = useStoreRef$2();\n return useCallback$1(() => {\n setRecoilValue$2(storeRef.current, recoilState, DEFAULT_VALUE$2);\n }, [storeRef, recoilState]);\n}\n/**\n Equivalent to useState(). Allows the value of the RecoilState to be read and written.\n Subsequent updates to the RecoilState will cause the component to re-render. If the\n RecoilState is pending, this will suspend the component and initiate the\n retrieval of the value. If evaluating the RecoilState resulted in an error, this will\n throw the error so that the nearest React error boundary can catch it.\n*/\n\n\nfunction useRecoilState(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useRecoilState');\n }\n\n return [useRecoilValue(recoilState), useSetRecoilState(recoilState)];\n}\n/**\n Like useRecoilState(), but does not cause Suspense or React error handling. Returns\n an object that indicates whether the RecoilState is available, pending, or\n unavailable due to an error.\n*/\n\n\nfunction useRecoilStateLoadable(recoilState) {\n if (process.env.NODE_ENV !== \"production\") {\n // $FlowFixMe[escaped-generic]\n validateRecoilValue(recoilState, 'useRecoilStateLoadable');\n }\n\n return [useRecoilValueLoadable(recoilState), useSetRecoilState(recoilState)];\n}\n\nfunction useSetUnvalidatedAtomValues() {\n const storeRef = useStoreRef$2();\n return (values, transactionMetadata = {}) => {\n batchUpdates$2(() => {\n storeRef.current.addTransactionMetadata(transactionMetadata);\n values.forEach((value, key) => setUnvalidatedRecoilValue$2(storeRef.current, new AbstractRecoilValue$3(key), value));\n });\n };\n}\n\nvar Recoil_Hooks = {\n recoilComponentGetRecoilValueCount_FOR_TESTING,\n useRecoilInterface: useRecoilInterface_DEPRECATED,\n useRecoilState,\n useRecoilStateLoadable,\n useRecoilValue,\n useRecoilValueLoadable,\n useResetRecoilState,\n useSetRecoilState,\n useSetUnvalidatedAtomValues\n};\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Returns a map containing all of the keys + values from the original map where\n * the given callback returned true.\n */\n\nfunction filterMap(map, callback) {\n const result = new Map();\n\n for (const [key, value] of map) {\n if (callback(value, key)) {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nvar Recoil_filterMap = filterMap;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n/**\n * Returns a set containing all of the values from the original set where\n * the given callback returned true.\n */\n\nfunction filterSet(set, callback) {\n const result = new Set();\n\n for (const value of set) {\n if (callback(value)) {\n result.add(value);\n }\n }\n\n return result;\n}\n\nvar Recoil_filterSet = filterSet;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction mergeMaps(...maps) {\n const result = new Map();\n\n for (let i = 0; i < maps.length; i++) {\n const iterator = maps[i].keys();\n let nextKey;\n\n while (!(nextKey = iterator.next()).done) {\n // $FlowFixMe[incompatible-call] - map/iterator knows nothing about flow types\n result.set(nextKey.value, maps[i].get(nextKey.value));\n }\n }\n /* $FlowFixMe[incompatible-return] (>=0.66.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.66 was deployed. To see the error\n * delete this comment and run Flow. */\n\n\n return result;\n}\n\nvar Recoil_mergeMaps = mergeMaps;\n\nconst {\n batchUpdates: batchUpdates$3\n} = Recoil_Batching;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$3,\n getNode: getNode$3,\n nodes: nodes$1\n} = Recoil_Node;\n\nconst {\n useStoreRef: useStoreRef$3\n} = Recoil_RecoilRoot_react;\n\nconst {\n AbstractRecoilValue: AbstractRecoilValue$4,\n setRecoilValueLoadable: setRecoilValueLoadable$1\n} = Recoil_RecoilValueInterface;\n\nconst {\n SUSPENSE_TIMEOUT_MS: SUSPENSE_TIMEOUT_MS$2\n} = Recoil_Retention;\n\nconst {\n Snapshot: Snapshot$1,\n cloneSnapshot: cloneSnapshot$1\n} = Recoil_Snapshot$1;\n\nconst {\n isSSR: isSSR$3\n} = Recoil_Environment;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n useCallback: useCallback$2,\n useEffect: useEffect$4,\n useRef: useRef$5,\n useState: useState$2\n} = react;\n\nfunction useTransactionSubscription(callback) {\n const storeRef = useStoreRef$3();\n useEffect$4(() => {\n const sub = storeRef.current.subscribeToTransactions(callback);\n return sub.release;\n }, [callback, storeRef]);\n}\n\nfunction externallyVisibleAtomValuesInState(state) {\n const atomValues = state.atomValues.toMap();\n const persistedAtomContentsValues = Recoil_mapMap(Recoil_filterMap(atomValues, (v, k) => {\n const node = getNode$3(k);\n const persistence = node.persistence_UNSTABLE;\n return persistence != null && persistence.type !== 'none' && v.state === 'hasValue';\n }), v => v.contents); // Merge in nonvalidated atoms; we may not have defs for them but they will\n // all have persistence on or they wouldn't be there in the first place.\n\n return Recoil_mergeMaps(state.nonvalidatedAtoms.toMap(), persistedAtomContentsValues);\n}\n\n/**\n Calls the given callback after any atoms have been modified and the consequent\n component re-renders have been committed. This is intended for persisting\n the values of the atoms to storage. The stored values can then be restored\n using the useSetUnvalidatedAtomValues hook.\n\n The callback receives the following info:\n\n atomValues: The current value of every atom that is both persistable (persistence\n type not set to 'none') and whose value is available (not in an\n error or loading state).\n\n previousAtomValues: The value of every persistable and available atom before\n the transaction began.\n\n atomInfo: A map containing the persistence settings for each atom. Every key\n that exists in atomValues will also exist in atomInfo.\n\n modifiedAtoms: The set of atoms that were written to during the transaction.\n\n transactionMetadata: Arbitrary information that was added via the\n useSetUnvalidatedAtomValues hook. Useful for ignoring the useSetUnvalidatedAtomValues\n transaction, to avoid loops.\n*/\nfunction useTransactionObservation_DEPRECATED(callback) {\n useTransactionSubscription(useCallback$2(store => {\n let previousTree = store.getState().previousTree;\n const currentTree = store.getState().currentTree;\n\n if (!previousTree) {\n Recoil_recoverableViolation('Transaction subscribers notified without a previous tree being present -- this is a bug in Recoil');\n previousTree = store.getState().currentTree; // attempt to trundle on\n }\n\n const atomValues = externallyVisibleAtomValuesInState(currentTree);\n const previousAtomValues = externallyVisibleAtomValuesInState(previousTree);\n const atomInfo = Recoil_mapMap(nodes$1, node => {\n var _node$persistence_UNS, _node$persistence_UNS2, _node$persistence_UNS3, _node$persistence_UNS4;\n\n return {\n persistence_UNSTABLE: {\n type: (_node$persistence_UNS = (_node$persistence_UNS2 = node.persistence_UNSTABLE) === null || _node$persistence_UNS2 === void 0 ? void 0 : _node$persistence_UNS2.type) !== null && _node$persistence_UNS !== void 0 ? _node$persistence_UNS : 'none',\n backButton: (_node$persistence_UNS3 = (_node$persistence_UNS4 = node.persistence_UNSTABLE) === null || _node$persistence_UNS4 === void 0 ? void 0 : _node$persistence_UNS4.backButton) !== null && _node$persistence_UNS3 !== void 0 ? _node$persistence_UNS3 : false\n }\n };\n }); // Filter on existance in atomValues so that externally-visible rules\n // are also applied to modified atoms (specifically exclude selectors):\n\n const modifiedAtoms = Recoil_filterSet(currentTree.dirtyAtoms, k => atomValues.has(k) || previousAtomValues.has(k));\n callback({\n atomValues,\n previousAtomValues,\n atomInfo,\n modifiedAtoms,\n transactionMetadata: { ...currentTree.transactionMetadata\n }\n });\n }, [callback]));\n}\n\nfunction useRecoilTransactionObserver(callback) {\n useTransactionSubscription(useCallback$2(store => {\n const snapshot = cloneSnapshot$1(store, 'current');\n const previousSnapshot = cloneSnapshot$1(store, 'previous');\n callback({\n snapshot,\n previousSnapshot\n });\n }, [callback]));\n} // Return a snapshot of the current state and subscribe to all state changes\n\n\nfunction useRecoilSnapshot() {\n const storeRef = useStoreRef$3();\n const [snapshot, setSnapshot] = useState$2(() => cloneSnapshot$1(storeRef.current));\n const previousSnapshot = Recoil_usePrevious(snapshot);\n const timeoutID = useRef$5();\n useEffect$4(() => {\n if (timeoutID.current && !isSSR$3) {\n window.clearTimeout(timeoutID.current);\n }\n\n return snapshot.retain();\n }, [snapshot]);\n useTransactionSubscription(useCallback$2(store => setSnapshot(cloneSnapshot$1(store)), []));\n\n if (previousSnapshot !== snapshot && !isSSR$3) {\n if (timeoutID.current) {\n previousSnapshot === null || previousSnapshot === void 0 ? void 0 : previousSnapshot.release_INTERNAL();\n window.clearTimeout(timeoutID.current);\n }\n\n snapshot.retain();\n timeoutID.current = window.setTimeout(() => {\n snapshot.release_INTERNAL();\n timeoutID.current = null;\n }, SUSPENSE_TIMEOUT_MS$2);\n }\n\n return snapshot;\n}\n\nfunction useGotoRecoilSnapshot() {\n const storeRef = useStoreRef$3();\n return useCallback$2(snapshot => {\n var _storeState$nextTree;\n\n const storeState = storeRef.current.getState();\n const prev = (_storeState$nextTree = storeState.nextTree) !== null && _storeState$nextTree !== void 0 ? _storeState$nextTree : storeState.currentTree;\n const next = snapshot.getStore_INTERNAL().getState().currentTree;\n batchUpdates$3(() => {\n const keysToUpdate = new Set();\n\n for (const keys of [prev.atomValues.keys(), next.atomValues.keys()]) {\n for (const key of keys) {\n var _prev$atomValues$get, _next$atomValues$get;\n\n if (((_prev$atomValues$get = prev.atomValues.get(key)) === null || _prev$atomValues$get === void 0 ? void 0 : _prev$atomValues$get.contents) !== ((_next$atomValues$get = next.atomValues.get(key)) === null || _next$atomValues$get === void 0 ? void 0 : _next$atomValues$get.contents) && getNode$3(key).shouldRestoreFromSnapshots) {\n keysToUpdate.add(key);\n }\n }\n }\n\n keysToUpdate.forEach(key => {\n setRecoilValueLoadable$1(storeRef.current, new AbstractRecoilValue$4(key), next.atomValues.has(key) ? Recoil_nullthrows(next.atomValues.get(key)) : DEFAULT_VALUE$3);\n });\n storeRef.current.replaceState(state => {\n return { ...state,\n stateID: snapshot.getID_INTERNAL()\n };\n });\n });\n }, [storeRef]);\n}\n\nvar Recoil_SnapshotHooks = {\n useRecoilSnapshot,\n useGotoRecoilSnapshot,\n useRecoilTransactionObserver,\n useTransactionObservation_DEPRECATED,\n useTransactionSubscription_DEPRECATED: useTransactionSubscription\n};\n\nconst {\n peekNodeInfo: peekNodeInfo$2\n} = Recoil_FunctionalCore;\n\nconst {\n useStoreRef: useStoreRef$4\n} = Recoil_RecoilRoot_react;\n\nfunction useGetRecoilValueInfo() {\n const storeRef = useStoreRef$4();\n return ({\n key\n }) => peekNodeInfo$2(storeRef.current, storeRef.current.getState().currentTree, key);\n}\n\nvar Recoil_useGetRecoilValueInfo = useGetRecoilValueInfo;\n\nconst {\n RecoilRoot: RecoilRoot$1,\n useStoreRef: useStoreRef$5\n} = Recoil_RecoilRoot_react;\n\n\n\nconst {\n useMemo: useMemo$2\n} = react;\n\nfunction useRecoilBridgeAcrossReactRoots() {\n const store = useStoreRef$5().current;\n return useMemo$2(() => {\n // eslint-disable-next-line no-shadow\n function RecoilBridge({\n children\n }) {\n return /*#__PURE__*/react.createElement(RecoilRoot$1, {\n store_INTERNAL: store\n }, children);\n }\n\n return RecoilBridge;\n }, [store]);\n}\n\nvar Recoil_useRecoilBridgeAcrossReactRoots = useRecoilBridgeAcrossReactRoots;\n\nconst {\n loadableWithValue: loadableWithValue$1\n} = Recoil_Loadable$1;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$4,\n getNode: getNode$4\n} = Recoil_Node;\n\nconst {\n copyTreeState: copyTreeState$1,\n getRecoilValueAsLoadable: getRecoilValueAsLoadable$3,\n invalidateDownstreams: invalidateDownstreams$1,\n writeLoadableToTreeState: writeLoadableToTreeState$1\n} = Recoil_RecoilValueInterface;\n\n\n\nfunction isAtom(recoilValue) {\n return getNode$4(recoilValue.key).nodeType === 'atom';\n}\n\nclass TransactionInterfaceImpl {\n constructor(store, treeState) {\n _defineProperty(this, \"_store\", void 0);\n\n _defineProperty(this, \"_treeState\", void 0);\n\n _defineProperty(this, \"_changes\", void 0);\n\n _defineProperty(this, \"get\", recoilValue => {\n if (this._changes.has(recoilValue.key)) {\n // $FlowFixMe[incompatible-return]\n return this._changes.get(recoilValue.key);\n }\n\n if (!isAtom(recoilValue)) {\n throw Recoil_err('Reading selectors within atomicUpdate is not supported');\n }\n\n const loadable = getRecoilValueAsLoadable$3(this._store, recoilValue, this._treeState);\n\n if (loadable.state === 'hasValue') {\n return loadable.contents;\n } else if (loadable.state === 'hasError') {\n throw loadable.contents;\n } else {\n throw Recoil_err(`Expected Recoil atom ${recoilValue.key} to have a value, but it is in a loading state.`);\n }\n });\n\n _defineProperty(this, \"set\", (recoilState, valueOrUpdater) => {\n if (!isAtom(recoilState)) {\n throw Recoil_err('Setting selectors within atomicUpdate is not supported');\n }\n\n if (typeof valueOrUpdater === 'function') {\n const current = this.get(recoilState);\n\n this._changes.set(recoilState.key, valueOrUpdater(current)); // flowlint-line unclear-type:off\n\n } else {\n this._changes.set(recoilState.key, valueOrUpdater);\n }\n });\n\n _defineProperty(this, \"reset\", recoilState => {\n this.set(recoilState, DEFAULT_VALUE$4);\n });\n\n this._store = store;\n this._treeState = treeState;\n this._changes = new Map();\n } // Allow destructing\n // eslint-disable-next-line fb-www/extra-arrow-initializer\n\n\n newTreeState_INTERNAL() {\n if (this._changes.size === 0) {\n return this._treeState;\n }\n\n const newState = copyTreeState$1(this._treeState);\n\n for (const [k, v] of this._changes) {\n writeLoadableToTreeState$1(newState, k, loadableWithValue$1(v));\n }\n\n invalidateDownstreams$1(this._store, newState);\n return newState;\n }\n\n}\n\nfunction atomicUpdater(store) {\n return fn => {\n store.replaceState(treeState => {\n const changeset = new TransactionInterfaceImpl(store, treeState);\n fn(changeset);\n return changeset.newTreeState_INTERNAL();\n });\n };\n}\n\nvar Recoil_AtomicUpdates = {\n atomicUpdater\n};\n\nvar Recoil_AtomicUpdates_1 = Recoil_AtomicUpdates.atomicUpdater;\n\nvar Recoil_AtomicUpdates$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n atomicUpdater: Recoil_AtomicUpdates_1\n});\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction invariant(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n\nvar invariant_1 = invariant;\n\n// @oss-only\n\n\nvar Recoil_invariant = invariant_1;\n\nconst {\n atomicUpdater: atomicUpdater$1\n} = Recoil_AtomicUpdates$1;\n\nconst {\n batchUpdates: batchUpdates$4\n} = Recoil_Batching;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$5\n} = Recoil_Node;\n\nconst {\n useStoreRef: useStoreRef$6\n} = Recoil_RecoilRoot_react;\n\nconst {\n setRecoilValue: setRecoilValue$3\n} = Recoil_RecoilValueInterface;\n\nconst {\n Snapshot: Snapshot$2,\n cloneSnapshot: cloneSnapshot$2\n} = Recoil_Snapshot$1;\n\n\n\n\n\nconst {\n useGotoRecoilSnapshot: useGotoRecoilSnapshot$1\n} = Recoil_SnapshotHooks;\n\nconst {\n useCallback: useCallback$3\n} = react;\n\nclass Sentinel {}\n\nconst SENTINEL = new Sentinel();\n\nfunction useRecoilCallback(fn, deps) {\n const storeRef = useStoreRef$6();\n const gotoSnapshot = useGotoRecoilSnapshot$1();\n return useCallback$3((...args) => {\n function set(recoilState, newValueOrUpdater) {\n setRecoilValue$3(storeRef.current, recoilState, newValueOrUpdater);\n }\n\n function reset(recoilState) {\n setRecoilValue$3(storeRef.current, recoilState, DEFAULT_VALUE$5);\n } // Use currentTree for the snapshot to show the currently committed state\n\n\n const snapshot = cloneSnapshot$2(storeRef.current); // FIXME massive gains from doing this lazily\n\n const atomicUpdate = atomicUpdater$1(storeRef.current);\n let ret = SENTINEL;\n batchUpdates$4(() => {\n const errMsg = 'useRecoilCallback expects a function that returns a function: ' + 'it accepts a function of the type (RecoilInterface) => T = R ' + 'and returns a callback function T => R, where RecoilInterface is an ' + 'object {snapshot, set, ...} and T and R are the argument and return ' + 'types of the callback you want to create. Please see the docs ' + 'at recoiljs.org for details.';\n\n if (typeof fn !== 'function') {\n throw Recoil_err(errMsg);\n } // flowlint-next-line unclear-type:off\n\n\n const cb = fn({\n set,\n reset,\n snapshot,\n gotoSnapshot,\n transact_UNSTABLE: atomicUpdate\n });\n\n if (typeof cb !== 'function') {\n throw Recoil_err(errMsg);\n }\n\n ret = cb(...args);\n });\n !!(ret instanceof Sentinel) ? process.env.NODE_ENV !== \"production\" ? Recoil_invariant(false, 'batchUpdates should return immediately') : Recoil_invariant(false) : void 0;\n return ret;\n }, deps != null ? [...deps, storeRef] : undefined // eslint-disable-line fb-www/react-hooks-deps\n );\n}\n\nvar Recoil_useRecoilCallback = useRecoilCallback;\n\nconst {\n getNode: getNode$5\n} = Recoil_Node;\n\nconst {\n useStoreRef: useStoreRef$7\n} = Recoil_RecoilRoot_react;\n\nconst {\n useCallback: useCallback$4\n} = react;\n\nfunction useRecoilRefresher(recoilValue) {\n const storeRef = useStoreRef$7();\n return useCallback$4(() => {\n var _node$clearCache;\n\n const store = storeRef.current;\n const {\n currentTree\n } = store.getState();\n const node = getNode$5(recoilValue.key);\n (_node$clearCache = node.clearCache) === null || _node$clearCache === void 0 ? void 0 : _node$clearCache.call(node, store, currentTree);\n }, [recoilValue, storeRef]);\n}\n\nvar Recoil_useRecoilRefresher = useRecoilRefresher;\n\nconst {\n atomicUpdater: atomicUpdater$2\n} = Recoil_AtomicUpdates$1;\n\nconst {\n useStoreRef: useStoreRef$8\n} = Recoil_RecoilRoot_react;\n\nconst {\n useMemo: useMemo$3\n} = react;\n\nfunction useRecoilTransaction(fn, deps) {\n const storeRef = useStoreRef$8();\n return useMemo$3(() => (...args) => {\n const atomicUpdate = atomicUpdater$2(storeRef.current);\n atomicUpdate(transactionInterface => {\n fn(transactionInterface)(...args);\n });\n }, deps != null ? [...deps, storeRef] : undefined // eslint-disable-line fb-www/react-hooks-deps\n );\n}\n\nvar Recoil_useRecoilTransaction = useRecoilTransaction;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nfunction isNode(object) {\n var _ownerDocument, _doc$defaultView;\n\n if (typeof window === 'undefined') {\n return false;\n }\n\n const doc = object != null ? (_ownerDocument = object.ownerDocument) !== null && _ownerDocument !== void 0 ? _ownerDocument : object : document;\n const defaultView = (_doc$defaultView = doc.defaultView) !== null && _doc$defaultView !== void 0 ? _doc$defaultView : window;\n return !!(object != null && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nvar Recoil_isNode = isNode;\n\nconst {\n isReactNative: isReactNative$1,\n isSSR: isSSR$4\n} = Recoil_Environment;\n\n\n\n\n\nfunction shouldNotBeFrozen(value) {\n // Primitives and functions:\n if (value === null || typeof value !== 'object') {\n return true;\n } // React elements:\n\n\n switch (typeof value.$$typeof) {\n case 'symbol':\n return true;\n\n case 'number':\n return true;\n } // Immutable structures:\n\n\n if (value['@@__IMMUTABLE_ITERABLE__@@'] != null || value['@@__IMMUTABLE_KEYED__@@'] != null || value['@@__IMMUTABLE_INDEXED__@@'] != null || value['@@__IMMUTABLE_ORDERED__@@'] != null || value['@@__IMMUTABLE_RECORD__@@'] != null) {\n return true;\n } // DOM nodes:\n\n\n if (Recoil_isNode(value)) {\n return true;\n }\n\n if (Recoil_isPromise(value)) {\n return true;\n }\n\n if (value instanceof Error) {\n return true;\n }\n\n if (ArrayBuffer.isView(value)) {\n return true;\n } // Some environments, just as Jest, don't work with the instanceof check\n\n\n if (!isSSR$4 && !isReactNative$1 && ( // $FlowFixMe(site=recoil) Window does not have a FlowType definition https://github.com/facebook/flow/issues/6709\n value === window || value instanceof Window)) {\n return true;\n }\n\n return false;\n} // Recursively freeze a value to enforce it is read-only.\n// This may also have minimal performance improvements for enumerating\n// objects (based on browser implementations, of course)\n\n\nfunction deepFreezeValue(value) {\n if (typeof value !== 'object' || shouldNotBeFrozen(value)) {\n return;\n }\n\n Object.freeze(value); // Make all properties read-only\n\n for (const key in value) {\n // $FlowFixMe[method-unbinding] added when improving typing for this parameters\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const prop = value[key]; // Prevent infinite recurssion for circular references.\n\n if (typeof prop === 'object' && prop != null && !Object.isFrozen(prop)) {\n deepFreezeValue(prop);\n }\n }\n }\n\n Object.seal(value); // This also makes existing properties non-configurable.\n}\n\nvar Recoil_deepFreezeValue = deepFreezeValue;\n\nconst TIME_WARNING_THRESHOLD_MS = 15;\n\nfunction stringify(x, opt, key) {\n // A optimization to avoid the more expensive JSON.stringify() for simple strings\n // This may lose protection for u2028 and u2029, though.\n if (typeof x === 'string' && !x.includes('\"') && !x.includes('\\\\')) {\n return `\"${x}\"`;\n } // Handle primitive types\n\n\n switch (typeof x) {\n case 'undefined':\n return '';\n // JSON.stringify(undefined) returns undefined, but we always want to return a string\n\n case 'boolean':\n return x ? 'true' : 'false';\n\n case 'number':\n case 'symbol':\n // case 'bigint': // BigInt is not supported in www\n return String(x);\n\n case 'string':\n // Add surrounding quotes and escape internal quotes\n return JSON.stringify(x);\n\n case 'function':\n if ((opt === null || opt === void 0 ? void 0 : opt.allowFunctions) !== true) {\n throw Recoil_err('Attempt to serialize function in a Recoil cache key');\n }\n\n return `__FUNCTION(${x.name})__`;\n }\n\n if (x === null) {\n return 'null';\n } // Fallback case for unknown types\n\n\n if (typeof x !== 'object') {\n var _JSON$stringify;\n\n return (_JSON$stringify = JSON.stringify(x)) !== null && _JSON$stringify !== void 0 ? _JSON$stringify : '';\n } // Deal with all promises as equivalent for now.\n\n\n if (Recoil_isPromise(x)) {\n return '__PROMISE__';\n } // Arrays handle recursive stringification\n\n\n if (Array.isArray(x)) {\n return `[${x.map((v, i) => stringify(v, opt, i.toString()))}]`;\n } // If an object defines a toJSON() method, then use that to override the\n // serialization. This matches the behavior of JSON.stringify().\n // Pass the key for compatibility.\n // Immutable.js collections define this method to allow us to serialize them.\n\n\n if (typeof x.toJSON === 'function') {\n // flowlint-next-line unclear-type: off\n return stringify(x.toJSON(key), opt, key);\n } // For built-in Maps, sort the keys in a stable order instead of the\n // default insertion order. Support non-string keys.\n\n\n if (x instanceof Map) {\n const obj = {};\n\n for (const [k, v] of x) {\n // Stringify will escape any nested quotes\n obj[typeof k === 'string' ? k : stringify(k, opt)] = v;\n }\n\n return stringify(obj, opt, key);\n } // For built-in Sets, sort the keys in a stable order instead of the\n // default insertion order.\n\n\n if (x instanceof Set) {\n return stringify(Array.from(x).sort((a, b) => stringify(a, opt).localeCompare(stringify(b, opt))), opt, key);\n } // Anything else that is iterable serialize as an Array.\n\n\n if (Symbol !== undefined && x[Symbol.iterator] != null && typeof x[Symbol.iterator] === 'function') {\n // flowlint-next-line unclear-type: off\n return stringify(Array.from(x), opt, key);\n } // For all other Objects, sort the keys in a stable order.\n\n\n return `{${Object.keys(x).filter(k => x[k] !== undefined).sort() // stringify the key to add quotes and escape any nested slashes or quotes.\n .map(k => `${stringify(k, opt)}:${stringify(x[k], opt, k)}`).join(',')}}`;\n} // Utility similar to JSON.stringify() except:\n// * Serialize built-in Sets as an Array\n// * Serialize built-in Maps as an Object. Supports non-string keys.\n// * Serialize other iterables as arrays\n// * Sort the keys of Objects and Maps to have a stable order based on string conversion.\n// This overrides their default insertion order.\n// * Still uses toJSON() of any object to override serialization\n// * Support Symbols (though don't guarantee uniqueness)\n// * We could support BigInt, but Flow doesn't seem to like it.\n// See Recoil_stableStringify-test.js for examples\n\n\nfunction stableStringify(x, opt = {\n allowFunctions: false\n}) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== 'undefined') {\n const startTime = window.performance ? window.performance.now() : 0;\n const str = stringify(x, opt);\n const endTime = window.performance ? window.performance.now() : 0;\n\n if (endTime - startTime > TIME_WARNING_THRESHOLD_MS) {\n /* eslint-disable fb-www/no-console */\n console.groupCollapsed(`Recoil: Spent ${endTime - startTime}ms computing a cache key`);\n console.warn(x, str);\n console.groupEnd();\n /* eslint-enable fb-www/no-console */\n }\n\n return str;\n }\n }\n\n return stringify(x, opt);\n}\n\nvar Recoil_stableStringify = stableStringify;\n\nclass TreeCache {\n constructor(options) {\n var _options$onHit, _options$onSet, _options$mapNodeValue;\n\n _defineProperty(this, \"_numLeafs\", void 0);\n\n _defineProperty(this, \"_root\", void 0);\n\n _defineProperty(this, \"_onHit\", void 0);\n\n _defineProperty(this, \"_onSet\", void 0);\n\n _defineProperty(this, \"_mapNodeValue\", void 0);\n\n this._numLeafs = 0;\n this._root = null;\n this._onHit = (_options$onHit = options === null || options === void 0 ? void 0 : options.onHit) !== null && _options$onHit !== void 0 ? _options$onHit : () => {};\n this._onSet = (_options$onSet = options === null || options === void 0 ? void 0 : options.onSet) !== null && _options$onSet !== void 0 ? _options$onSet : () => {};\n this._mapNodeValue = (_options$mapNodeValue = options === null || options === void 0 ? void 0 : options.mapNodeValue) !== null && _options$mapNodeValue !== void 0 ? _options$mapNodeValue : val => val;\n }\n\n size() {\n return this._numLeafs;\n } // TODO: nodeCount(): number\n\n\n root() {\n return this._root;\n }\n\n get(getNodeValue, handlers) {\n var _this$getLeafNode;\n\n return (_this$getLeafNode = this.getLeafNode(getNodeValue, handlers)) === null || _this$getLeafNode === void 0 ? void 0 : _this$getLeafNode.value;\n }\n\n getLeafNode(getNodeValue, handlers) {\n return findLeaf(this.root(), nodeKey => this._mapNodeValue(getNodeValue(nodeKey)), {\n onNodeVisit: node => {\n handlers === null || handlers === void 0 ? void 0 : handlers.onNodeVisit(node);\n\n if (node.type === 'leaf') {\n this._onHit(node);\n }\n }\n });\n }\n\n set(route, value, handlers) {\n let leafNode;\n let newRoot = null;\n\n const setRetryablePart = () => {\n newRoot = addLeaf(this.root(), route.map(([nodeKey, nodeValue]) => [nodeKey, this._mapNodeValue(nodeValue)]), null, value, null, {\n onNodeVisit: node => {\n handlers === null || handlers === void 0 ? void 0 : handlers.onNodeVisit(node);\n\n if (node.type === 'leaf') {\n leafNode = node;\n }\n }\n }, () => {\n this.clear();\n setRetryablePart();\n });\n };\n\n setRetryablePart();\n\n if (!this.root()) {\n this._root = newRoot;\n }\n\n this._numLeafs++;\n\n this._onSet(Recoil_nullthrows(leafNode));\n }\n\n delete(node) {\n if (!this.root()) {\n return false;\n }\n\n const root = Recoil_nullthrows(this.root());\n const existsInTree = pruneNodeFromTree(root, node, node.parent);\n\n if (!existsInTree) {\n return false;\n }\n\n if (node === root || root.type === 'branch' && !root.branches.size) {\n this._root = null;\n this._numLeafs = 0;\n return true;\n }\n\n this._numLeafs -= countDownstreamLeaves(node);\n return true;\n }\n\n clear() {\n this._numLeafs = 0;\n this._root = null;\n }\n\n}\n\nconst findLeaf = (root, getNodeValue, handlers) => {\n var _handlers$onNodeVisit;\n\n if (root == null) {\n return undefined;\n }\n\n handlers === null || handlers === void 0 ? void 0 : (_handlers$onNodeVisit = handlers.onNodeVisit) === null || _handlers$onNodeVisit === void 0 ? void 0 : _handlers$onNodeVisit.call(handlers, root);\n\n if (root.type === 'leaf') {\n return root;\n }\n\n const nodeValue = getNodeValue(root.nodeKey);\n return findLeaf(root.branches.get(nodeValue), getNodeValue, handlers);\n};\n\nconst addLeaf = (root, route, parent, value, branchKey, handlers, onAbort) => {\n var _handlers$onNodeVisit2;\n\n let node;\n\n if (root == null) {\n if (route.length === 0) {\n node = {\n type: 'leaf',\n value,\n parent,\n branchKey\n };\n } else {\n const [path, ...rest] = route;\n const [nodeKey, nodeValue] = path;\n node = {\n type: 'branch',\n nodeKey,\n parent,\n branches: new Map(),\n branchKey\n };\n node.branches.set(nodeValue, addLeaf(null, rest, node, value, nodeValue, handlers, onAbort));\n }\n } else {\n node = root;\n\n if (route.length) {\n const [path, ...rest] = route;\n const [nodeKey, nodeValue] = path;\n\n if (root.type !== 'branch' || root.nodeKey !== nodeKey) {\n Recoil_recoverableViolation('Existing cache must have a branch midway through the ' + 'route with matching node key. Resetting cache.');\n onAbort();\n return node; // ignored\n }\n\n root.branches.set(nodeValue, addLeaf(root.branches.get(nodeValue), rest, root, value, nodeValue, handlers, onAbort));\n }\n }\n\n handlers === null || handlers === void 0 ? void 0 : (_handlers$onNodeVisit2 = handlers.onNodeVisit) === null || _handlers$onNodeVisit2 === void 0 ? void 0 : _handlers$onNodeVisit2.call(handlers, node);\n return node;\n};\n\nconst pruneNodeFromTree = (root, node, parent) => {\n if (!parent) {\n return root === node;\n }\n\n parent.branches.delete(node.branchKey);\n return pruneUpstreamBranches(root, parent, parent.parent);\n};\n\nconst pruneUpstreamBranches = (root, branchNode, parent) => {\n if (!parent) {\n return root === branchNode;\n }\n\n if (branchNode.branches.size === 0) {\n parent.branches.delete(branchNode.branchKey);\n }\n\n return pruneUpstreamBranches(root, parent, parent.parent);\n};\n\nconst countDownstreamLeaves = node => node.type === 'leaf' ? 1 : Array.from(node.branches.values()).reduce((sum, currNode) => sum + countDownstreamLeaves(currNode), 0);\n\nvar Recoil_TreeCache = {\n TreeCache\n};\n\nvar Recoil_TreeCache_1 = Recoil_TreeCache.TreeCache;\n\nvar Recoil_TreeCache$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TreeCache: Recoil_TreeCache_1\n});\n\nclass LRUCache {\n constructor(options) {\n var _options$mapKey;\n\n _defineProperty(this, \"_maxSize\", void 0);\n\n _defineProperty(this, \"_size\", void 0);\n\n _defineProperty(this, \"_head\", void 0);\n\n _defineProperty(this, \"_tail\", void 0);\n\n _defineProperty(this, \"_map\", void 0);\n\n _defineProperty(this, \"_keyMapper\", void 0);\n\n this._maxSize = options.maxSize;\n this._size = 0;\n this._head = null;\n this._tail = null;\n this._map = new Map();\n this._keyMapper = (_options$mapKey = options.mapKey) !== null && _options$mapKey !== void 0 ? _options$mapKey : v => v;\n }\n\n head() {\n return this._head;\n }\n\n tail() {\n return this._tail;\n }\n\n size() {\n return this._size;\n }\n\n maxSize() {\n return this._maxSize;\n }\n\n has(key) {\n return this._map.has(this._keyMapper(key));\n }\n\n get(key) {\n const mappedKey = this._keyMapper(key);\n\n const node = this._map.get(mappedKey);\n\n if (!node) {\n return undefined;\n }\n\n this.set(key, node.value);\n return node.value;\n }\n\n set(key, val) {\n const mappedKey = this._keyMapper(key);\n\n const existingNode = this._map.get(mappedKey);\n\n if (existingNode) {\n this.delete(key);\n }\n\n const head = this.head();\n const node = {\n key,\n right: head,\n left: null,\n value: val\n };\n\n if (head) {\n head.left = node;\n } else {\n this._tail = node;\n }\n\n this._map.set(mappedKey, node);\n\n this._head = node;\n this._size++;\n\n this._maybeDeleteLRU();\n }\n\n _maybeDeleteLRU() {\n if (this.size() > this.maxSize()) {\n this.deleteLru();\n }\n }\n\n deleteLru() {\n const tail = this.tail();\n\n if (tail) {\n this.delete(tail.key);\n }\n }\n\n delete(key) {\n const mappedKey = this._keyMapper(key);\n\n if (!this._size || !this._map.has(mappedKey)) {\n return;\n }\n\n const node = Recoil_nullthrows(this._map.get(mappedKey));\n const right = node.right;\n const left = node.left;\n\n if (right) {\n right.left = node.left;\n }\n\n if (left) {\n left.right = node.right;\n }\n\n if (node === this.head()) {\n this._head = right;\n }\n\n if (node === this.tail()) {\n this._tail = left;\n }\n\n this._map.delete(mappedKey);\n\n this._size--;\n }\n\n clear() {\n this._size = 0;\n this._head = null;\n this._tail = null;\n this._map = new Map();\n }\n\n}\n\nvar Recoil_LRUCache = {\n LRUCache\n};\n\nvar Recoil_LRUCache_1 = Recoil_LRUCache.LRUCache;\n\nvar Recoil_LRUCache$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n LRUCache: Recoil_LRUCache_1\n});\n\nconst {\n LRUCache: LRUCache$1\n} = Recoil_LRUCache$1;\n\nconst {\n TreeCache: TreeCache$1\n} = Recoil_TreeCache$1;\n\nfunction treeCacheLRU(maxSize, mapNodeValue = v => v) {\n const lruCache = new LRUCache$1({\n maxSize\n });\n const cache = new TreeCache$1({\n mapNodeValue,\n onHit: node => {\n lruCache.set(node, true);\n },\n onSet: node => {\n const lruNode = lruCache.tail();\n lruCache.set(node, true);\n\n if (lruNode && cache.size() > maxSize) {\n cache.delete(lruNode.key);\n }\n }\n }); // $FlowFixMe[method-unbinding]\n\n return cache;\n}\n\nvar Recoil_treeCacheLRU = treeCacheLRU;\n\nconst {\n TreeCache: TreeCache$2\n} = Recoil_TreeCache$1;\n\n\n\nconst defaultPolicy = {\n equality: 'reference',\n eviction: 'keep-all',\n maxSize: Infinity\n};\n\nfunction treeCacheFromPolicy({\n equality = defaultPolicy.equality,\n eviction = defaultPolicy.eviction,\n maxSize = defaultPolicy.maxSize\n} = defaultPolicy) {\n const valueMapper = getValueMapper(equality);\n const treeCache = getTreeCache(eviction, maxSize, valueMapper);\n return treeCache;\n}\n\nfunction getValueMapper(equality) {\n switch (equality) {\n case 'reference':\n return val => val;\n\n case 'value':\n return val => Recoil_stableStringify(val);\n }\n\n throw Recoil_err(`Unrecognized equality policy ${equality}`);\n}\n\nfunction getTreeCache(eviction, maxSize, mapNodeValue) {\n switch (eviction) {\n case 'keep-all':\n // $FlowFixMe[method-unbinding]\n return new TreeCache$2({\n mapNodeValue\n });\n\n case 'lru':\n return Recoil_treeCacheLRU(Recoil_nullthrows(maxSize), mapNodeValue);\n\n case 'most-recent':\n return Recoil_treeCacheLRU(1, mapNodeValue);\n }\n\n throw Recoil_err(`Unrecognized eviction policy ${eviction}`);\n}\n\nvar Recoil_treeCacheFromPolicy = treeCacheFromPolicy;\n\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 * @emails oncall+recoil\n * \n * @format\n *\n * This is a stub for some integration into FB internal stuff\n */\nfunction startPerfBlock(_id) {\n return () => null;\n}\n\nvar Recoil_PerformanceTimings = {\n startPerfBlock\n};\n\nconst {\n loadableWithError: loadableWithError$1,\n loadableWithPromise: loadableWithPromise$1,\n loadableWithValue: loadableWithValue$2\n} = Recoil_Loadable$1;\n\n\n\nconst {\n getNodeLoadable: getNodeLoadable$2,\n peekNodeLoadable: peekNodeLoadable$1,\n setNodeValue: setNodeValue$3\n} = Recoil_FunctionalCore;\n\nconst {\n saveDependencyMapToStore: saveDependencyMapToStore$1\n} = Recoil_Graph;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$6,\n RecoilValueNotReady: RecoilValueNotReady$2,\n getConfigDeletionHandler: getConfigDeletionHandler$1,\n getNode: getNode$6,\n registerNode: registerNode$1\n} = Recoil_Node;\n\nconst {\n isRecoilValue: isRecoilValue$3\n} = Recoil_RecoilValue$1;\n\nconst {\n AbstractRecoilValue: AbstractRecoilValue$5\n} = Recoil_RecoilValue$1;\n\nconst {\n markRecoilValueModified: markRecoilValueModified$1,\n setRecoilValueLoadable: setRecoilValueLoadable$2\n} = Recoil_RecoilValueInterface;\n\nconst {\n retainedByOptionWithDefault: retainedByOptionWithDefault$1\n} = Recoil_Retention;\n\nconst {\n cloneSnapshot: cloneSnapshot$3\n} = Recoil_Snapshot$1;\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n startPerfBlock: startPerfBlock$1\n} = Recoil_PerformanceTimings;\n\n\n\nclass Canceled {}\n\nconst CANCELED = new Canceled();\n/**\n * An ExecutionId is an arbitrary ID that lets us distinguish executions from\n * each other. This is necessary as we need a way of solving this problem:\n * \"given 3 async executions, only update state for the 'latest' execution when\n * it finishes running regardless of when the other 2 finish\". ExecutionIds\n * provide a convenient way of identifying executions so that we can track and\n * manage them over time.\n */\n\nconst dependencyStack = []; // for detecting circular dependencies.\n\nconst waitingStores = new Map();\n/* eslint-disable no-redeclare */\n\nconst getNewExecutionId = (() => {\n let executionId = 0;\n return () => executionId++;\n})();\n\nfunction getInitialExecutionInfo() {\n return {\n depValuesDiscoveredSoFarDuringAsyncWork: null,\n latestLoadable: null,\n latestExecutionId: null,\n stateVersion: null\n };\n}\n\nfunction selector(options) {\n let recoilValue = null;\n const {\n key,\n get,\n cachePolicy_UNSTABLE: cachePolicy\n } = options;\n const set = options.set != null ? options.set : undefined; // flow\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof key !== 'string') {\n throw Recoil_err('A key option with a unique string value must be provided when creating a selector.');\n }\n\n if (typeof get !== 'function') {\n throw Recoil_err('Selectors must specify a get callback option to get the selector value.');\n }\n } // This is every discovered dependency across executions\n\n\n const discoveredDependencyNodeKeys = new Set();\n const cache = Recoil_treeCacheFromPolicy(cachePolicy !== null && cachePolicy !== void 0 ? cachePolicy : {\n equality: 'reference',\n eviction: 'keep-all'\n });\n const retainedBy = retainedByOptionWithDefault$1(options.retainedBy_UNSTABLE);\n const executionInfoMap = new Map();\n let liveStoresCount = 0;\n\n function selectorIsLive() {\n return !Recoil_gkx_1('recoil_memory_managament_2020') || liveStoresCount > 0;\n }\n\n function getExecutionInfo(store) {\n if (!executionInfoMap.has(store)) {\n executionInfoMap.set(store, getInitialExecutionInfo());\n }\n\n return Recoil_nullthrows(executionInfoMap.get(store));\n }\n\n function selectorInit(store) {\n liveStoresCount++;\n store.getState().knownSelectors.add(key); // FIXME remove knownSelectors?\n\n return () => {\n liveStoresCount--;\n store.getState().knownSelectors.delete(key);\n executionInfoMap.delete(store);\n };\n }\n\n function selectorShouldDeleteConfigOnRelease() {\n return getConfigDeletionHandler$1(key) !== undefined && !selectorIsLive();\n }\n\n function notifyStoreWhenAsyncSettles(store, loadable, executionId) {\n if (loadable.state === 'loading') {\n let stores = waitingStores.get(executionId);\n\n if (stores == null) {\n waitingStores.set(executionId, stores = new Set());\n }\n\n stores.add(store);\n }\n }\n\n function notifyStoresOfSettledAsync(newLoadable, executionId) {\n const stores = waitingStores.get(executionId);\n\n if (stores !== undefined) {\n for (const store of stores) {\n setRecoilValueLoadable$2(store, new AbstractRecoilValue$5(key), newLoadable);\n }\n\n waitingStores.delete(executionId);\n }\n }\n\n function getCachedNodeLoadable(store, state, nodeKey) {\n const isKeyPointingToSelector = store.getState().knownSelectors.has(nodeKey);\n /**\n * It's important that we don't bypass calling getNodeLoadable for atoms\n * as getNodeLoadable has side effects in state\n */\n\n if (isKeyPointingToSelector && state.atomValues.has(nodeKey)) {\n return Recoil_nullthrows(state.atomValues.get(nodeKey));\n }\n\n const loadable = getNodeLoadable$2(store, state, nodeKey);\n\n if (loadable.state !== 'loading' && isKeyPointingToSelector) {\n state.atomValues.set(nodeKey, loadable);\n }\n\n return loadable;\n }\n /**\n * This function attaches a then() and a catch() to a promise that was\n * returned from a selector's get() (either explicitly or implicitly by\n * running a function that uses the \"async\" keyword). If a selector's get()\n * returns a promise, we have two possibilities:\n *\n * 1. The promise will resolve, in which case it will have completely finished\n * executing without any remaining pending dependencies. No more retries\n * are needed and we can proceed with updating the cache and notifying\n * subscribers (if it is the latest execution, otherwise only the cache\n * will be updated and subscriptions will not be fired). This is the case\n * handled by the attached then() handler.\n *\n * 2. The promise will throw because it either has an error or it came across\n * an async dependency that has not yet resolved, in which case we will\n * call wrapDepdencyPromise(), whose responsibility is to handle dependency\n * promises. This case is handled by the attached catch() handler.\n *\n * Both branches will eventually resolve to the final result of the selector\n * (or an error if a real error occurred).\n *\n * The execution will run to completion even if it is stale, and its value\n * will be cached. But stale executions will not update global state or update\n * executionInfo as that is the responsibility of the 'latest' execution.\n *\n * Note this function should not be passed a promise that was thrown--AKA a\n * dependency promise. Dependency promises should be passed to\n * wrapPendingDependencyPromise()).\n */\n\n\n function wrapPendingPromise(store, promise, state, depValues, executionId, loadingDepsState) {\n return promise.then(value => {\n if (!selectorIsLive()) {\n // The selector was released since the request began; ignore the response.\n clearExecutionInfo(store, executionId);\n throw CANCELED;\n }\n\n const loadable = loadableWithValue$2(value);\n maybeFreezeValue(value);\n setCache(state, depValuesToDepRoute(depValues), loadable);\n setDepsInStore(store, state, new Set(depValues.keys()), executionId);\n setLoadableInStoreToNotifyDeps(store, loadable, executionId);\n return value;\n }).catch(errorOrPromise => {\n if (!selectorIsLive()) {\n // The selector was released since the request began; ignore the response.\n clearExecutionInfo(store, executionId);\n throw CANCELED;\n }\n\n if (isLatestExecution(store, executionId)) {\n updateExecutionInfoDepValues(depValues, store, executionId);\n }\n\n if (Recoil_isPromise(errorOrPromise)) {\n return wrapPendingDependencyPromise(store, errorOrPromise, state, depValues, executionId, loadingDepsState);\n }\n\n const loadable = loadableWithError$1(errorOrPromise);\n maybeFreezeValue(errorOrPromise);\n setCache(state, depValuesToDepRoute(depValues), loadable);\n setDepsInStore(store, state, new Set(depValues.keys()), executionId);\n setLoadableInStoreToNotifyDeps(store, loadable, executionId);\n throw errorOrPromise;\n });\n }\n /**\n * This function attaches a then() and a catch() to a promise that was\n * thrown from a selector's get(). If a selector's get() throws a promise,\n * we have two possibilities:\n *\n * 1. The promise will resolve, meaning one of our selector's dependencies is\n * now available and we should \"retry\" our get() by running it again. This\n * is the case handled by the attached then() handler.\n *\n * 2. The promise will throw because something went wrong with the dependency\n * promise (in other words a real error occurred). This case is handled by\n * the attached catch() handler. If the dependency promise throws, it is\n * _always_ a real error and not another dependency promise (any dependency\n * promises would have been handled upstream).\n *\n * The then() branch will eventually resolve to the final result of the\n * selector (or an error if a real error occurs), and the catch() will always\n * resolve to an error because the dependency promise is a promise that was\n * wrapped upstream, meaning it will only resolve to its real value or to a\n * real error.\n *\n * The execution will run to completion even if it is stale, and its value\n * will be cached. But stale executions will not update global state or update\n * executionInfo as that is the responsibility of the 'latest' execution.\n *\n * Note this function should not be passed a promise that was returned from\n * get(). The intention is that this function is only passed promises that\n * were thrown due to a pending dependency. Promises returned by get() should\n * be passed to wrapPendingPromise() instead.\n */\n\n\n function wrapPendingDependencyPromise(store, promise, state, existingDeps, executionId, loadingDepsState) {\n return promise.then(resolvedDep => {\n if (!selectorIsLive()) {\n // The selector was released since the request began; ignore the response.\n clearExecutionInfo(store, executionId);\n throw CANCELED;\n } // Check if we are handling a pending Recoil dependency or if the user\n // threw their own Promise to \"suspend\" a selector evaluation. We need\n // to check that the loadingDepPromise actually matches the promise that\n // we caught in case the selector happened to catch the promise we threw\n // for a pending Recoil dependency from `getRecoilValue()` and threw\n // their own promise instead.\n\n\n if (loadingDepsState.loadingDepKey != null && loadingDepsState.loadingDepPromise === promise) {\n /**\n * Note for async atoms, this means we are changing the atom's value\n * in the store for the given version. This should be alright because\n * the version of state is now stale and a new version will have\n * already been triggered by the atom being resolved (see this logic\n * in Recoil_atom.js)\n */\n state.atomValues.set(loadingDepsState.loadingDepKey, loadableWithValue$2(resolvedDep));\n } else {\n /**\n * If resolvedDepKey is not defined, the promise was a user-thrown\n * promise. User-thrown promises are an advanced feature and they\n * should be avoided in almost all cases. Using `loadable.map()` inside\n * of selectors for loading loadables and then throwing that mapped\n * loadable's promise is an example of a user-thrown promise.\n *\n * When we hit a user-thrown promise, we have to bail out of an optimization\n * where we bypass calculating selector cache keys for selectors that\n * have been previously seen for a given state (these selectors are saved in\n * state.atomValues) to avoid stale state as we have no way of knowing\n * what state changes happened (if any) in result to the promise resolving.\n *\n * Ideally we would only bail out selectors that are in the chain of\n * dependencies for this selector, but there's currently no way to get\n * a full list of a selector's downstream nodes because the state that\n * is executing may be a discarded tree (so store.getGraph(state.version)\n * will be empty), and the full dep tree may not be in the selector\n * caches in the case where the selector's cache was cleared. To solve\n * for this we would have to keep track of all running selector\n * executions and their downstream deps. Because this only covers edge\n * cases, that complexity might not be justifyable.\n */\n store.getState().knownSelectors.forEach(nodeKey => {\n state.atomValues.delete(nodeKey);\n });\n }\n /**\n * Optimization: Now that the dependency has resolved, let's try hitting\n * the cache in case the dep resolved to a value we have previously seen.\n *\n * TODO:\n * Note this optimization is not perfect because it only prevents re-executions\n * _after_ the point where an async dependency is found. Any code leading\n * up to the async dependency may have run unnecessarily. The ideal case\n * would be to wait for the async dependency to resolve first, check the\n * cache, and prevent _any_ execution of the selector if the resulting\n * value of the dependency leads to a path that is found in the cache.\n * The ideal case is more difficult to implement as it would require that\n * we capture and wait for the the async dependency right after checking\n * the cache. The current approach takes advantage of the fact that running\n * the selector already has a code path that lets us exit early when\n * an async dep resolves.\n */\n\n\n const cachedLoadable = getValFromCacheAndUpdatedDownstreamDeps(store, state);\n\n if (cachedLoadable && cachedLoadable.state === 'hasValue') {\n setExecutionInfo(cachedLoadable, store);\n return cachedLoadable.contents;\n }\n /**\n * If this execution is stale, let's check to see if there is some in\n * progress execution with a matching state. If we find a match, then\n * we can take the value from that in-progress execution. Note this may\n * sound like an edge case, but may be very common in cases where a\n * loading dependency resolves from loading to having a value (thus\n * possibly triggering a re-render), and React re-renders before the\n * chained .then() functions run, thus starting a new execution as the\n * dep has changed value. Without this check we will run the selector\n * twice (once in the new execution and once again in this .then(), so\n * this check is necessary to keep unnecessary re-executions to a\n * minimum).\n *\n * Also note this code does not check across all executions that may be\n * running. It only optimizes for the _latest_ execution per store as\n * we currently do not maintain a list of all currently running executions.\n * This means in some cases we may run selectors more than strictly\n * necessary when there are multiple executions running for the same\n * selector. This may be a valid tradeoff as checking for dep changes\n * across all in-progress executions may take longer than just\n * re-running the selector. This will be app-dependent, and maybe in the\n * future we can make the behavior configurable. An ideal fix may be\n * to extend the tree cache to support caching loading states.\n */\n\n\n if (!isLatestExecution(store, executionId)) {\n var _executionInfo$latest;\n\n const executionInfo = getExecutionInfoOfInProgressExecution(state);\n\n if ((executionInfo === null || executionInfo === void 0 ? void 0 : (_executionInfo$latest = executionInfo.latestLoadable) === null || _executionInfo$latest === void 0 ? void 0 : _executionInfo$latest.state) === 'loading') {\n /**\n * Returning promise here without wrapping as the wrapper logic was\n * already done upstream when this promise was generated.\n */\n return executionInfo.latestLoadable.contents;\n }\n }\n\n const [loadable, depValues] = evaluateSelectorGetter(store, state, executionId);\n\n if (isLatestExecution(store, executionId)) {\n updateExecutionInfoDepValues(depValues, store, executionId);\n }\n\n if (loadable.state !== 'loading') {\n setCache(state, depValuesToDepRoute(depValues), loadable);\n setDepsInStore(store, state, new Set(depValues.keys()), executionId);\n setLoadableInStoreToNotifyDeps(store, loadable, executionId);\n }\n\n if (loadable.state === 'hasError') {\n throw loadable.contents;\n }\n /**\n * Returning any promises here without wrapping as the wrapepr logic was\n * already done when we called evaluateSelectorGetter() to get this\n * loadable\n */\n\n\n return loadable.contents;\n }).catch(error => {\n if (error instanceof Canceled) {\n Recoil_recoverableViolation('Selector was released while it had dependencies');\n throw CANCELED;\n }\n\n if (!selectorIsLive()) {\n // The selector was released since the request began; ignore the response.\n clearExecutionInfo(store, executionId);\n throw CANCELED;\n }\n\n const loadable = loadableWithError$1(error);\n maybeFreezeValue(error);\n setCache(state, depValuesToDepRoute(existingDeps), loadableWithError$1(error));\n setDepsInStore(store, state, new Set(existingDeps.keys()), executionId);\n setLoadableInStoreToNotifyDeps(store, loadable, executionId);\n throw error;\n });\n }\n\n function setLoadableInStoreToNotifyDeps(store, loadable, executionId) {\n if (isLatestExecution(store, executionId)) {\n setExecutionInfo(loadable, store);\n notifyStoresOfSettledAsync(loadable, executionId);\n }\n }\n\n function setDepsInStore(store, state, deps, executionId) {\n var _store$getState, _store$getState$curre, _store$getState2, _store$getState2$next;\n\n if (isLatestExecution(store, executionId) || state.version === ((_store$getState = store.getState()) === null || _store$getState === void 0 ? void 0 : (_store$getState$curre = _store$getState.currentTree) === null || _store$getState$curre === void 0 ? void 0 : _store$getState$curre.version) || state.version === ((_store$getState2 = store.getState()) === null || _store$getState2 === void 0 ? void 0 : (_store$getState2$next = _store$getState2.nextTree) === null || _store$getState2$next === void 0 ? void 0 : _store$getState2$next.version)) {\n var _store$getState$nextT, _store$getState3, _store$getState3$next;\n\n saveDependencyMapToStore$1(new Map([[key, deps]]), store, (_store$getState$nextT = (_store$getState3 = store.getState()) === null || _store$getState3 === void 0 ? void 0 : (_store$getState3$next = _store$getState3.nextTree) === null || _store$getState3$next === void 0 ? void 0 : _store$getState3$next.version) !== null && _store$getState$nextT !== void 0 ? _store$getState$nextT : store.getState().currentTree.version);\n }\n }\n\n function setNewDepInStore(store, state, deps, newDepKey, executionId) {\n deps.add(newDepKey);\n setDepsInStore(store, state, deps, executionId);\n }\n\n function evaluateSelectorGetter(store, state, executionId) {\n const endPerfBlock = startPerfBlock$1(key); // TODO T63965866: use execution ID here\n\n let result;\n let resultIsError = false;\n let loadable;\n const loadingDepsState = {\n loadingDepKey: null,\n loadingDepPromise: null\n };\n const depValues = new Map();\n /**\n * Starting a fresh set of deps that we'll be using to update state. We're\n * starting a new set versus adding it in existing state deps because\n * the version of state that we update deps for may be a more recent version\n * than the version the selector was called with. This is because the latest\n * execution will update the deps of the current/latest version of state (\n * this is safe to do because the fact that the selector is the latest\n * execution means the deps we discover below are our best guess at the\n * deps for the current/latest state in the store)\n */\n\n const deps = new Set();\n setDepsInStore(store, state, deps, executionId);\n\n function getRecoilValue(dep) {\n const {\n key: depKey\n } = dep;\n setNewDepInStore(store, state, deps, depKey, executionId);\n const depLoadable = getCachedNodeLoadable(store, state, depKey);\n depValues.set(depKey, depLoadable);\n\n switch (depLoadable.state) {\n case 'hasValue':\n return depLoadable.contents;\n\n case 'hasError':\n throw depLoadable.contents;\n\n case 'loading':\n loadingDepsState.loadingDepKey = depKey;\n loadingDepsState.loadingDepPromise = depLoadable.contents;\n throw depLoadable.contents;\n }\n\n throw Recoil_err('Invalid Loadable state');\n }\n\n let gateCallback = false;\n\n const getCallback = fn => {\n return (...args) => {\n if (!gateCallback) {\n throw Recoil_err('getCallback() should only be called asynchronously after the selector is evalutated. It can be used for selectors to return objects with callbacks that can obtain the current Recoil state without a subscription.');\n }\n\n const snapshot = cloneSnapshot$3(store);\n const cb = fn({\n snapshot\n });\n\n if (typeof cb !== 'function') {\n throw Recoil_err('getCallback() expects a function that returns a function.');\n }\n\n return cb(...args);\n };\n };\n\n try {\n result = get({\n get: getRecoilValue,\n getCallback\n });\n result = isRecoilValue$3(result) ? getRecoilValue(result) : result;\n gateCallback = true;\n\n if (Recoil_isPromise(result)) {\n result = wrapPendingPromise(store, result, state, depValues, executionId, loadingDepsState).finally(endPerfBlock);\n } else {\n endPerfBlock();\n }\n } catch (errorOrDepPromise) {\n result = errorOrDepPromise;\n\n if (Recoil_isPromise(result)) {\n result = wrapPendingDependencyPromise(store, result, state, depValues, executionId, loadingDepsState).finally(endPerfBlock);\n } else {\n resultIsError = true;\n endPerfBlock();\n }\n }\n\n if (resultIsError) {\n loadable = loadableWithError$1(result);\n } else if (Recoil_isPromise(result)) {\n loadable = loadableWithPromise$1(result);\n } else {\n loadable = loadableWithValue$2(result);\n }\n\n if (loadable.state !== 'loading') {\n maybeFreezeValue(loadable.contents);\n }\n\n return [loadable, depValues];\n }\n\n function getValFromCacheAndUpdatedDownstreamDeps(store, state) {\n const depsAfterCacheDone = new Set();\n const executionInfo = getExecutionInfo(store);\n let cachedVal;\n\n try {\n cachedVal = cache.get(nodeKey => {\n !(typeof nodeKey === 'string') ? process.env.NODE_ENV !== \"production\" ? Recoil_invariant(false, 'Cache nodeKey is type string') : Recoil_invariant(false) : void 0;\n const loadable = getCachedNodeLoadable(store, state, nodeKey);\n return loadable.contents;\n }, {\n onNodeVisit: node => {\n if (node.type === 'branch' && node.nodeKey !== key && typeof node.nodeKey === 'string') {\n depsAfterCacheDone.add(node.nodeKey);\n discoveredDependencyNodeKeys.add(node.nodeKey);\n }\n }\n });\n } catch (error) {\n throw Recoil_err(`Problem with cache lookup for selector \"${key}\": ${error.message}`);\n }\n /**\n * Ensure store contains correct dependencies if we hit the cache so that\n * the store deps and cache are in sync for a given state. This is important\n * because store deps are normally updated when new executions are created,\n * but cache hits don't trigger new executions but they still _may_ signifiy\n * a change in deps in the store if the store deps for this state are empty\n * or stale.\n */\n\n\n if (cachedVal) {\n setDepsInStore(store, state, depsAfterCacheDone, executionInfo.latestExecutionId);\n }\n\n return cachedVal;\n }\n /**\n * FIXME: dep keys should take into account the state of the loadable to\n * prevent the edge case where a loadable with an error and a loadable with\n * an error as a value are treated as the same thing incorrectly. For example\n * these two should be treated differently:\n *\n * selector({key: '', get: () => new Error('hi')});\n * selector({key: '', get () => {throw new Error('hi')}});\n *\n * With current implementation they are treated the same\n */\n\n\n function depValuesToDepRoute(depValues) {\n return Array.from(depValues.entries()).map(([depKey, valLoadable]) => [depKey, valLoadable.contents]);\n }\n\n function getValFromRunningNewExecutionAndUpdatedDeps(store, state) {\n const newExecutionId = getNewExecutionId();\n const [loadable, newDepValues] = evaluateSelectorGetter(store, state, newExecutionId);\n setExecutionInfo(loadable, store, newDepValues, newExecutionId, state);\n maybeSetCacheWithLoadable(state, depValuesToDepRoute(newDepValues), loadable);\n notifyStoreWhenAsyncSettles(store, loadable, newExecutionId);\n return loadable;\n }\n /**\n * Given a tree state, this function returns the \"selector result\", which is\n * defined as a size-2 tuple of [DependencyMap, Loadable<T>].\n *\n * The selector's get() function will only be re-evaluated if _both_ of the\n * following statements are true:\n *\n * 1. The current dep values from the given state produced a cache key that\n * was not found in the cache.\n * 2. There is no currently running async execution OR there is an\n * async execution that is running, but after comparing the dep values in\n * the given state with the dep values that the execution has discovered so\n * far we find that at least one dep value has changed, in which case we\n * start a new execution (the previously running execution will continue to\n * run to completion, but only the new execution will be deemed the\n * 'latest' execution, meaning it will be the only execution that will\n * update global state when it is finished. Any non-latest executions will\n * run to completion and update the selector cache but not global state).\n */\n\n\n function getSelectorValAndUpdatedDeps(store, state) {\n const cachedVal = getValFromCacheAndUpdatedDownstreamDeps(store, state);\n\n if (cachedVal != null) {\n setExecutionInfo(cachedVal, store);\n return cachedVal;\n }\n\n const inProgressExecutionInfo = getExecutionInfoOfInProgressExecution(state); // FIXME: this won't work with custom caching b/c it uses separate cache\n\n if (inProgressExecutionInfo) {\n const executionInfo = inProgressExecutionInfo;\n notifyStoreWhenAsyncSettles(store, Recoil_nullthrows(executionInfo.latestLoadable), Recoil_nullthrows(executionInfo.latestExecutionId)); // FIXME: check after the fact to see if we made the right choice by waiting\n\n return Recoil_nullthrows(executionInfo.latestLoadable);\n }\n\n return getValFromRunningNewExecutionAndUpdatedDeps(store, state);\n }\n /**\n * Searches execution info across all stores to see if there is an in-progress\n * execution whose dependency values match the values of the requesting store.\n */\n\n\n function getExecutionInfoOfInProgressExecution(state) {\n var _Array$from$find;\n\n const [, executionInfo] = (_Array$from$find = Array.from(executionInfoMap.entries()).find(([store, execInfo]) => {\n return execInfo.latestLoadable != null && execInfo.latestExecutionId != null && !haveAsyncDepsChanged(store, state);\n })) !== null && _Array$from$find !== void 0 ? _Array$from$find : [];\n return executionInfo;\n }\n\n const mapOfCheckedVersions = new Map();\n\n function haveAsyncDepsChanged(store, state) {\n var _executionInfo$depVal, _mapOfCheckedVersions;\n\n const executionInfo = getExecutionInfo(store);\n const oldDepValues = (_executionInfo$depVal = executionInfo.depValuesDiscoveredSoFarDuringAsyncWork) !== null && _executionInfo$depVal !== void 0 ? _executionInfo$depVal : new Map();\n const cachedDepValuesCheckedForThisVersion = Array(((_mapOfCheckedVersions = mapOfCheckedVersions.get(state.version)) !== null && _mapOfCheckedVersions !== void 0 ? _mapOfCheckedVersions : new Map()).entries());\n const isCachedVersionSame = mapOfCheckedVersions.has(state.version) && cachedDepValuesCheckedForThisVersion.length === oldDepValues.size && cachedDepValuesCheckedForThisVersion.every(([nodeKey, nodeVal]) => {\n return oldDepValues.get(nodeKey) === nodeVal;\n });\n\n if (oldDepValues == null || state.version === executionInfo.stateVersion || isCachedVersionSame) {\n return false;\n }\n\n mapOfCheckedVersions.set(state.version, new Map(oldDepValues));\n return Array.from(oldDepValues).some(([nodeKey, oldVal]) => {\n const loadable = getCachedNodeLoadable(store, state, nodeKey);\n return loadable.contents !== oldVal.contents;\n });\n }\n /**\n * This function will update the selector's execution info when the selector\n * has either finished running an execution or has started a new execution. If\n * the given loadable is in a 'loading' state, the intention is that a new\n * execution has started. Otherwise, the intention is that an execution has\n * just finished.\n */\n\n\n function setExecutionInfo(loadable, store, depValues, newExecutionId, state) {\n const executionInfo = getExecutionInfo(store);\n\n if (loadable.state === 'loading') {\n executionInfo.depValuesDiscoveredSoFarDuringAsyncWork = depValues;\n executionInfo.latestExecutionId = newExecutionId;\n executionInfo.latestLoadable = loadable;\n executionInfo.stateVersion = state === null || state === void 0 ? void 0 : state.version;\n } else {\n executionInfo.depValuesDiscoveredSoFarDuringAsyncWork = null;\n executionInfo.latestExecutionId = null;\n executionInfo.latestLoadable = null;\n executionInfo.stateVersion = null;\n }\n }\n /**\n * Conditionally updates the cache with a given loadable.\n *\n * We only cache loadables that are not loading because our cache keys are\n * based on dep values, which are in an unfinished state for loadables that\n * have a 'loading' state (new deps may be discovered while the selector\n * runs its async code). We never want to cache partial dependencies b/c it\n * could lead to errors, such as prematurely returning the result based on a\n * partial list of deps-- we need the full list of deps to ensure that we\n * are returning the correct result from cache.\n */\n\n\n function maybeSetCacheWithLoadable(state, depRoute, loadable) {\n if (loadable.state !== 'loading') {\n setCache(state, depRoute, loadable);\n }\n }\n\n function updateExecutionInfoDepValues(depValues, store, executionId) {\n const executionInfo = getExecutionInfo(store);\n\n if (isLatestExecution(store, executionId)) {\n executionInfo.depValuesDiscoveredSoFarDuringAsyncWork = depValues;\n }\n }\n\n function clearExecutionInfo(store, executionId) {\n if (isLatestExecution(store, executionId)) {\n executionInfoMap.delete(store);\n }\n }\n\n function isLatestExecution(store, executionId) {\n const executionInfo = getExecutionInfo(store);\n return executionId === executionInfo.latestExecutionId;\n }\n\n function maybeFreezeValue(val) {\n if (process.env.NODE_ENV !== \"production\") {\n if (Boolean(options.dangerouslyAllowMutability) === false) {\n Recoil_deepFreezeValue(val);\n }\n }\n }\n\n function setCache(state, cacheRoute, loadable) {\n state.atomValues.set(key, loadable);\n\n try {\n cache.set(cacheRoute, loadable);\n } catch (error) {\n throw Recoil_err(`Problem with setting cache for selector \"${key}\": ${error.message}`);\n }\n }\n\n function detectCircularDependencies(fn) {\n if (dependencyStack.includes(key)) {\n const message = `Recoil selector has circular dependencies: ${dependencyStack.slice(dependencyStack.indexOf(key)).join(' \\u2192 ')}`;\n return loadableWithError$1(Recoil_err(message));\n }\n\n dependencyStack.push(key);\n\n try {\n return fn();\n } finally {\n dependencyStack.pop();\n }\n }\n\n function selectorPeek(store, state) {\n const cacheVal = cache.get(nodeKey => {\n !(typeof nodeKey === 'string') ? process.env.NODE_ENV !== \"production\" ? Recoil_invariant(false, 'Cache nodeKey is type string') : Recoil_invariant(false) : void 0;\n const peek = peekNodeLoadable$1(store, state, nodeKey);\n return peek === null || peek === void 0 ? void 0 : peek.contents;\n });\n return cacheVal;\n }\n\n function selectorGet(store, state) {\n return detectCircularDependencies(() => getSelectorValAndUpdatedDeps(store, state));\n }\n\n function invalidateSelector(state) {\n state.atomValues.delete(key);\n }\n\n function clearSelectorCache(store, treeState) {\n !(recoilValue != null) ? process.env.NODE_ENV !== \"production\" ? Recoil_invariant(false, 'Recoil Value can never be null') : Recoil_invariant(false) : void 0;\n\n for (const nodeKey of discoveredDependencyNodeKeys) {\n var _node$clearCache;\n\n const node = getNode$6(nodeKey);\n (_node$clearCache = node.clearCache) === null || _node$clearCache === void 0 ? void 0 : _node$clearCache.call(node, store, treeState);\n }\n\n invalidateSelector(treeState);\n cache.clear();\n markRecoilValueModified$1(store, recoilValue);\n }\n\n if (set != null) {\n /**\n * ES5 strict mode prohibits defining non-top-level function declarations,\n * so don't use function declaration syntax here\n */\n const selectorSet = (store, state, newValue) => {\n let syncSelectorSetFinished = false;\n const writes = new Map();\n\n function getRecoilValue({\n key: depKey\n }) {\n if (syncSelectorSetFinished) {\n throw Recoil_err('Recoil: Async selector sets are not currently supported.');\n }\n\n const loadable = getCachedNodeLoadable(store, state, depKey);\n\n if (loadable.state === 'hasValue') {\n return loadable.contents;\n } else if (loadable.state === 'loading') {\n throw new RecoilValueNotReady$2(depKey);\n } else {\n throw loadable.contents;\n }\n }\n\n function setRecoilState(recoilState, valueOrUpdater) {\n if (syncSelectorSetFinished) {\n throw Recoil_err('Recoil: Async selector sets are not currently supported.');\n }\n\n const setValue = typeof valueOrUpdater === 'function' ? // cast to any because we can't restrict type S from being a function itself without losing support for opaque types\n // flowlint-next-line unclear-type:off\n valueOrUpdater(getRecoilValue(recoilState)) : valueOrUpdater;\n const upstreamWrites = setNodeValue$3(store, state, recoilState.key, setValue);\n upstreamWrites.forEach((v, k) => writes.set(k, v));\n }\n\n function resetRecoilState(recoilState) {\n setRecoilState(recoilState, DEFAULT_VALUE$6);\n }\n\n const ret = set({\n set: setRecoilState,\n get: getRecoilValue,\n reset: resetRecoilState\n }, newValue); // set should be a void method, but if the user makes it `async`, then it\n // will return a Promise, which we don't currently support.\n\n if (ret !== undefined) {\n throw Recoil_isPromise(ret) ? Recoil_err('Recoil: Async selector sets are not currently supported.') : Recoil_err('Recoil: selector set should be a void function.');\n }\n\n syncSelectorSetFinished = true;\n return writes;\n };\n\n return recoilValue = registerNode$1({\n key,\n nodeType: 'selector',\n peek: selectorPeek,\n get: selectorGet,\n set: selectorSet,\n init: selectorInit,\n invalidate: invalidateSelector,\n clearCache: clearSelectorCache,\n shouldDeleteConfigOnRelease: selectorShouldDeleteConfigOnRelease,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n shouldRestoreFromSnapshots: false,\n retainedBy\n });\n } else {\n return recoilValue = registerNode$1({\n key,\n nodeType: 'selector',\n peek: selectorPeek,\n get: selectorGet,\n init: selectorInit,\n invalidate: invalidateSelector,\n clearCache: clearSelectorCache,\n shouldDeleteConfigOnRelease: selectorShouldDeleteConfigOnRelease,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n shouldRestoreFromSnapshots: false,\n retainedBy\n });\n }\n}\n/* eslint-enable no-redeclare */\n\n\nvar Recoil_selector = selector;\n\n// @fb-only: const {scopedAtom} = require('Recoil_ScopedAtom');\nconst {\n loadableWithError: loadableWithError$2,\n loadableWithPromise: loadableWithPromise$2,\n loadableWithValue: loadableWithValue$3\n} = Recoil_Loadable$1;\n\nconst {\n peekNodeInfo: peekNodeInfo$3\n} = Recoil_FunctionalCore;\n\nconst {\n DEFAULT_VALUE: DEFAULT_VALUE$7,\n DefaultValue: DefaultValue$2,\n getConfigDeletionHandler: getConfigDeletionHandler$2,\n registerNode: registerNode$2,\n setConfigDeletionHandler: setConfigDeletionHandler$1\n} = Recoil_Node;\n\nconst {\n isRecoilValue: isRecoilValue$4\n} = Recoil_RecoilValue$1;\n\nconst {\n getRecoilValueAsLoadable: getRecoilValueAsLoadable$4,\n markRecoilValueModified: markRecoilValueModified$2,\n setRecoilValue: setRecoilValue$4,\n setRecoilValueLoadable: setRecoilValueLoadable$3\n} = Recoil_RecoilValueInterface;\n\nconst {\n retainedByOptionWithDefault: retainedByOptionWithDefault$2\n} = Recoil_Retention;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction baseAtom(options) {\n const {\n key,\n persistence_UNSTABLE: persistence\n } = options;\n const retainedBy = retainedByOptionWithDefault$2(options.retainedBy_UNSTABLE);\n let liveStoresCount = 0;\n let defaultLoadable = Recoil_isPromise(options.default) ? loadableWithPromise$2(options.default.then(value => {\n defaultLoadable = loadableWithValue$3(value);\n return value;\n }).catch(error => {\n defaultLoadable = loadableWithError$2(error);\n throw error;\n })) : loadableWithValue$3(options.default);\n maybeFreezeValueOrPromise(options.default);\n let cachedAnswerForUnvalidatedValue = undefined; // Cleanup handlers for this atom\n // Rely on stable reference equality of the store to use it as a key per <RecoilRoot>\n\n const cleanupEffectsByStore = new Map();\n\n function maybeFreezeValueOrPromise(valueOrPromise) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.dangerouslyAllowMutability !== true) {\n if (Recoil_isPromise(valueOrPromise)) {\n return valueOrPromise.then(value => {\n Recoil_deepFreezeValue(value);\n return value;\n });\n } else {\n Recoil_deepFreezeValue(valueOrPromise);\n return valueOrPromise;\n }\n }\n }\n\n return valueOrPromise;\n }\n\n function wrapPendingPromise(store, promise) {\n const wrappedPromise = promise.then(value => {\n var _store$getState$nextT, _state$atomValues$get;\n\n const state = (_store$getState$nextT = store.getState().nextTree) !== null && _store$getState$nextT !== void 0 ? _store$getState$nextT : store.getState().currentTree;\n\n if (((_state$atomValues$get = state.atomValues.get(key)) === null || _state$atomValues$get === void 0 ? void 0 : _state$atomValues$get.contents) === wrappedPromise) {\n setRecoilValue$4(store, node, value);\n }\n\n return value;\n }).catch(error => {\n var _store$getState$nextT2, _state$atomValues$get2;\n\n const state = (_store$getState$nextT2 = store.getState().nextTree) !== null && _store$getState$nextT2 !== void 0 ? _store$getState$nextT2 : store.getState().currentTree;\n\n if (((_state$atomValues$get2 = state.atomValues.get(key)) === null || _state$atomValues$get2 === void 0 ? void 0 : _state$atomValues$get2.contents) === wrappedPromise) {\n setRecoilValueLoadable$3(store, node, loadableWithError$2(error));\n }\n\n throw error;\n });\n return wrappedPromise;\n }\n\n function initAtom(store, initState, trigger) {\n liveStoresCount++;\n const alreadyKnown = store.getState().knownAtoms.has(key);\n store.getState().knownAtoms.add(key); // Setup async defaults to notify subscribers when they resolve\n\n if (defaultLoadable.state === 'loading') {\n const notifyDefaultSubscribers = () => {\n var _store$getState$nextT3;\n\n const state = (_store$getState$nextT3 = store.getState().nextTree) !== null && _store$getState$nextT3 !== void 0 ? _store$getState$nextT3 : store.getState().currentTree;\n\n if (!state.atomValues.has(key)) {\n markRecoilValueModified$2(store, node);\n }\n };\n\n defaultLoadable.contents.then(notifyDefaultSubscribers).catch(notifyDefaultSubscribers);\n } // Run Atom Effects\n // This state is scoped by Store, since this is in the initAtom() closure\n\n\n let initValue = DEFAULT_VALUE$7;\n let pendingSetSelf = null;\n\n if (options.effects_UNSTABLE != null && !alreadyKnown) {\n let duringInit = true;\n\n function getLoadable(recoilValue) {\n // Normally we can just get the current value of another atom.\n // But for our own value we need to check if there is a pending\n // initialized value or get the fallback default value.\n if (duringInit && recoilValue.key === key && !(initValue instanceof DefaultValue$2)) {\n // Cast T to S\n const retValue = initValue; // flowlint-line unclear-type:off\n\n return retValue instanceof DefaultValue$2 ? defaultLoadable : // flowlint-line unclear-type:off\n Recoil_isPromise(retValue) ? loadableWithPromise$2(retValue.then(v => v instanceof DefaultValue$2 ? // Cast T to S\n defaultLoadable.toPromise() // flowlint-line unclear-type:off\n : v)) : loadableWithValue$3(retValue);\n }\n\n return getRecoilValueAsLoadable$4(store, recoilValue);\n }\n\n function getPromise(recoilValue) {\n return getLoadable(recoilValue).toPromise();\n }\n\n function getInfo_UNSTABLE(recoilValue) {\n var _store$getState$nextT4;\n\n const info = peekNodeInfo$3(store, (_store$getState$nextT4 = store.getState().nextTree) !== null && _store$getState$nextT4 !== void 0 ? _store$getState$nextT4 : store.getState().currentTree, recoilValue.key);\n return duringInit && recoilValue.key === key && !(initValue instanceof DefaultValue$2) ? { ...info,\n isSet: true,\n loadable: getLoadable(recoilValue)\n } : info;\n }\n\n const setSelf = effect => valueOrUpdater => {\n if (duringInit) {\n const currentValue = initValue instanceof DefaultValue$2 || Recoil_isPromise(initValue) ? defaultLoadable.state === 'hasValue' ? defaultLoadable.contents : DEFAULT_VALUE$7 : initValue;\n initValue = typeof valueOrUpdater === 'function' ? // cast to any because we can't restrict T from being a function without losing support for opaque types\n valueOrUpdater(currentValue) // flowlint-line unclear-type:off\n : valueOrUpdater;\n\n if (Recoil_isPromise(initValue)) {\n initValue = initValue.then(value => {\n // Avoid calling onSet() when setSelf() initializes with a Promise\n pendingSetSelf = {\n effect,\n value\n };\n return value;\n });\n }\n } else {\n if (Recoil_isPromise(valueOrUpdater)) {\n throw Recoil_err('Setting atoms to async values is not implemented.');\n }\n\n if (typeof valueOrUpdater !== 'function') {\n pendingSetSelf = {\n effect,\n value: valueOrUpdater\n };\n }\n\n setRecoilValue$4(store, node, typeof valueOrUpdater === 'function' ? currentValue => {\n const newValue = // cast to any because we can't restrict T from being a function without losing support for opaque types\n valueOrUpdater(currentValue); // flowlint-line unclear-type:off\n\n pendingSetSelf = {\n effect,\n value: newValue\n };\n return newValue;\n } : valueOrUpdater);\n }\n };\n\n const resetSelf = effect => () => setSelf(effect)(DEFAULT_VALUE$7);\n\n const onSet = effect => handler => {\n store.subscribeToTransactions(currentStore => {\n var _currentTree$atomValu;\n\n // eslint-disable-next-line prefer-const\n let {\n currentTree,\n previousTree\n } = currentStore.getState();\n\n if (!previousTree) {\n Recoil_recoverableViolation('Transaction subscribers notified without a next tree being present -- this is a bug in Recoil');\n previousTree = currentTree; // attempt to trundle on\n }\n\n const newLoadable = (_currentTree$atomValu = currentTree.atomValues.get(key)) !== null && _currentTree$atomValu !== void 0 ? _currentTree$atomValu : defaultLoadable;\n\n if (newLoadable.state === 'hasValue') {\n var _previousTree$atomVal, _pendingSetSelf, _pendingSetSelf2, _pendingSetSelf3;\n\n const newValue = newLoadable.contents;\n const oldLoadable = (_previousTree$atomVal = previousTree.atomValues.get(key)) !== null && _previousTree$atomVal !== void 0 ? _previousTree$atomVal : defaultLoadable;\n const oldValue = oldLoadable.state === 'hasValue' ? oldLoadable.contents : DEFAULT_VALUE$7; // TODO This isn't actually valid, use as a placeholder for now.\n // Ignore atom value changes that were set via setSelf() in the same effect.\n // We will still properly call the handler if there was a subsequent\n // set from something other than an atom effect which was batched\n // with the `setSelf()` call. However, we may incorrectly ignore\n // the handler if the subsequent batched call happens to set the\n // atom to the exact same value as the `setSelf()`. But, in that\n // case, it was kind of a noop, so the semantics are debatable..\n\n if (((_pendingSetSelf = pendingSetSelf) === null || _pendingSetSelf === void 0 ? void 0 : _pendingSetSelf.effect) !== effect || ((_pendingSetSelf2 = pendingSetSelf) === null || _pendingSetSelf2 === void 0 ? void 0 : _pendingSetSelf2.value) !== newValue) {\n handler(newValue, oldValue, !currentTree.atomValues.has(key));\n } else if (((_pendingSetSelf3 = pendingSetSelf) === null || _pendingSetSelf3 === void 0 ? void 0 : _pendingSetSelf3.effect) === effect) {\n pendingSetSelf = null;\n }\n }\n }, key);\n };\n\n for (const effect of (_options$effects_UNST = options.effects_UNSTABLE) !== null && _options$effects_UNST !== void 0 ? _options$effects_UNST : []) {\n var _options$effects_UNST;\n\n const cleanup = effect({\n node,\n trigger,\n setSelf: setSelf(effect),\n resetSelf: resetSelf(effect),\n onSet: onSet(effect),\n getPromise,\n getLoadable,\n getInfo_UNSTABLE\n });\n\n if (cleanup != null) {\n var _cleanupEffectsByStor;\n\n cleanupEffectsByStore.set(store, [...((_cleanupEffectsByStor = cleanupEffectsByStore.get(store)) !== null && _cleanupEffectsByStor !== void 0 ? _cleanupEffectsByStor : []), cleanup]);\n }\n }\n\n duringInit = false;\n } // Mutate initial state in place since we know there are no other subscribers\n // since we are the ones initializing on first use.\n\n\n if (!(initValue instanceof DefaultValue$2)) {\n var _store$getState$nextT5;\n\n const frozenInitValue = maybeFreezeValueOrPromise(initValue);\n const initLoadable = Recoil_isPromise(frozenInitValue) ? loadableWithPromise$2(wrapPendingPromise(store, frozenInitValue)) : loadableWithValue$3(frozenInitValue);\n initState.atomValues.set(key, initLoadable); // If there is a pending transaction, then also mutate the next state tree.\n // This could happen if the atom was first initialized in an action that\n // also updated some other atom's state.\n\n (_store$getState$nextT5 = store.getState().nextTree) === null || _store$getState$nextT5 === void 0 ? void 0 : _store$getState$nextT5.atomValues.set(key, initLoadable);\n }\n\n return () => {\n var _cleanupEffectsByStor2;\n\n liveStoresCount--;\n (_cleanupEffectsByStor2 = cleanupEffectsByStore.get(store)) === null || _cleanupEffectsByStor2 === void 0 ? void 0 : _cleanupEffectsByStor2.forEach(cleanup => cleanup());\n cleanupEffectsByStore.delete(store);\n store.getState().knownAtoms.delete(key); // FIXME remove knownAtoms?\n };\n }\n\n function peekAtom(_store, state) {\n var _ref, _state$atomValues$get3;\n\n return (_ref = (_state$atomValues$get3 = state.atomValues.get(key)) !== null && _state$atomValues$get3 !== void 0 ? _state$atomValues$get3 : cachedAnswerForUnvalidatedValue) !== null && _ref !== void 0 ? _ref : defaultLoadable;\n }\n\n function getAtom(_store, state) {\n if (state.atomValues.has(key)) {\n // Atom value is stored in state:\n return Recoil_nullthrows(state.atomValues.get(key));\n } else if (state.nonvalidatedAtoms.has(key)) {\n // Atom value is stored but needs validation before use.\n // We might have already validated it and have a cached validated value:\n if (cachedAnswerForUnvalidatedValue != null) {\n return cachedAnswerForUnvalidatedValue;\n }\n\n if (persistence == null) {\n Recoil_expectationViolation(`Tried to restore a persisted value for atom ${key} but it has no persistence settings.`);\n return defaultLoadable;\n }\n\n const nonvalidatedValue = state.nonvalidatedAtoms.get(key);\n const validatorResult = persistence.validator(nonvalidatedValue, DEFAULT_VALUE$7);\n const validatedValueLoadable = validatorResult instanceof DefaultValue$2 ? defaultLoadable : loadableWithValue$3(validatorResult);\n cachedAnswerForUnvalidatedValue = validatedValueLoadable;\n return cachedAnswerForUnvalidatedValue;\n } else {\n return defaultLoadable;\n }\n }\n\n function invalidateAtom() {\n cachedAnswerForUnvalidatedValue = undefined;\n }\n\n function setAtom(_store, state, newValue) {\n // Bail out if we're being set to the existing value, or if we're being\n // reset but have no stored value (validated or unvalidated) to reset from:\n if (state.atomValues.has(key)) {\n const existing = Recoil_nullthrows(state.atomValues.get(key));\n\n if (existing.state === 'hasValue' && newValue === existing.contents) {\n return new Map();\n }\n } else if (!state.nonvalidatedAtoms.has(key) && newValue instanceof DefaultValue$2) {\n return new Map();\n }\n\n maybeFreezeValueOrPromise(newValue);\n cachedAnswerForUnvalidatedValue = undefined; // can be released now if it was previously in use\n\n return new Map().set(key, loadableWithValue$3(newValue));\n }\n\n function shouldDeleteConfigOnReleaseAtom() {\n return getConfigDeletionHandler$2(key) !== undefined && liveStoresCount <= 0;\n }\n\n const node = registerNode$2({\n key,\n nodeType: 'atom',\n peek: peekAtom,\n get: getAtom,\n set: setAtom,\n init: initAtom,\n invalidate: invalidateAtom,\n shouldDeleteConfigOnRelease: shouldDeleteConfigOnReleaseAtom,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n persistence_UNSTABLE: options.persistence_UNSTABLE ? {\n type: options.persistence_UNSTABLE.type,\n backButton: options.persistence_UNSTABLE.backButton\n } : undefined,\n shouldRestoreFromSnapshots: true,\n retainedBy\n });\n return node;\n} // prettier-ignore\n\n\nfunction atom(options) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options.key !== 'string') {\n throw Recoil_err('A key option with a unique string value must be provided when creating an atom.');\n }\n\n if (!('default' in options)) {\n throw Recoil_err('A default value must be specified when creating an atom.');\n }\n }\n\n const {\n default: optionsDefault,\n // @fb-only: scopeRules_APPEND_ONLY_READ_THE_DOCS,\n ...restOptions\n } = options;\n\n if (isRecoilValue$4(optionsDefault) // Continue to use atomWithFallback for promise defaults for scoped atoms\n // for now, since scoped atoms don't support async defaults\n // @fb-only: || (isPromise(optionsDefault) && scopeRules_APPEND_ONLY_READ_THE_DOCS)\n ) {\n return atomWithFallback({ ...restOptions,\n default: optionsDefault // @fb-only: scopeRules_APPEND_ONLY_READ_THE_DOCS,\n\n }); // @fb-only: } else if (scopeRules_APPEND_ONLY_READ_THE_DOCS && !isPromise(optionsDefault)) {\n // @fb-only: return scopedAtom<T>({\n // @fb-only: ...restOptions,\n // @fb-only: default: optionsDefault,\n // @fb-only: scopeRules_APPEND_ONLY_READ_THE_DOCS,\n // @fb-only: });\n } else {\n return baseAtom({ ...restOptions,\n default: optionsDefault\n });\n }\n}\n\nfunction atomWithFallback(options) {\n const base = atom({ ...options,\n default: DEFAULT_VALUE$7,\n persistence_UNSTABLE: options.persistence_UNSTABLE === undefined ? undefined : { ...options.persistence_UNSTABLE,\n validator: storedValue => storedValue instanceof DefaultValue$2 ? storedValue : Recoil_nullthrows(options.persistence_UNSTABLE).validator(storedValue, DEFAULT_VALUE$7)\n },\n // TODO Hack for now.\n // flowlint-next-line unclear-type: off\n effects_UNSTABLE: options.effects_UNSTABLE\n });\n const sel = Recoil_selector({\n key: `${options.key}__withFallback`,\n get: ({\n get\n }) => {\n const baseValue = get(base);\n return baseValue instanceof DefaultValue$2 ? options.default : baseValue;\n },\n set: ({\n set\n }, newValue) => set(base, newValue),\n dangerouslyAllowMutability: options.dangerouslyAllowMutability\n });\n setConfigDeletionHandler$1(sel.key, getConfigDeletionHandler$2(options.key));\n return sel;\n}\n\nvar Recoil_atom = atom;\n\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 * @emails oncall+recoil\n * \n * @format\n */\n\nclass MapCache {\n constructor(options) {\n var _options$mapKey;\n\n _defineProperty(this, \"_map\", void 0);\n\n _defineProperty(this, \"_keyMapper\", void 0);\n\n this._map = new Map();\n this._keyMapper = (_options$mapKey = options === null || options === void 0 ? void 0 : options.mapKey) !== null && _options$mapKey !== void 0 ? _options$mapKey : v => v;\n }\n\n size() {\n return this._map.size;\n }\n\n has(key) {\n return this._map.has(this._keyMapper(key));\n }\n\n get(key) {\n return this._map.get(this._keyMapper(key));\n }\n\n set(key, val) {\n this._map.set(this._keyMapper(key), val);\n }\n\n delete(key) {\n this._map.delete(this._keyMapper(key));\n }\n\n clear() {\n this._map.clear();\n }\n\n}\n\nvar Recoil_MapCache = {\n MapCache\n};\n\nvar Recoil_MapCache_1 = Recoil_MapCache.MapCache;\n\nvar Recoil_MapCache$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MapCache: Recoil_MapCache_1\n});\n\nconst {\n LRUCache: LRUCache$2\n} = Recoil_LRUCache$1;\n\nconst {\n MapCache: MapCache$1\n} = Recoil_MapCache$1;\n\nconst defaultPolicy$1 = {\n equality: 'reference',\n eviction: 'none',\n maxSize: Infinity\n};\n\nfunction cacheFromPolicy({\n equality = defaultPolicy$1.equality,\n eviction = defaultPolicy$1.eviction,\n maxSize = defaultPolicy$1.maxSize\n} = defaultPolicy$1) {\n const valueMapper = getValueMapper$1(equality);\n const cache = getCache(eviction, maxSize, valueMapper);\n return cache;\n}\n\nfunction getValueMapper$1(equality) {\n switch (equality) {\n case 'reference':\n return val => val;\n\n case 'value':\n return val => Recoil_stableStringify(val);\n }\n\n throw Recoil_err(`Unrecognized equality policy ${equality}`);\n}\n\nfunction getCache(eviction, maxSize, mapKey) {\n switch (eviction) {\n case 'keep-all':\n // $FlowFixMe[method-unbinding]\n return new MapCache$1({\n mapKey\n });\n\n case 'lru':\n // $FlowFixMe[method-unbinding]\n return new LRUCache$2({\n mapKey,\n maxSize: Recoil_nullthrows(maxSize)\n });\n\n case 'most-recent':\n // $FlowFixMe[method-unbinding]\n return new LRUCache$2({\n mapKey,\n maxSize: 1\n });\n }\n\n throw Recoil_err(`Unrecognized eviction policy ${eviction}`);\n}\n\nvar Recoil_cacheFromPolicy = cacheFromPolicy;\n\nconst {\n setConfigDeletionHandler: setConfigDeletionHandler$2\n} = Recoil_Node;\n\n\n\n\n\n// Process scopeRules to handle any entries which are functions taking parameters\n// prettier-ignore\n// @fb-only: function mapScopeRules<P>(\n// @fb-only: scopeRules?: ParameterizedScopeRules<P>,\n// @fb-only: param: P,\n// @fb-only: ): ScopeRules | void {\n// @fb-only: return scopeRules?.map(rule =>\n// @fb-only: Array.isArray(rule)\n// @fb-only: ? rule.map(entry => (typeof entry === 'function' ? entry(param) : entry))\n// @fb-only: : rule,\n// @fb-only: );\n// @fb-only: }\n\n/*\nA function which returns an atom based on the input parameter.\n\nEach unique parameter returns a unique atom. E.g.,\n\n const f = atomFamily(...);\n f({a: 1}) => an atom\n f({a: 2}) => a different atom\n\nThis allows components to persist local, private state using atoms. Each\ninstance of the component may have a different key, which it uses as the\nparameter for a family of atoms; in this way, each component will have\nits own atom not shared by other instances. These state keys may be composed\ninto children's state keys as well.\n*/\nfunction atomFamily(options) {\n var _options$cachePolicyF, _options$cachePolicyF2;\n\n const atomCache = Recoil_cacheFromPolicy({\n equality: (_options$cachePolicyF = (_options$cachePolicyF2 = options.cachePolicyForParams_UNSTABLE) === null || _options$cachePolicyF2 === void 0 ? void 0 : _options$cachePolicyF2.equality) !== null && _options$cachePolicyF !== void 0 ? _options$cachePolicyF : 'value',\n eviction: 'keep-all'\n }); // Simple atomFamily implementation to cache individual atoms based\n // on the parameter value equality.\n\n return params => {\n var _stableStringify;\n\n const cachedAtom = atomCache.get(params);\n\n if (cachedAtom != null) {\n return cachedAtom;\n }\n\n const {\n cachePolicyForParams_UNSTABLE,\n ...atomOptions\n } = options;\n const newAtom = Recoil_atom({ ...atomOptions,\n key: `${options.key}__${(_stableStringify = Recoil_stableStringify(params)) !== null && _stableStringify !== void 0 ? _stableStringify : 'void'}`,\n default: typeof options.default === 'function' ? // The default was parameterized\n // Flow doesn't know that T isn't a function, so we need to case to any\n options.default(params) // flowlint-line unclear-type:off\n : // Default may be a static value, promise, or RecoilValue\n options.default,\n retainedBy_UNSTABLE: typeof options.retainedBy_UNSTABLE === 'function' ? options.retainedBy_UNSTABLE(params) : options.retainedBy_UNSTABLE,\n effects_UNSTABLE: typeof options.effects_UNSTABLE === 'function' ? options.effects_UNSTABLE(params) : options.effects_UNSTABLE // prettier-ignore\n // @fb-only: scopeRules_APPEND_ONLY_READ_THE_DOCS: mapScopeRules(\n // @fb-only: options.scopeRules_APPEND_ONLY_READ_THE_DOCS,\n // @fb-only: params,\n // @fb-only: ),\n\n });\n atomCache.set(params, newAtom);\n setConfigDeletionHandler$2(newAtom.key, () => {\n atomCache.delete(params);\n });\n return newAtom;\n };\n}\n\nvar Recoil_atomFamily = atomFamily;\n\nconst {\n setConfigDeletionHandler: setConfigDeletionHandler$3\n} = Recoil_Node;\n\n\n\n // Keep in mind the parameter needs to be serializable as a cahche key\n// using Recoil_stableStringify\n\n\n// Add a unique index to each selector in case the cache implementation allows\n// duplicate keys based on equivalent stringified parameters\nlet nextIndex = 0;\n/* eslint-disable no-redeclare */\n\n// Return a function that returns members of a family of selectors of the same type\n// E.g.,\n//\n// const s = selectorFamily(...);\n// s({a: 1}) => a selector\n// s({a: 2}) => a different selector\n//\n// By default, the selectors are distinguished by distinct values of the\n// parameter based on value equality, not reference equality. This allows using\n// object literals or other equivalent objects at callsites to not create\n// duplicate cache entries. This behavior may be overridden with the\n// cacheImplementationForParams option.\nfunction selectorFamily(options) {\n var _options$cachePolicyF, _options$cachePolicyF2;\n\n const selectorCache = Recoil_cacheFromPolicy({\n equality: (_options$cachePolicyF = (_options$cachePolicyF2 = options.cachePolicyForParams_UNSTABLE) === null || _options$cachePolicyF2 === void 0 ? void 0 : _options$cachePolicyF2.equality) !== null && _options$cachePolicyF !== void 0 ? _options$cachePolicyF : 'value',\n eviction: 'keep-all'\n });\n return params => {\n var _stableStringify;\n\n const cachedSelector = selectorCache.get(params);\n\n if (cachedSelector != null) {\n return cachedSelector;\n }\n\n const myKey = `${options.key}__selectorFamily/${(_stableStringify = Recoil_stableStringify(params, {\n // It is possible to use functions in parameters if the user uses\n // a cache with reference equality thanks to the incrementing index.\n allowFunctions: true\n })) !== null && _stableStringify !== void 0 ? _stableStringify : 'void'}/${nextIndex++}`; // Append index in case values serialize to the same key string\n\n const myGet = callbacks => options.get(params)(callbacks);\n\n const myCachePolicy = options.cachePolicy_UNSTABLE;\n const retainedBy = typeof options.retainedBy_UNSTABLE === 'function' ? options.retainedBy_UNSTABLE(params) : options.retainedBy_UNSTABLE;\n let newSelector;\n\n if (options.set != null) {\n const set = options.set;\n\n const mySet = (callbacks, newValue) => set(params)(callbacks, newValue);\n\n newSelector = Recoil_selector({\n key: myKey,\n get: myGet,\n set: mySet,\n cachePolicy_UNSTABLE: myCachePolicy,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n retainedBy_UNSTABLE: retainedBy\n });\n } else {\n newSelector = Recoil_selector({\n key: myKey,\n get: myGet,\n cachePolicy_UNSTABLE: myCachePolicy,\n dangerouslyAllowMutability: options.dangerouslyAllowMutability,\n retainedBy_UNSTABLE: retainedBy\n });\n }\n\n selectorCache.set(params, newSelector);\n setConfigDeletionHandler$3(newSelector.key, () => {\n selectorCache.delete(params);\n });\n return newSelector;\n };\n}\n/* eslint-enable no-redeclare */\n\n\nvar Recoil_selectorFamily = selectorFamily;\n\n// flowlint-next-line unclear-type:off\n\n\nconst constantSelector = Recoil_selectorFamily({\n key: '__constant',\n get: constant => () => constant,\n cachePolicyForParams_UNSTABLE: {\n equality: 'reference'\n }\n}); // Function that returns a selector which always produces the\n// same constant value. It may be called multiple times with the\n// same value, based on reference equality, and will provide the\n// same selector.\n\nfunction constSelector(constant) {\n return constantSelector(constant);\n}\n\nvar Recoil_constSelector = constSelector;\n\n// flowlint-next-line unclear-type:off\n\n\nconst throwingSelector = Recoil_selectorFamily({\n key: '__error',\n get: message => () => {\n throw Recoil_err(message);\n },\n // TODO Why?\n cachePolicyForParams_UNSTABLE: {\n equality: 'reference'\n }\n}); // Function that returns a selector which always throws an error\n// with the provided message.\n\nfunction errorSelector(message) {\n return throwingSelector(message);\n}\n\nvar Recoil_errorSelector = errorSelector;\n\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 * Wraps another recoil value and prevents writing to it.\n *\n * @emails oncall+recoil\n * \n * @format\n */\n\nfunction readOnlySelector(atom) {\n // flowlint-next-line unclear-type: off\n return atom;\n}\n\nvar Recoil_readOnlySelector = readOnlySelector;\n\nconst {\n loadableWithError: loadableWithError$3,\n loadableWithPromise: loadableWithPromise$3,\n loadableWithValue: loadableWithValue$4\n} = Recoil_Loadable$1;\n\n\n\n /////////////////\n// TRUTH TABLE\n/////////////////\n// Dependencies waitForNone waitForAny waitForAll waitForAllSettled\n// [loading, loading] [Promise, Promise] Promise Promise Promise\n// [value, loading] [value, Promise] [value, Promise] Promise Promise\n// [value, value] [value, value] [value, value] [value, value] [value, value]\n//\n// [error, loading] [Error, Promise] [Error, Promise] Error Promise\n// [error, error] [Error, Error] [Error, Error] Error [error, error]\n// [value, error] [value, Error] [value, Error] Error [value, error]\n// Issue parallel requests for all dependencies and return the current\n// status if they have results, have some error, or are still pending.\n\n\nfunction concurrentRequests(getRecoilValue, deps) {\n const results = Array(deps.length).fill(undefined);\n const exceptions = Array(deps.length).fill(undefined);\n\n for (const [i, dep] of deps.entries()) {\n try {\n results[i] = getRecoilValue(dep);\n } catch (e) {\n // exceptions can either be Promises of pending results or real errors\n exceptions[i] = e;\n }\n }\n\n return [results, exceptions];\n}\n\nfunction isError(exp) {\n return exp != null && !Recoil_isPromise(exp);\n}\n\nfunction unwrapDependencies(dependencies) {\n return Array.isArray(dependencies) ? dependencies : Object.getOwnPropertyNames(dependencies).map(key => dependencies[key]);\n}\n\nfunction wrapResults(dependencies, results) {\n return Array.isArray(dependencies) ? results : // Object.getOwnPropertyNames() has consistent key ordering with ES6\n Object.getOwnPropertyNames(dependencies).reduce((out, key, idx) => ({ ...out,\n [key]: results[idx]\n }), {});\n}\n\nfunction wrapLoadables(dependencies, results, exceptions) {\n const output = exceptions.map((exception, idx) => exception == null ? loadableWithValue$4(results[idx]) : Recoil_isPromise(exception) ? loadableWithPromise$3(exception) : loadableWithError$3(exception));\n return wrapResults(dependencies, output);\n}\n\nfunction combineAsyncResultsWithSyncResults(syncResults, asyncResults) {\n return asyncResults.map((result, idx) =>\n /**\n * it's important we use === undefined as opposed to == null, because the\n * resolved value of the async promise could be `null`, in which case we\n * don't want to use syncResults[idx], which would be undefined. If async\n * promise resolves to `undefined`, that's ok because `syncResults[idx]`\n * will also be `undefined`. That's a little hacky, but it works.\n */\n result === undefined ? syncResults[idx] : result);\n} // Selector that requests all dependencies in parallel and immediately returns\n// current results without waiting.\n\n\nconst waitForNone = Recoil_selectorFamily({\n key: '__waitForNone',\n get: dependencies => ({\n get\n }) => {\n // Issue requests for all dependencies in parallel.\n const deps = unwrapDependencies(dependencies);\n const [results, exceptions] = concurrentRequests(get, deps); // Always return the current status of the results; never block.\n\n return wrapLoadables(dependencies, results, exceptions);\n },\n dangerouslyAllowMutability: true\n}); // Selector that requests all dependencies in parallel and waits for at least\n// one to be available before returning results. It will only error if all\n// dependencies have errors.\n\nconst waitForAny = Recoil_selectorFamily({\n key: '__waitForAny',\n get: dependencies => ({\n get\n }) => {\n // Issue requests for all dependencies in parallel.\n // Exceptions can either be Promises of pending results or real errors\n const deps = unwrapDependencies(dependencies);\n const [results, exceptions] = concurrentRequests(get, deps); // If any results are available, value or error, return the current status\n\n if (exceptions.some(exp => !Recoil_isPromise(exp))) {\n return wrapLoadables(dependencies, results, exceptions);\n } // Otherwise, return a promise that will resolve when the next result is\n // available, whichever one happens to be next. But, if all pending\n // dependencies end up with errors, then reject the promise.\n\n\n return new Promise(resolve => {\n for (const [i, exp] of exceptions.entries()) {\n if (Recoil_isPromise(exp)) {\n exp.then(result => {\n results[i] = result;\n exceptions[i] = undefined;\n resolve(wrapLoadables(dependencies, results, exceptions));\n }).catch(error => {\n exceptions[i] = error;\n resolve(wrapLoadables(dependencies, results, exceptions));\n });\n }\n }\n });\n },\n dangerouslyAllowMutability: true\n}); // Selector that requests all dependencies in parallel and waits for all to be\n// available before returning a value. It will error if any dependencies error.\n\nconst waitForAll = Recoil_selectorFamily({\n key: '__waitForAll',\n get: dependencies => ({\n get\n }) => {\n // Issue requests for all dependencies in parallel.\n // Exceptions can either be Promises of pending results or real errors\n const deps = unwrapDependencies(dependencies);\n const [results, exceptions] = concurrentRequests(get, deps); // If all results are available, return the results\n\n if (exceptions.every(exp => exp == null)) {\n return wrapResults(dependencies, results);\n } // If we have any errors, throw the first error\n\n\n const error = exceptions.find(isError);\n\n if (error != null) {\n throw error;\n } // Otherwise, return a promise that will resolve when all results are available\n\n\n return Promise.all(exceptions).then(exceptionResults => wrapResults(dependencies, combineAsyncResultsWithSyncResults(results, exceptionResults)));\n },\n dangerouslyAllowMutability: true\n});\nconst waitForAllSettled = Recoil_selectorFamily({\n key: '__waitForAllSettled',\n get: dependencies => ({\n get\n }) => {\n // Issue requests for all dependencies in parallel.\n // Exceptions can either be Promises of pending results or real errors\n const deps = unwrapDependencies(dependencies);\n const [results, exceptions] = concurrentRequests(get, deps); // If all results are available, return the results\n\n if (exceptions.every(exp => !Recoil_isPromise(exp))) {\n return wrapLoadables(dependencies, results, exceptions);\n } // Wait for all results to settle\n\n\n return Promise.all(exceptions.map((exp, i) => Recoil_isPromise(exp) ? exp.then(result => {\n results[i] = result;\n exceptions[i] = undefined;\n }).catch(error => {\n results[i] = undefined;\n exceptions[i] = error;\n }) : null)) // Then wrap them as loadables\n .then(() => wrapLoadables(dependencies, results, exceptions));\n },\n dangerouslyAllowMutability: true\n});\nconst noWait = Recoil_selectorFamily({\n key: '__noWait',\n get: dependency => ({\n get\n }) => {\n try {\n return loadableWithValue$4(get(dependency));\n } catch (exception) {\n return Recoil_isPromise(exception) ? loadableWithPromise$3(exception) : loadableWithError$3(exception);\n }\n },\n dangerouslyAllowMutability: true\n});\nvar Recoil_WaitFor = {\n waitForNone,\n waitForAny,\n waitForAll,\n waitForAllSettled,\n noWait\n};\n\nconst {\n RecoilLoadable\n} = Recoil_Loadable$1;\n\nconst {\n DefaultValue: DefaultValue$3\n} = Recoil_Node;\n\nconst {\n RecoilRoot: RecoilRoot$2\n} = Recoil_RecoilRoot_react;\n\nconst {\n isRecoilValue: isRecoilValue$5\n} = Recoil_RecoilValue$1;\n\nconst {\n retentionZone: retentionZone$1\n} = Recoil_RetentionZone;\n\nconst {\n freshSnapshot: freshSnapshot$2\n} = Recoil_Snapshot$1;\n\nconst {\n useRecoilState: useRecoilState$1,\n useRecoilStateLoadable: useRecoilStateLoadable$1,\n useRecoilValue: useRecoilValue$1,\n useRecoilValueLoadable: useRecoilValueLoadable$1,\n useResetRecoilState: useResetRecoilState$1,\n useSetRecoilState: useSetRecoilState$1,\n useSetUnvalidatedAtomValues: useSetUnvalidatedAtomValues$1\n} = Recoil_Hooks;\n\nconst {\n useGotoRecoilSnapshot: useGotoRecoilSnapshot$2,\n useRecoilSnapshot: useRecoilSnapshot$1,\n useRecoilTransactionObserver: useRecoilTransactionObserver$1,\n useTransactionObservation_DEPRECATED: useTransactionObservation_DEPRECATED$1\n} = Recoil_SnapshotHooks;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n noWait: noWait$1,\n waitForAll: waitForAll$1,\n waitForAllSettled: waitForAllSettled$1,\n waitForAny: waitForAny$1,\n waitForNone: waitForNone$1\n} = Recoil_WaitFor;\n\nvar Recoil_index = {\n // Types\n DefaultValue: DefaultValue$3,\n isRecoilValue: isRecoilValue$5,\n RecoilLoadable,\n // Recoil Root\n RecoilRoot: RecoilRoot$2,\n useRecoilBridgeAcrossReactRoots_UNSTABLE: Recoil_useRecoilBridgeAcrossReactRoots,\n // Atoms/Selectors\n atom: Recoil_atom,\n selector: Recoil_selector,\n // Convenience Atoms/Selectors\n atomFamily: Recoil_atomFamily,\n selectorFamily: Recoil_selectorFamily,\n constSelector: Recoil_constSelector,\n errorSelector: Recoil_errorSelector,\n readOnlySelector: Recoil_readOnlySelector,\n // Concurrency Helpers for Atoms/Selectors\n noWait: noWait$1,\n waitForNone: waitForNone$1,\n waitForAny: waitForAny$1,\n waitForAll: waitForAll$1,\n waitForAllSettled: waitForAllSettled$1,\n // Hooks for Atoms/Selectors\n useRecoilValue: useRecoilValue$1,\n useRecoilValueLoadable: useRecoilValueLoadable$1,\n useRecoilState: useRecoilState$1,\n useRecoilStateLoadable: useRecoilStateLoadable$1,\n useSetRecoilState: useSetRecoilState$1,\n useResetRecoilState: useResetRecoilState$1,\n useGetRecoilValueInfo_UNSTABLE: Recoil_useGetRecoilValueInfo,\n useRecoilRefresher_UNSTABLE: Recoil_useRecoilRefresher,\n // Hooks for complex operations\n useRecoilCallback: Recoil_useRecoilCallback,\n useRecoilTransaction_UNSTABLE: Recoil_useRecoilTransaction,\n // Snapshots\n useGotoRecoilSnapshot: useGotoRecoilSnapshot$2,\n useRecoilSnapshot: useRecoilSnapshot$1,\n useRecoilTransactionObserver_UNSTABLE: useRecoilTransactionObserver$1,\n useTransactionObservation_UNSTABLE: useTransactionObservation_DEPRECATED$1,\n useSetUnvalidatedAtomValues_UNSTABLE: useSetUnvalidatedAtomValues$1,\n snapshot_UNSTABLE: freshSnapshot$2,\n // Memory Management\n useRetain: Recoil_useRetain,\n retentionZone: retentionZone$1\n};\nvar Recoil_index_1 = Recoil_index.DefaultValue;\nvar Recoil_index_2 = Recoil_index.isRecoilValue;\nvar Recoil_index_3 = Recoil_index.RecoilLoadable;\nvar Recoil_index_4 = Recoil_index.RecoilRoot;\nvar Recoil_index_5 = Recoil_index.useRecoilBridgeAcrossReactRoots_UNSTABLE;\nvar Recoil_index_6 = Recoil_index.atom;\nvar Recoil_index_7 = Recoil_index.selector;\nvar Recoil_index_8 = Recoil_index.atomFamily;\nvar Recoil_index_9 = Recoil_index.selectorFamily;\nvar Recoil_index_10 = Recoil_index.constSelector;\nvar Recoil_index_11 = Recoil_index.errorSelector;\nvar Recoil_index_12 = Recoil_index.readOnlySelector;\nvar Recoil_index_13 = Recoil_index.noWait;\nvar Recoil_index_14 = Recoil_index.waitForNone;\nvar Recoil_index_15 = Recoil_index.waitForAny;\nvar Recoil_index_16 = Recoil_index.waitForAll;\nvar Recoil_index_17 = Recoil_index.waitForAllSettled;\nvar Recoil_index_18 = Recoil_index.useRecoilValue;\nvar Recoil_index_19 = Recoil_index.useRecoilValueLoadable;\nvar Recoil_index_20 = Recoil_index.useRecoilState;\nvar Recoil_index_21 = Recoil_index.useRecoilStateLoadable;\nvar Recoil_index_22 = Recoil_index.useSetRecoilState;\nvar Recoil_index_23 = Recoil_index.useResetRecoilState;\nvar Recoil_index_24 = Recoil_index.useGetRecoilValueInfo_UNSTABLE;\nvar Recoil_index_25 = Recoil_index.useRecoilRefresher_UNSTABLE;\nvar Recoil_index_26 = Recoil_index.useRecoilCallback;\nvar Recoil_index_27 = Recoil_index.useRecoilTransaction_UNSTABLE;\nvar Recoil_index_28 = Recoil_index.useGotoRecoilSnapshot;\nvar Recoil_index_29 = Recoil_index.useRecoilSnapshot;\nvar Recoil_index_30 = Recoil_index.useRecoilTransactionObserver_UNSTABLE;\nvar Recoil_index_31 = Recoil_index.useTransactionObservation_UNSTABLE;\nvar Recoil_index_32 = Recoil_index.useSetUnvalidatedAtomValues_UNSTABLE;\nvar Recoil_index_33 = Recoil_index.snapshot_UNSTABLE;\nvar Recoil_index_34 = Recoil_index.useRetain;\nvar Recoil_index_35 = Recoil_index.retentionZone;\n\nexport default Recoil_index;\nexport { Recoil_index_1 as DefaultValue, Recoil_index_3 as RecoilLoadable, Recoil_index_4 as RecoilRoot, Recoil_index_6 as atom, Recoil_index_8 as atomFamily, Recoil_index_10 as constSelector, Recoil_index_11 as errorSelector, Recoil_index_2 as isRecoilValue, Recoil_index_13 as noWait, Recoil_index_12 as readOnlySelector, Recoil_index_35 as retentionZone, Recoil_index_7 as selector, Recoil_index_9 as selectorFamily, Recoil_index_33 as snapshot_UNSTABLE, Recoil_index_24 as useGetRecoilValueInfo_UNSTABLE, Recoil_index_28 as useGotoRecoilSnapshot, Recoil_index_5 as useRecoilBridgeAcrossReactRoots_UNSTABLE, Recoil_index_26 as useRecoilCallback, Recoil_index_25 as useRecoilRefresher_UNSTABLE, Recoil_index_29 as useRecoilSnapshot, Recoil_index_20 as useRecoilState, Recoil_index_21 as useRecoilStateLoadable, Recoil_index_30 as useRecoilTransactionObserver_UNSTABLE, Recoil_index_27 as useRecoilTransaction_UNSTABLE, Recoil_index_18 as useRecoilValue, Recoil_index_19 as useRecoilValueLoadable, Recoil_index_23 as useResetRecoilState, Recoil_index_34 as useRetain, Recoil_index_22 as useSetRecoilState, Recoil_index_32 as useSetUnvalidatedAtomValues_UNSTABLE, Recoil_index_31 as useTransactionObservation_UNSTABLE, Recoil_index_16 as waitForAll, Recoil_index_17 as waitForAllSettled, Recoil_index_15 as waitForAny, Recoil_index_14 as waitForNone };\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n\n return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n var _super = _createSuper(ResourceStore);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n var _super = _createSuper$1(Translator);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n\n if (key === undefined || key === null) {\n return false;\n }\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables);\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = '_zero';\n\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (!rule) {\n return [];\n }\n\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n\n return this.getSuffixRetroCompatible(rule, count);\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += safeValue.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread$3({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n\n var _opt$split = opt.split(':'),\n _opt$split2 = _slicedToArray(_opt$split, 2),\n key = _opt$split2[0],\n val = _opt$split2[1];\n\n if (val.trim() === 'false') formatOptions[key.trim()] = false;\n if (val.trim() === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val.trim())) formatOptions[key.trim()] = parseInt(val.trim(), 10);\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val.trim();\n });\n }\n }\n\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\n\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Formatter);\n\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: function number(val, lng, options) {\n return new Intl.NumberFormat(lng, options).format(val);\n },\n currency: function currency(val, lng, options) {\n return new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n })).format(val);\n },\n datetime: function datetime(val, lng, options) {\n return new Intl.DateTimeFormat(lng, _objectSpread$4({}, options)).format(val);\n },\n relativetime: function relativetime(val, lng, options) {\n return new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options)).format(val, options.range || 'day');\n },\n list: function list(val, lng, options) {\n return new Intl.ListFormat(lng, _objectSpread$4({}, options)).format(val);\n }\n };\n this.init(options);\n }\n\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name] = fc;\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n\n var formats = _format.split(this.formatSeparator);\n\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n\n if (_this.formats[formatName]) {\n var formatted = mem;\n\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n\n return mem;\n }, value);\n return result;\n }\n }]);\n\n return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n var _super = _createSuper$2(Connector);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n var _super = _createSuper$3(I18n);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!options.defaultNS && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var formatter;\n\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n for (var li = 0; li < _this4.languages.length; li++) {\n var lngInLngs = _this4.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n if (_this4.store.hasLanguageSomeTranslations(lngInLngs)) {\n _this4.resolvedLanguage = lngInLngs;\n break;\n }\n }\n };\n\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = keyPrefix ? \"\".concat(keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = name + '=' + value;\n\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n\n case 'lax':\n str += '; SameSite=Lax';\n break;\n\n case 'strict':\n str += '; SameSite=Strict';\n break;\n\n case 'none':\n str += '; SameSite=None';\n break;\n\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n};\n\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = name + '=';\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var query = window.location.search.substring(1);\n var params = query.split('&');\n\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n\n return found;\n }\n};\n\nvar hasLocalStorageSupport = null;\n\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n\n return hasLocalStorageSupport;\n};\n\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\n\nvar hasSessionStorageSupport = null;\n\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n\n return hasSessionStorageSupport;\n};\n\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n\n return found;\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var language = window.location.href.match(/(?:http[s]*\\:\\/\\/)*(.*?)\\.(?=[^\\/]*\\..{2,5})/gi);\n\n if (language instanceof Array) {\n if (typeof options.lookupFromSubdomainIndex === 'number') {\n found = language[options.lookupFromSubdomainIndex].replace('http://', '').replace('https://', '').replace('.', '');\n } else {\n found = language[0].replace('http://', '').replace('https://', '').replace('.', '');\n }\n }\n }\n\n return found;\n }\n};\n\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'] //cookieMinutes: 10,\n //cookieDomain: 'myDomain'\n\n };\n}\n\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Browser);\n\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n\n return Browser;\n}();\n\nBrowser.type = 'languageDetector';\n\nexport default Browser;\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true\n};\nvar i18nInstance;\nexport var I18nContext = React.createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n\n this.usedNamespaces = {};\n }\n\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { use } from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { initReactI18next } from 'react-i18next';\nimport de from './locales/de.json';\nimport el from './locales/el.json';\nimport en from './locales/en.json';\nimport es from './locales/es.json';\nimport fr from './locales/fr.json';\nimport it from './locales/it.json';\nimport pt_BR from './locales/pt-BR.json';\nimport ro from './locales/ro.json';\nconst resources = {\n de: { translation: de },\n el: { translation: el },\n en: { translation: en },\n es: { translation: es },\n fr: { translation: fr },\n it: { translation: it },\n 'pt-BR': { translation: pt_BR },\n ro: { translation: ro },\n};\nuse(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n fallbackLng: 'en',\n debug: false,\n interpolation: {\n escapeValue: false,\n },\n});\n","export function warn() {\n if (console && console.warn) {\n var _console;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'string') args[0] = \"react-i18next:: \".concat(args[0]);\n\n (_console = console).warn.apply(_console, args);\n }\n}\nvar alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn.apply(void 0, args);\n}\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, function () {\n if (i18n.isInitialized) {\n cb();\n } else {\n var initialized = function initialized() {\n setTimeout(function () {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n\n i18n.on('initialized', initialized);\n }\n });\n}\nexport function hasLoadedNamespace(ns, i18n) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n\n var lng = i18n.languages[0];\n var fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n var lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = i18n.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context';\nimport { warnOnce, loadNamespaces, hasLoadedNamespace } from './utils';\nexport function useTranslation(ns) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nFromProps = props.i18n;\n\n var _ref = useContext(I18nContext) || {},\n i18nFromContext = _ref.i18n,\n defaultNSFromContext = _ref.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n\n var notReadyT = function notReadyT(k) {\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n\n var retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n\n var i18nOptions = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), i18n.options.react), props);\n\n var useSuspense = i18nOptions.useSuspense,\n keyPrefix = i18nOptions.keyPrefix;\n var namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n var ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(function (n) {\n return hasLoadedNamespace(n, i18n, i18nOptions);\n });\n\n function getT() {\n return i18n.getFixedT(null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n\n var _useState = useState(getT),\n _useState2 = _slicedToArray(_useState, 2),\n t = _useState2[0],\n setT = _useState2[1];\n\n var isMounted = useRef(true);\n useEffect(function () {\n var bindI18n = i18nOptions.bindI18n,\n bindI18nStore = i18nOptions.bindI18nStore;\n isMounted.current = true;\n\n if (!ready && !useSuspense) {\n loadNamespaces(i18n, namespaces, function () {\n if (isMounted.current) setT(getT);\n });\n }\n\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return function () {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(function (e) {\n return i18n.off(e, boundReset);\n });\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(function (e) {\n return i18n.store.off(e, boundReset);\n });\n };\n }, [i18n, namespaces.join()]);\n var isInitial = useRef(true);\n useEffect(function () {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n\n isInitial.current = false;\n }, [i18n]);\n var ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(function (resolve) {\n loadNamespaces(i18n, namespaces, function () {\n resolve();\n });\n });\n}","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","var hasDocument = typeof document !== 'undefined';\nvar vendorEvents = [{\n hidden: 'hidden',\n event: 'visibilitychange',\n state: 'visibilityState'\n}, {\n hidden: 'webkitHidden',\n event: 'webkitvisibilitychange',\n state: 'webkitVisibilityState'\n}, {\n hidden: 'mozHidden',\n event: 'mozvisibilitychange',\n state: 'mozVisibilityState'\n}, {\n hidden: 'msHidden',\n event: 'msvisibilitychange',\n state: 'msVisibilityState'\n}, {\n hidden: 'oHidden',\n event: 'ovisibilitychange',\n state: 'oVisibilityState'\n}];\n\nexport var isSupported = hasDocument && Boolean(document.addEventListener);\n\nexport var visibility = function () {\n if (!isSupported) {\n return null;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = vendorEvents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n\n if (event.hidden in document) {\n return event;\n }\n }\n // otherwise it's not supported\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}();\n\nexport var getHandlerArgs = function getHandlerArgs() {\n if (!visibility) {\n return [true, 'visible'];\n }\n var hidden = visibility.hidden,\n state = visibility.state;\n\n return [!document[hidden], document[state]];\n};","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nimport { useEffect, useState } from 'react';\n\nimport { getHandlerArgs, isSupported, visibility } from './utils';\n\nvar isSupportedLocal = isSupported && visibility;\n\nvar usePageVisibility = function usePageVisibility() {\n var _getHandlerArgs = getHandlerArgs(),\n _getHandlerArgs2 = _slicedToArray(_getHandlerArgs, 1),\n initiallyVisible = _getHandlerArgs2[0];\n\n var _useState = useState(initiallyVisible),\n _useState2 = _slicedToArray(_useState, 2),\n isVisible = _useState2[0],\n setIsVisible = _useState2[1];\n\n useEffect(function () {\n if (isSupportedLocal) {\n var handler = function handler() {\n var _getHandlerArgs3 = getHandlerArgs(),\n _getHandlerArgs4 = _slicedToArray(_getHandlerArgs3, 1),\n currentlyVisible = _getHandlerArgs4[0];\n\n setIsVisible(currentlyVisible);\n };\n\n document.addEventListener(visibility.event, handler);\n\n return function () {\n document.removeEventListener(visibility.event, handler);\n };\n }\n }, []);\n\n return isVisible;\n};\n\nexport default usePageVisibility;","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Avatar.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Avatar.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport styles from './Avatar.module.scss';\nexport const Avatar = ({ avatar, name, style }) => {\n return _jsx(\"img\", { className: cn(styles.avatar, style), src: avatar, alt: name }, void 0);\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ExternalLink = () => {\n return (_jsx(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", fill: \"#000000\", viewBox: \"0 0 24 24\", width: \"16px\", height: \"16px\" }, { children: _jsx(\"path\", { d: \"M 19.980469 2.9902344 A 1.0001 1.0001 0 0 0 19.869141 3 L 15 3 A 1.0001 1.0001 0 1 0 15 5 L 17.585938 5 L 8.2929688 14.292969 A 1.0001 1.0001 0 1 0 9.7070312 15.707031 L 19 6.4140625 L 19 9 A 1.0001 1.0001 0 1 0 21 9 L 21 4.1269531 A 1.0001 1.0001 0 0 0 19.980469 2.9902344 z M 5 3 C 3.9069372 3 3 3.9069372 3 5 L 3 19 C 3 20.093063 3.9069372 21 5 21 L 19 21 C 20.093063 21 21 20.093063 21 19 L 21 13 A 1.0001 1.0001 0 1 0 19 13 L 19 19 L 5 19 L 5 5 L 11 5 A 1.0001 1.0001 0 1 0 11 3 L 5 3 z\" }, void 0) }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./LoadingIcon.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./LoadingIcon.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport styles from './LoadingIcon.module.scss';\nexport const LoadingIcon = () => _jsx(\"div\", { className: styles.loading }, void 0);\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./WebviewContainer.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./WebviewContainer.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useRef, useState } from 'react';\nimport { LoadingIcon } from '@/components/Icons/LoadingIcon';\nimport styles from './WebviewContainer.module.scss';\nexport const WebviewContainer = ({ webview }) => {\n const [hideLoader, setHideLoader] = useState(false);\n const ref = useRef(null);\n return (_jsx(_Fragment, { children: _jsxs(\"div\", Object.assign({ className: cn(styles.iframeWrapper, styles[webview.height || '']) }, { children: [_jsx(\"span\", Object.assign({ className: cn({ [styles.hide]: hideLoader }) }, { children: _jsx(LoadingIcon, {}, void 0) }), void 0), _jsx(\"iframe\", { ref: ref, id: webview.action_id, title: webview.name, src: webview.url, onLoad: () => setHideLoader(true), className: cn({ [styles.hide]: !hideLoader }) }, void 0)] }), void 0) }, void 0));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const CloseIcon = ({ size, color }) => {\n return (_jsx(\"svg\", Object.assign({ viewBox: \"0 0 24 24\", width: size, height: size, stroke: color, strokeWidth: \"2\", strokeLinecap: \"round\", fill: \"none\", shapeRendering: \"geometricPrecision\" }, { children: _jsx(\"path\", { d: \"M3.96 4l7.96 8-7.96 8M20.04 4l-7.96 8 7.96 8\" }, void 0) }), void 0));\n};\nCloseIcon.defaultProps = {\n size: 16,\n color: 'var(--text-secondary)',\n};\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-modules-typescript-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/sass-loader/dist/cjs.js!./WebviewModal.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-modules-typescript-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/sass-loader/dist/cjs.js!./WebviewModal.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useEffect } from 'react';\nimport ReactModal from 'react-modal';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport { CloseIcon } from '@/components/Icons/CloseIcon';\nimport { WebviewContainer } from '../WebviewContainer';\nimport styles from './WebviewModal.module.scss';\nexport const WebviewModal = ({ webview, showModal, handleCloseModal, avatar, }) => {\n const receiveMessage = (event) => {\n const message = event.data;\n switch (message) {\n case 'closeModal':\n handleCloseModal();\n break;\n }\n };\n useEffect(() => {\n const closeModal = (event) => receiveMessage(event);\n window.addEventListener('message', closeModal);\n return () => {\n window.removeEventListener('message', closeModal);\n };\n });\n return (_jsx(ReactModal, Object.assign({ id: `modal${webview.action_id}`, isOpen: showModal, contentLabel: \"webview\", className: cn(styles.modalContent, styles[webview.height ? webview.height : '']), overlayClassName: styles.modalOverlay, ariaHideApp: false, parentSelector: () => document.querySelector('.moveo_web_client > div:first-child') }, { children: _jsxs(\"div\", { children: [_jsxs(\"div\", Object.assign({ className: cn(styles.modalHeader) }, { children: [_jsx(Avatar, { avatar: avatar, style: styles.avatar }, void 0), _jsx(\"div\", Object.assign({ className: styles.modalLabel }, { children: webview.label }), void 0), _jsx(\"span\", Object.assign({ role: \"button\", tabIndex: 0, onClick: handleCloseModal, onKeyDown: handleCloseModal, className: styles.closeButton }, { children: _jsx(CloseIcon, {}, void 0) }), void 0)] }), void 0), _jsx(WebviewContainer, { webview: webview }, void 0)] }, void 0) }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Message.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Message.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./WebviewResponse.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./WebviewResponse.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback, useState } from 'react';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport { ExternalLink } from '@/components/Icons/ExternalLink';\nimport { WebviewContainer } from './WebviewContainer';\nimport { WebviewModal } from './WebviewModal/WebviewModal';\nimport messageStyles from '../Message.module.scss';\nimport styles from './WebviewResponse.module.scss';\nexport const WebviewResponse = ({ webview, avatar }) => {\n const { label, name, height } = webview;\n const [showModal, setShowModal] = useState(false);\n const handleCloseModal = useCallback(() => {\n setShowModal(false);\n }, []);\n const handleOpenModal = useCallback(() => {\n setShowModal(true);\n }, []);\n if (height === 'tall' || 'full') {\n return (_jsxs(\"li\", Object.assign({ className: cn(messageStyles.messageBubble, messageStyles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsx(\"div\", Object.assign({ className: styles.webviewContainer }, { children: _jsx(\"p\", { children: name }, void 0) }), void 0), _jsx(\"div\", Object.assign({ className: styles.webviewButtonContainer }, { children: _jsxs(\"button\", Object.assign({ onClick: handleOpenModal }, { children: [label, _jsx(\"span\", Object.assign({ className: styles.externalLinkIcon }, { children: _jsx(ExternalLink, {}, void 0) }), void 0)] }), void 0) }), void 0), _jsx(WebviewModal, { webview: webview, showModal: showModal, handleCloseModal: handleCloseModal, avatar: avatar }, void 0)] }), void 0));\n }\n return (_jsxs(\"li\", Object.assign({ className: cn(messageStyles.messageBubble, messageStyles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsx(WebviewContainer, { webview: webview }, void 0)] }), void 0));\n};\n","const config = {\n CHANNELS_HOST: 'https://channels-ws.moveo.ai',\n BRAIN_AVATAR: 'https://res.cloudinary.com/moveo-ai/image/upload/v1637720224/avatars/images_wgdkxm.jpg',\n TEST_INTEGRATION_ID: 'fake-integration-id',\n};\nexport const getConfig = () => config;\n","import { atom, selector, selectorFamily } from 'recoil';\nimport { getConfig } from '@/config';\nexport const sessionState = atom({\n key: 'sessionState',\n default: {},\n});\nexport const sessionIdSelector = selector({\n key: 'sessionIdSelector',\n get: ({ get }) => {\n const config = get(sessionState);\n return config === null || config === void 0 ? void 0 : config.session_id;\n },\n});\nexport const expiredStateSelector = selector({\n key: 'expiredStateSelector',\n get: ({ get }) => {\n const state = get(sessionState);\n return state === null || state === void 0 ? void 0 : state.is_expired;\n },\n});\nexport const forbiddenSessionSelector = selector({\n key: 'forbiddenSessionSelector',\n get: ({ get }) => {\n const state = get(sessionState);\n return state === null || state === void 0 ? void 0 : state.is_reconnect_forbidden;\n },\n});\nexport const contextState = atom({\n key: 'contextState',\n default: {},\n});\nexport const userSelector = selector({\n key: 'userSelector',\n get: ({ get }) => {\n const state = get(contextState);\n return state === null || state === void 0 ? void 0 : state.user;\n },\n});\n// Compose state and selector\nexport const composeState = atom({\n key: 'composeState',\n default: null,\n});\nexport const composeSelector = selector({\n key: 'composeSelector',\n get: ({ get }) => {\n const compose = get(composeState);\n if ((compose === null || compose === void 0 ? void 0 : compose.action) !== 'start') {\n return null;\n }\n // FIXME: Remove this once orchestrator sends a default avatar\n if (!compose.author_avatar) {\n compose.author_avatar = getConfig().BRAIN_AVATAR;\n }\n return compose;\n },\n});\n// This holds all the messages and activies in a chat window\n// It will include, user messages, agent or brain responses,\n// Member join/member left, handover, etc...\nexport const chatEventsState = atom({\n key: 'chatEventsState',\n default: [],\n});\nexport const chatEventCountSelector = selector({\n key: 'chatEventCountSelector',\n get: ({ get }) => {\n const events = get(chatEventsState);\n return events.length;\n },\n});\n/**\n * Return the last message sent by an agent or brain from the chat Events.\n * This will be used to know if we need to mark messages as read.\n */\nexport const lastMessageReceivedSelector = selector({\n key: 'lastMessageReceivedSelector',\n get: ({ get }) => {\n const events = get(chatEventsState);\n const messages = events.filter((e) => e.event_type === 'agent_message' || e.event_type === 'brain_message');\n return messages.pop();\n },\n});\n/**\n * Return true if the brain response from `eventId` comes before\n * the last user message.\n */\nexport const isResponseDisabledSelector = selectorFamily({\n key: 'lastUserMessageSelector',\n get: (eventId) => ({ get }) => {\n const events = get(chatEventsState);\n let found = false;\n for (const event of events) {\n if (found && event.event_type === 'user_message') {\n return true;\n }\n if (event.event_id === eventId) {\n found = true;\n }\n }\n return false;\n },\n});\n/**\n * Return true if the session includes a brain\n */\nexport const isTalkingToBrainSelector = selector({\n key: 'isTalkingToBrainSelector',\n get: ({ get }) => {\n const events = get(chatEventsState);\n let response = 0;\n events.forEach((e) => {\n if (e.event_type === 'member_join' && e.author_type === 'brain') {\n response += 1;\n }\n else if (e.event_type === 'member_leave' && e.author_type === 'brain') {\n response -= 1;\n }\n });\n return response > 0 || events.length === 0;\n },\n});\nexport const widgetState = atom({\n key: 'widgetState',\n default: {\n open: false,\n },\n});\nexport const isWidgetOpenSelector = selector({\n key: 'isWidgetOpenSelector',\n get: ({ get }) => {\n const state = get(widgetState);\n return state.open;\n },\n});\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport styles from './Message.module.scss';\nexport const Audio = ({ url, avatar }) => {\n return (_jsxs(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsx(\"audio\", { className: styles.audio, controls: true, src: url }, void 0)] }), void 0));\n};\n","import { urlAlphabet } from './url-alphabet/index.js'\nif (false) {\n if (\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative' &&\n typeof crypto === 'undefined'\n ) {\n throw new Error(\n 'React Native does not have a built-in secure random generator. ' +\n 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' +\n 'For secure IDs, import `react-native-get-random-values` ' +\n 'before Nano ID.'\n )\n }\n if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') {\n throw new Error(\n 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' +\n ' before importing Nano ID to fix IE 11 support'\n )\n }\n if (typeof crypto === 'undefined') {\n throw new Error(\n 'Your browser does not have secure random generator. ' +\n 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n )\n }\n}\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, size, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * size) / alphabet.length)\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n let byte = bytes[size] & 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte < 63) {\n id += '_'\n } else {\n id += '-'\n }\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","import { createContext } from 'react';\nexport const SocketContext = createContext(undefined);\nSocketContext.displayName = 'SocketContext';\n","export var SocketEvent;\n(function (SocketEvent) {\n SocketEvent[\"session_create\"] = \"session:create\";\n SocketEvent[\"session_created\"] = \"session:created\";\n SocketEvent[\"session_reconnect\"] = \"session:reconnect\";\n SocketEvent[\"session_reconnect_forbidden\"] = \"session:reconnect:forbidden\";\n SocketEvent[\"context_update\"] = \"session:context:update\";\n SocketEvent[\"context_updated\"] = \"session:context:updated\";\n SocketEvent[\"session_remove\"] = \"session:remove\";\n SocketEvent[\"session_removed\"] = \"session:removed\";\n SocketEvent[\"session_expired\"] = \"session:expired\";\n SocketEvent[\"member_leave\"] = \"conversation:member_leave\";\n SocketEvent[\"member_join\"] = \"conversation:member_join\";\n SocketEvent[\"message_send\"] = \"message:send\";\n SocketEvent[\"message_received\"] = \"message:received\";\n SocketEvent[\"message_brain_received\"] = \"message:brain_received\";\n SocketEvent[\"message_delivered\"] = \"message:delivered\";\n SocketEvent[\"message_read\"] = \"message:read\";\n SocketEvent[\"message_compose\"] = \"message:compose\";\n})(SocketEvent || (SocketEvent = {}));\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport uaParser from 'ua-parser-js';\nimport { getConfig } from './config';\n/**\n * Fetches the integration configuration\n * @param host the channels host\n * @param id the integration id\n * @returns\n */\nexport const fetchIntegration = (id, host) => __awaiter(void 0, void 0, void 0, function* () {\n const channelHost = host || getConfig().CHANNELS_HOST;\n const response = yield fetch(`${channelHost}/v1/web/${id}`);\n const text = yield response.text();\n const data = JSON.parse(text);\n if (response.ok) {\n return data;\n }\n throw new Error(`Error loading config from: ${channelHost}/${id}`);\n});\n/**\n * Promise that resolves when the document is ready.\n *\n */\nexport const onDocumentReady = () => new Promise((resolve) => {\n if (document.readyState === 'complete') {\n return resolve();\n }\n else {\n window.addEventListener('load', () => {\n return resolve();\n });\n }\n});\nexport const getWebUser = () => {\n var _a;\n const browserInfo = new uaParser();\n const browser = browserInfo.getBrowser();\n const browserName = `${browser.name} ${browser.version}`.trim();\n const device = browserInfo.getDevice();\n const deviceName = `${device.vendor} ${device.type}`.trim();\n const os = browserInfo.getOS();\n const osName = `${os.name} ${os.version}`.trim();\n return {\n language: (_a = navigator.language.split('-')) === null || _a === void 0 ? void 0 : _a[0],\n locales: navigator.languages,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n browser: browser.name ? browserName : undefined,\n device: device.type ? deviceName : undefined,\n platform: os.name ? osName : undefined,\n };\n};\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nexport const getTimestamp = () => Math.round(Date.now() / 1000);\nexport const KEYS = {\n UP: 'ArrowUp',\n DOWN: 'ArrowDown',\n ESC: 'Escape',\n ENTER: 'Enter',\n DELETE: 'Delete',\n SPACE: 'Space',\n TAB: 'Tab',\n};\nexport const emailRegExp = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\n","/* eslint-disable import/no-named-as-default */\nimport { nanoid } from 'nanoid';\nimport { useCallback, useContext } from 'react';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport { SocketContext } from '@/contexts/socket';\nimport { chatEventsState, sessionIdSelector, userSelector, } from '@/state/session';\nimport { SocketEvent } from '@/ts/socket';\nimport { getTimestamp } from '@/utils';\nexport const useSocket = () => {\n const socket = useContext(SocketContext);\n const user = useRecoilValue(userSelector);\n const session_id = useRecoilValue(sessionIdSelector);\n const setChatEvents = useSetRecoilState(chatEventsState);\n const sendMessage = useCallback(({ text }) => {\n socket === null || socket === void 0 ? void 0 : socket.emit(SocketEvent.message_send, {\n input: {\n text,\n },\n session_id,\n channel: 'web',\n });\n if (user) {\n // The context is masked for security reasons but some user fields\n // such as display_name, avatar and user_id are not masked\n const chatEvent = {\n event_id: nanoid(),\n event_type: 'user_message',\n author_name: user.display_name,\n author_avatar: user.avatar,\n author_id: user.user_id,\n created_at: getTimestamp(),\n text,\n };\n setChatEvents((currentState) => [...currentState, chatEvent]);\n }\n }, [socket, session_id, user, setChatEvents]);\n const sendCompose = useCallback((action) => {\n if (session_id) {\n socket === null || socket === void 0 ? void 0 : socket.volatile.emit(SocketEvent.message_compose, {\n session_id,\n action,\n });\n }\n }, [socket, session_id]);\n const markMessagesAsRead = useCallback(() => {\n socket === null || socket === void 0 ? void 0 : socket.volatile.emit(SocketEvent.message_read, {\n session_id,\n timestamp: getTimestamp(),\n });\n setChatEvents((currentState) => currentState.map((e) => {\n if (e.event_type === 'agent_message' ||\n e.event_type === 'brain_message') {\n return Object.assign(Object.assign({}, e), { read_at: e.read_at || getTimestamp() });\n }\n return e;\n }));\n }, [socket === null || socket === void 0 ? void 0 : socket.volatile, session_id, setChatEvents]);\n const updateContext = useCallback((context) => {\n socket === null || socket === void 0 ? void 0 : socket.emit(SocketEvent.context_update, {\n session_id,\n context,\n });\n }, [socket, session_id]);\n return {\n socket,\n sendMessage,\n sendCompose,\n markMessagesAsRead,\n updateContext,\n };\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./Card.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./Card.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport debug from 'debug';\nimport { Fragment, useCallback, useMemo } from 'react';\nimport styles from './Card.module.scss';\nconst log = debug('moveo:card');\nexport const CarouselCard = ({ card, onPostback, className, disabled, onWebviewClick, }) => {\n const { media, buttons, title, subtitle, default_action: defaultAction, } = card;\n const hasDefaultAction = defaultAction && Object.values(defaultAction).some((value) => value !== '');\n const resolvedMedia = useMemo(() => {\n switch (media.type) {\n case 'image':\n return _jsx(\"img\", { src: media.url, alt: title }, void 0);\n case 'video':\n // eslint-disable-next-line jsx-a11y/media-has-caption\n return _jsx(\"video\", { src: media.url, controls: true }, void 0);\n default:\n return null;\n }\n }, [media.type, media.url, title]);\n const content = useMemo(() => (_jsxs(\"div\", { children: [_jsx(\"div\", Object.assign({ className: styles.mediaContainer }, { children: resolvedMedia }), void 0), _jsxs(\"div\", Object.assign({ className: styles.headingContainer }, { children: [_jsx(\"h4\", Object.assign({ className: styles.title }, { children: title }), void 0), _jsx(\"p\", Object.assign({ className: styles.subtitle }, { children: subtitle }), void 0)] }), void 0)] }, void 0)), [resolvedMedia, subtitle, title]);\n const getButtonProps = useCallback((button, isDefaultAction) => {\n switch (button.type) {\n case 'postback':\n return (_jsx(\"button\", Object.assign({ className: !isDefaultAction ? styles.button : styles.defaultActionButton, disabled: disabled, onClick: () => {\n onPostback && onPostback(button.value);\n } }, { children: isDefaultAction ? content : button.label }), void 0));\n case 'url':\n return (_jsx(\"a\", Object.assign({ className: !isDefaultAction ? styles.button : '', href: button.url, target: \"_blank\", rel: \"noreferrer\" }, { children: isDefaultAction ? content : button.label }), void 0));\n case 'phone':\n return (_jsx(\"a\", Object.assign({ className: !isDefaultAction ? styles.button : '', href: `tel:${button.value}`, target: \"_blank\", rel: \"noreferrer\" }, { children: isDefaultAction ? content : button.label }), void 0));\n case 'webview':\n return (_jsx(\"button\", Object.assign({ className: !isDefaultAction ? styles.button : '', disabled: disabled, onClick: () => {\n onWebviewClick && onWebviewClick(button);\n } }, { children: isDefaultAction ? content : button.label }), void 0));\n default:\n log(`Unsupported button type: ${button}`, button);\n return null;\n }\n }, [content, disabled, onPostback, onWebviewClick]);\n return (_jsxs(\"div\", Object.assign({ className: cn(styles.card, className) }, { children: [hasDefaultAction ? _jsx(_Fragment, { children: getButtonProps(defaultAction, true) }, void 0) : content, _jsx(\"div\", Object.assign({ className: styles.buttonsContainer }, { children: buttons.map((button, i) => (_jsx(Fragment, { children: getButtonProps(button) }, `${i}_${button.type}`))) }), void 0)] }), void 0));\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./Carousel.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-modules-typescript-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./Carousel.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useKeenSlider } from 'keen-slider/react';\nimport { useCallback, useState } from 'react';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport { useSocket } from '@/hooks/useSocket';\nimport { WebviewModal } from '../Webview/WebviewModal/WebviewModal';\nimport { CarouselCard } from './Card';\nimport styles from './Carousel.module.scss';\nconst arrowIcon = (_jsx(\"svg\", Object.assign({ width: \"6\", height: \"10\", viewBox: \"0 0 6 10\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: _jsx(\"path\", { d: \"M5 1L1 5L5 9\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }, void 0) }), void 0));\nconst isMobile = window.innerWidth < 550;\nexport const Carousel = ({ avatar, message, disabled }) => {\n const { sendMessage } = useSocket();\n const [showWebview, setShowWebview] = useState(false);\n const [webview, setWebview] = useState(null);\n const [currentSlide, setCurrentSlide] = useState(1);\n const slidesPerView = isMobile ? 1.5 : 1;\n const [ref, slider] = useKeenSlider({\n spacing: 16,\n slidesPerView,\n slideChanged: (sl) => setCurrentSlide(sl.details().relativeSlide),\n });\n const handlePostback = useCallback((text) => {\n sendMessage({ text: text === null || text === void 0 ? void 0 : text.trim() });\n }, [sendMessage]);\n const handleWebviewClose = useCallback(() => {\n setShowWebview(false);\n }, []);\n const handleWebviewClick = useCallback((button) => {\n setWebview(button);\n setShowWebview(true);\n }, []);\n return (_jsxs(_Fragment, { children: [webview && (_jsx(WebviewModal, { webview: webview, showModal: showWebview, avatar: avatar, handleCloseModal: handleWebviewClose }, void 0)), _jsxs(\"li\", Object.assign({ className: styles.bubble }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsxs(\"div\", Object.assign({ className: cn(styles.container, { [styles.isMobile]: isMobile }) }, { children: [_jsx(\"div\", { children: _jsx(\"div\", Object.assign({ ref: ref, className: cn(styles.slider, 'keen-slider') }, { children: message.cards.map((card) => (_jsx(CarouselCard, { card: card, className: \"keen-slider__slide\", onPostback: handlePostback, disabled: disabled, onWebviewClick: handleWebviewClick }, `${card.title}-${card.media.url}`))) }), void 0) }, void 0), _jsxs(\"div\", Object.assign({ className: styles.legend }, { children: [slidesPerView >= 2 ? currentSlide + 2 : currentSlide + 1, \"/\", message.cards.length] }), void 0)] }), void 0), !isMobile && currentSlide > 0 && (_jsx(\"button\", Object.assign({ className: cn(styles.arrowBtn, styles.arrowBtnLeft), type: \"button\", onClick: slider === null || slider === void 0 ? void 0 : slider.prev }, { children: arrowIcon }), void 0)), !isMobile && currentSlide < message.cards.length - 1 && (_jsx(\"button\", Object.assign({ className: cn(styles.arrowBtn, styles.arrowBtnRight), type: \"button\", onClick: slider === null || slider === void 0 ? void 0 : slider.next }, { children: arrowIcon }), void 0))] }), void 0)] }, void 0));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const File = ({ size, color }) => {\n return (_jsx(\"svg\", Object.assign({ width: size, height: size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: _jsx(\"path\", { d: \"M21.44 11.05l-9.19 9.19a6.003 6.003 0 01-8.49-8.49l9.19-9.19a4.002 4.002 0 015.66 5.66l-9.2 9.19a2.001 2.001 0 11-2.83-2.83l8.49-8.48\", stroke: color, strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }, void 0) }), void 0));\n};\nFile.defaultProps = {\n size: 24,\n color: 'var($text-primary)',\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport { File as FileIcon } from '@/components/Icons/File';\nimport styles from './Message.module.scss';\nexport const File = ({ url, name, avatar }) => {\n return (_jsxs(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsxs(\"a\", Object.assign({ className: styles.file, title: name, href: url, target: \"_blank\", rel: \"noreferrer\" }, { children: [_jsx(FileIcon, {}, void 0), name || url] }), void 0)] }), void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport styles from './Message.module.scss';\nexport const Image = ({ name, url, avatar }) => {\n return (_jsxs(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsx(\"img\", { className: styles.image, src: url, alt: name }, void 0)] }), void 0));\n};\n","/**\n * Finite State Machine generation utilities\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n * @param {string|class} token to emit\n */\nfunction State(token) {\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n\n this.jr = [];\n this.jd = null;\n this.t = token;\n}\n/**\n * Take the transition from this state to the next one on the given input.\n * If this state does not exist deterministically, will create it.\n *\n * @param {string} input character or token to transition on\n * @param {string|class} [token] token or multi-token to emit when reaching\n * this state\n */\n\nState.prototype = {\n /**\n * @param {State} state\n */\n accepts: function accepts() {\n return !!this.t;\n },\n\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * @param {string} input character or token to transition on\n * @param {Token|State} tokenOrState transition to a matching state\n * @returns State taken after the given input\n */\n tt: function tt(input, tokenOrState) {\n if (tokenOrState && tokenOrState.j) {\n // State, default a basic transition\n this.j[input] = tokenOrState;\n return tokenOrState;\n } // See if there's a direct state transition (not regex or default)\n\n\n var token = tokenOrState;\n var nextState = this.j[input];\n\n if (nextState) {\n if (token) {\n nextState.t = token;\n } // overrwites previous token\n\n\n return nextState;\n } // Create a new state for this input\n\n\n nextState = makeState(); // Take the transition using the usual default mechanisms\n\n var templateState = takeT(this, input);\n\n if (templateState) {\n // Some default state transition, make a prime state based on this one\n Object.assign(nextState.j, templateState.j);\n nextState.jr.append(templateState.jr);\n nextState.jr = templateState.jd;\n nextState.t = token || templateState.t;\n } else {\n nextState.t = token;\n }\n\n this.j[input] = nextState;\n return nextState;\n }\n};\n/**\n * Utility function to create state without using new keyword (reduced file size\n * when minified)\n */\n\nvar makeState = function makeState() {\n return new State();\n};\n/**\n * Similar to previous except it is an accepting state that emits a token\n * @param {Token} token\n */\n\nvar makeAcceptingState = function makeAcceptingState(token) {\n return new State(token);\n};\n/**\n * Create a transition from startState to nextState via the given character\n * @param {State} startState transition from thie starting state\n * @param {Token} input via this input character or other concrete token type\n * @param {State} nextState to this next state\n */\n\nvar makeT = function makeT(startState, input, nextState) {\n // IMPLEMENTATION 1: Add to object (fast)\n if (!startState.j[input]) {\n startState.j[input] = nextState;\n } // IMPLEMENTATION 2: Add to array (slower)\n // startState.j.push([input, nextState]);\n\n};\n/**\n *\n * @param {State} startState stransition from this starting state\n * @param {RegExp} regex Regular expression to match on input\n * @param {State} nextState transition to this next state if there's are regex match\n */\n\nvar makeRegexT = function makeRegexT(startState, regex, nextState) {\n startState.jr.push([regex, nextState]);\n};\n/**\n * Follow the transition from the given character to the next state\n * @param {State} state\n * @param {Token} input character or other concrete token type to transition\n * @returns {?State} the next state, if any\n */\n\nvar takeT = function takeT(state, input) {\n // IMPLEMENTATION 1: Object key lookup (faster)\n var nextState = state.j[input];\n\n if (nextState) {\n return nextState;\n } // IMPLEMENTATION 2: List lookup (slower)\n // Loop through all the state transitions and see if there's a match\n // for (let i = 0; i < state.j.length; i++) {\n //\tconst val = state.j[i][0];\n //\tconst nextState = state.j[i][1];\n // \tif (input === val) { return nextState; }\n // }\n\n\n for (var i = 0; i < state.jr.length; i++) {\n var regex = state.jr[i][0];\n var _nextState = state.jr[i][1];\n\n if (regex.test(input)) {\n return _nextState;\n }\n } // Nowhere left to jump! Return default, if any\n\n\n return state.jd;\n};\n/**\n * Similar to makeT, but takes a list of characters that all transition to the\n * same nextState startState\n * @param {State} startState\n * @param {Array} chars\n * @param {State} nextState\n */\n\nvar makeMultiT = function makeMultiT(startState, chars, nextState) {\n for (var i = 0; i < chars.length; i++) {\n makeT(startState, chars[i], nextState);\n }\n};\n/**\n * Set up a list of multiple transitions at once. transitions is a list of\n * tuples, where the first element is the transitions character and the second\n * is the state to transition to\n * @param {State} startState\n * @param {Array} transitions\n */\n\nvar makeBatchT = function makeBatchT(startState, transitions) {\n for (var i = 0; i < transitions.length; i++) {\n var input = transitions[i][0];\n var nextState = transitions[i][1];\n makeT(startState, input, nextState);\n }\n};\n/**\n * For state machines that transition on characters only; given a non-empty\n * target string, generates states (if required) for each consecutive substring\n * of characters starting from the beginning of the string. The final state will\n * have a special value, as specified in options. All other \"in between\"\n * substrings will have a default end state.\n *\n * This turns the state machine into a Trie-like data structure (rather than a\n * intelligently-designed DFA).\n * @param {State} state\n * @param {string} str\n * @param {Token} endStateFactory\n * @param {Token} defaultStateFactory\n */\n\nvar makeChainT = function makeChainT(state, str, endState, defaultStateFactory) {\n var i = 0,\n len = str.length,\n nextState; // Find the next state without a jump to the next character\n\n while (i < len && (nextState = state.j[str[i]])) {\n state = nextState;\n i++;\n }\n\n if (i >= len) {\n return [];\n } // no new tokens were added\n\n\n while (i < len - 1) {\n nextState = defaultStateFactory();\n makeT(state, str[i], nextState);\n state = nextState;\n i++;\n }\n\n makeT(state, str[len - 1], endState);\n};\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n// A valid web domain token\nvar DOMAIN = 'DOMAIN';\nvar LOCALHOST = 'LOCALHOST'; // special case of domain\n// Valid top-level domain (see tlds.js)\n\nvar TLD = 'TLD'; // Any sequence of digits 0-9\n\nvar NUM = 'NUM'; // A web URL protocol. Supported types include\n// - `http:`\n// - `https:`\n// - `ftp:`\n// - `ftps:`\n// - user-defined custom protocols\n\nvar PROTOCOL = 'PROTOCOL'; // Start of the email URI protocol\n\nvar MAILTO = 'MAILTO'; // mailto:\n// Any number of consecutive whitespace characters that are not newline\n\nvar WS = 'WS'; // New line (unix style)\n\nvar NL = 'NL'; // \\n\n// Opening/closing bracket classes\n\nvar OPENBRACE = 'OPENBRACE'; // {\n\nvar OPENBRACKET = 'OPENBRACKET'; // [\n\nvar OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\n\nvar OPENPAREN = 'OPENPAREN'; // (\n\nvar CLOSEBRACE = 'CLOSEBRACE'; // }\n\nvar CLOSEBRACKET = 'CLOSEBRACKET'; // ]\n\nvar CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\n\nvar CLOSEPAREN = 'CLOSEPAREN'; // )\n// Various symbols\n\nvar AMPERSAND = 'AMPERSAND'; // &\n\nvar APOSTROPHE = 'APOSTROPHE'; // '\n\nvar ASTERISK = 'ASTERISK'; // *\n\nvar AT = 'AT'; // @\n\nvar BACKSLASH = 'BACKSLASH'; // \\\n\nvar BACKTICK = 'BACKTICK'; // `\n\nvar CARET = 'CARET'; // ^\n\nvar COLON = 'COLON'; // :\n\nvar COMMA = 'COMMA'; // ,\n\nvar DOLLAR = 'DOLLAR'; // $\n\nvar DOT = 'DOT'; // .\n\nvar EQUALS = 'EQUALS'; // =\n\nvar EXCLAMATION = 'EXCLAMATION'; // !\n\nvar HYPHEN = 'HYPHEN'; // -\n\nvar PERCENT = 'PERCENT'; // %\n\nvar PIPE = 'PIPE'; // |\n\nvar PLUS = 'PLUS'; // +\n\nvar POUND = 'POUND'; // #\n\nvar QUERY = 'QUERY'; // ?\n\nvar QUOTE = 'QUOTE'; // \"\n\nvar SEMI = 'SEMI'; // ;\n\nvar SLASH = 'SLASH'; // /\n\nvar TILDE = 'TILDE'; // ~\n\nvar UNDERSCORE = 'UNDERSCORE'; // _\n// Default token - anything that is not one of the above\n\nvar SYM = 'SYM';\n\nvar text = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDOMAIN: DOMAIN,\n\tLOCALHOST: LOCALHOST,\n\tTLD: TLD,\n\tNUM: NUM,\n\tPROTOCOL: PROTOCOL,\n\tMAILTO: MAILTO,\n\tWS: WS,\n\tNL: NL,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tHYPHEN: HYPHEN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tTILDE: TILDE,\n\tUNDERSCORE: UNDERSCORE,\n\tSYM: SYM\n});\n\n// NOTE: punycode versions of IDNs are not included here because these will not\n// be as commonly used without the http prefix anyway and linkify will already\n// force-encode those.\n// To be updated with the values in this list\n// http://data.iana.org/TLD/tlds-alpha-by-domain.txt\n// Version 2021022800, Last Updated Sun Feb 28 07:07:01 2021 UTC\nvar tlds = 'aaa \\\naarp \\\nabarth \\\nabb \\\nabbott \\\nabbvie \\\nabc \\\nable \\\nabogado \\\nabudhabi \\\nac \\\nacademy \\\naccenture \\\naccountant \\\naccountants \\\naco \\\nactor \\\nad \\\nadac \\\nads \\\nadult \\\nae \\\naeg \\\naero \\\naetna \\\naf \\\nafamilycompany \\\nafl \\\nafrica \\\nag \\\nagakhan \\\nagency \\\nai \\\naig \\\nairbus \\\nairforce \\\nairtel \\\nakdn \\\nal \\\nalfaromeo \\\nalibaba \\\nalipay \\\nallfinanz \\\nallstate \\\nally \\\nalsace \\\nalstom \\\nam \\\namazon \\\namericanexpress \\\namericanfamily \\\namex \\\namfam \\\namica \\\namsterdam \\\nanalytics \\\nandroid \\\nanquan \\\nanz \\\nao \\\naol \\\napartments \\\napp \\\napple \\\naq \\\naquarelle \\\nar \\\narab \\\naramco \\\narchi \\\narmy \\\narpa \\\nart \\\narte \\\nas \\\nasda \\\nasia \\\nassociates \\\nat \\\nathleta \\\nattorney \\\nau \\\nauction \\\naudi \\\naudible \\\naudio \\\nauspost \\\nauthor \\\nauto \\\nautos \\\navianca \\\naw \\\naws \\\nax \\\naxa \\\naz \\\nazure \\\nba \\\nbaby \\\nbaidu \\\nbanamex \\\nbananarepublic \\\nband \\\nbank \\\nbar \\\nbarcelona \\\nbarclaycard \\\nbarclays \\\nbarefoot \\\nbargains \\\nbaseball \\\nbasketball \\\nbauhaus \\\nbayern \\\nbb \\\nbbc \\\nbbt \\\nbbva \\\nbcg \\\nbcn \\\nbd \\\nbe \\\nbeats \\\nbeauty \\\nbeer \\\nbentley \\\nberlin \\\nbest \\\nbestbuy \\\nbet \\\nbf \\\nbg \\\nbh \\\nbharti \\\nbi \\\nbible \\\nbid \\\nbike \\\nbing \\\nbingo \\\nbio \\\nbiz \\\nbj \\\nblack \\\nblackfriday \\\nblockbuster \\\nblog \\\nbloomberg \\\nblue \\\nbm \\\nbms \\\nbmw \\\nbn \\\nbnpparibas \\\nbo \\\nboats \\\nboehringer \\\nbofa \\\nbom \\\nbond \\\nboo \\\nbook \\\nbooking \\\nbosch \\\nbostik \\\nboston \\\nbot \\\nboutique \\\nbox \\\nbr \\\nbradesco \\\nbridgestone \\\nbroadway \\\nbroker \\\nbrother \\\nbrussels \\\nbs \\\nbt \\\nbudapest \\\nbugatti \\\nbuild \\\nbuilders \\\nbusiness \\\nbuy \\\nbuzz \\\nbv \\\nbw \\\nby \\\nbz \\\nbzh \\\nca \\\ncab \\\ncafe \\\ncal \\\ncall \\\ncalvinklein \\\ncam \\\ncamera \\\ncamp \\\ncancerresearch \\\ncanon \\\ncapetown \\\ncapital \\\ncapitalone \\\ncar \\\ncaravan \\\ncards \\\ncare \\\ncareer \\\ncareers \\\ncars \\\ncasa \\\ncase \\\ncash \\\ncasino \\\ncat \\\ncatering \\\ncatholic \\\ncba \\\ncbn \\\ncbre \\\ncbs \\\ncc \\\ncd \\\ncenter \\\nceo \\\ncern \\\ncf \\\ncfa \\\ncfd \\\ncg \\\nch \\\nchanel \\\nchannel \\\ncharity \\\nchase \\\nchat \\\ncheap \\\nchintai \\\nchristmas \\\nchrome \\\nchurch \\\nci \\\ncipriani \\\ncircle \\\ncisco \\\ncitadel \\\nciti \\\ncitic \\\ncity \\\ncityeats \\\nck \\\ncl \\\nclaims \\\ncleaning \\\nclick \\\nclinic \\\nclinique \\\nclothing \\\ncloud \\\nclub \\\nclubmed \\\ncm \\\ncn \\\nco \\\ncoach \\\ncodes \\\ncoffee \\\ncollege \\\ncologne \\\ncom \\\ncomcast \\\ncommbank \\\ncommunity \\\ncompany \\\ncompare \\\ncomputer \\\ncomsec \\\ncondos \\\nconstruction \\\nconsulting \\\ncontact \\\ncontractors \\\ncooking \\\ncookingchannel \\\ncool \\\ncoop \\\ncorsica \\\ncountry \\\ncoupon \\\ncoupons \\\ncourses \\\ncpa \\\ncr \\\ncredit \\\ncreditcard \\\ncreditunion \\\ncricket \\\ncrown \\\ncrs \\\ncruise \\\ncruises \\\ncsc \\\ncu \\\ncuisinella \\\ncv \\\ncw \\\ncx \\\ncy \\\ncymru \\\ncyou \\\ncz \\\ndabur \\\ndad \\\ndance \\\ndata \\\ndate \\\ndating \\\ndatsun \\\nday \\\ndclk \\\ndds \\\nde \\\ndeal \\\ndealer \\\ndeals \\\ndegree \\\ndelivery \\\ndell \\\ndeloitte \\\ndelta \\\ndemocrat \\\ndental \\\ndentist \\\ndesi \\\ndesign \\\ndev \\\ndhl \\\ndiamonds \\\ndiet \\\ndigital \\\ndirect \\\ndirectory \\\ndiscount \\\ndiscover \\\ndish \\\ndiy \\\ndj \\\ndk \\\ndm \\\ndnp \\\ndo \\\ndocs \\\ndoctor \\\ndog \\\ndomains \\\ndot \\\ndownload \\\ndrive \\\ndtv \\\ndubai \\\nduck \\\ndunlop \\\ndupont \\\ndurban \\\ndvag \\\ndvr \\\ndz \\\nearth \\\neat \\\nec \\\neco \\\nedeka \\\nedu \\\neducation \\\nee \\\neg \\\nemail \\\nemerck \\\nenergy \\\nengineer \\\nengineering \\\nenterprises \\\nepson \\\nequipment \\\ner \\\nericsson \\\nerni \\\nes \\\nesq \\\nestate \\\net \\\netisalat \\\neu \\\neurovision \\\neus \\\nevents \\\nexchange \\\nexpert \\\nexposed \\\nexpress \\\nextraspace \\\nfage \\\nfail \\\nfairwinds \\\nfaith \\\nfamily \\\nfan \\\nfans \\\nfarm \\\nfarmers \\\nfashion \\\nfast \\\nfedex \\\nfeedback \\\nferrari \\\nferrero \\\nfi \\\nfiat \\\nfidelity \\\nfido \\\nfilm \\\nfinal \\\nfinance \\\nfinancial \\\nfire \\\nfirestone \\\nfirmdale \\\nfish \\\nfishing \\\nfit \\\nfitness \\\nfj \\\nfk \\\nflickr \\\nflights \\\nflir \\\nflorist \\\nflowers \\\nfly \\\nfm \\\nfo \\\nfoo \\\nfood \\\nfoodnetwork \\\nfootball \\\nford \\\nforex \\\nforsale \\\nforum \\\nfoundation \\\nfox \\\nfr \\\nfree \\\nfresenius \\\nfrl \\\nfrogans \\\nfrontdoor \\\nfrontier \\\nftr \\\nfujitsu \\\nfujixerox \\\nfun \\\nfund \\\nfurniture \\\nfutbol \\\nfyi \\\nga \\\ngal \\\ngallery \\\ngallo \\\ngallup \\\ngame \\\ngames \\\ngap \\\ngarden \\\ngay \\\ngb \\\ngbiz \\\ngd \\\ngdn \\\nge \\\ngea \\\ngent \\\ngenting \\\ngeorge \\\ngf \\\ngg \\\nggee \\\ngh \\\ngi \\\ngift \\\ngifts \\\ngives \\\ngiving \\\ngl \\\nglade \\\nglass \\\ngle \\\nglobal \\\nglobo \\\ngm \\\ngmail \\\ngmbh \\\ngmo \\\ngmx \\\ngn \\\ngodaddy \\\ngold \\\ngoldpoint \\\ngolf \\\ngoo \\\ngoodyear \\\ngoog \\\ngoogle \\\ngop \\\ngot \\\ngov \\\ngp \\\ngq \\\ngr \\\ngrainger \\\ngraphics \\\ngratis \\\ngreen \\\ngripe \\\ngrocery \\\ngroup \\\ngs \\\ngt \\\ngu \\\nguardian \\\ngucci \\\nguge \\\nguide \\\nguitars \\\nguru \\\ngw \\\ngy \\\nhair \\\nhamburg \\\nhangout \\\nhaus \\\nhbo \\\nhdfc \\\nhdfcbank \\\nhealth \\\nhealthcare \\\nhelp \\\nhelsinki \\\nhere \\\nhermes \\\nhgtv \\\nhiphop \\\nhisamitsu \\\nhitachi \\\nhiv \\\nhk \\\nhkt \\\nhm \\\nhn \\\nhockey \\\nholdings \\\nholiday \\\nhomedepot \\\nhomegoods \\\nhomes \\\nhomesense \\\nhonda \\\nhorse \\\nhospital \\\nhost \\\nhosting \\\nhot \\\nhoteles \\\nhotels \\\nhotmail \\\nhouse \\\nhow \\\nhr \\\nhsbc \\\nht \\\nhu \\\nhughes \\\nhyatt \\\nhyundai \\\nibm \\\nicbc \\\nice \\\nicu \\\nid \\\nie \\\nieee \\\nifm \\\nikano \\\nil \\\nim \\\nimamat \\\nimdb \\\nimmo \\\nimmobilien \\\nin \\\ninc \\\nindustries \\\ninfiniti \\\ninfo \\\ning \\\nink \\\ninstitute \\\ninsurance \\\ninsure \\\nint \\\ninternational \\\nintuit \\\ninvestments \\\nio \\\nipiranga \\\niq \\\nir \\\nirish \\\nis \\\nismaili \\\nist \\\nistanbul \\\nit \\\nitau \\\nitv \\\niveco \\\njaguar \\\njava \\\njcb \\\nje \\\njeep \\\njetzt \\\njewelry \\\njio \\\njll \\\njm \\\njmp \\\njnj \\\njo \\\njobs \\\njoburg \\\njot \\\njoy \\\njp \\\njpmorgan \\\njprs \\\njuegos \\\njuniper \\\nkaufen \\\nkddi \\\nke \\\nkerryhotels \\\nkerrylogistics \\\nkerryproperties \\\nkfh \\\nkg \\\nkh \\\nki \\\nkia \\\nkim \\\nkinder \\\nkindle \\\nkitchen \\\nkiwi \\\nkm \\\nkn \\\nkoeln \\\nkomatsu \\\nkosher \\\nkp \\\nkpmg \\\nkpn \\\nkr \\\nkrd \\\nkred \\\nkuokgroup \\\nkw \\\nky \\\nkyoto \\\nkz \\\nla \\\nlacaixa \\\nlamborghini \\\nlamer \\\nlancaster \\\nlancia \\\nland \\\nlandrover \\\nlanxess \\\nlasalle \\\nlat \\\nlatino \\\nlatrobe \\\nlaw \\\nlawyer \\\nlb \\\nlc \\\nlds \\\nlease \\\nleclerc \\\nlefrak \\\nlegal \\\nlego \\\nlexus \\\nlgbt \\\nli \\\nlidl \\\nlife \\\nlifeinsurance \\\nlifestyle \\\nlighting \\\nlike \\\nlilly \\\nlimited \\\nlimo \\\nlincoln \\\nlinde \\\nlink \\\nlipsy \\\nlive \\\nliving \\\nlixil \\\nlk \\\nllc \\\nllp \\\nloan \\\nloans \\\nlocker \\\nlocus \\\nloft \\\nlol \\\nlondon \\\nlotte \\\nlotto \\\nlove \\\nlpl \\\nlplfinancial \\\nlr \\\nls \\\nlt \\\nltd \\\nltda \\\nlu \\\nlundbeck \\\nluxe \\\nluxury \\\nlv \\\nly \\\nma \\\nmacys \\\nmadrid \\\nmaif \\\nmaison \\\nmakeup \\\nman \\\nmanagement \\\nmango \\\nmap \\\nmarket \\\nmarketing \\\nmarkets \\\nmarriott \\\nmarshalls \\\nmaserati \\\nmattel \\\nmba \\\nmc \\\nmckinsey \\\nmd \\\nme \\\nmed \\\nmedia \\\nmeet \\\nmelbourne \\\nmeme \\\nmemorial \\\nmen \\\nmenu \\\nmerckmsd \\\nmg \\\nmh \\\nmiami \\\nmicrosoft \\\nmil \\\nmini \\\nmint \\\nmit \\\nmitsubishi \\\nmk \\\nml \\\nmlb \\\nmls \\\nmm \\\nmma \\\nmn \\\nmo \\\nmobi \\\nmobile \\\nmoda \\\nmoe \\\nmoi \\\nmom \\\nmonash \\\nmoney \\\nmonster \\\nmormon \\\nmortgage \\\nmoscow \\\nmoto \\\nmotorcycles \\\nmov \\\nmovie \\\nmp \\\nmq \\\nmr \\\nms \\\nmsd \\\nmt \\\nmtn \\\nmtr \\\nmu \\\nmuseum \\\nmutual \\\nmv \\\nmw \\\nmx \\\nmy \\\nmz \\\nna \\\nnab \\\nnagoya \\\nname \\\nnationwide \\\nnatura \\\nnavy \\\nnba \\\nnc \\\nne \\\nnec \\\nnet \\\nnetbank \\\nnetflix \\\nnetwork \\\nneustar \\\nnew \\\nnews \\\nnext \\\nnextdirect \\\nnexus \\\nnf \\\nnfl \\\nng \\\nngo \\\nnhk \\\nni \\\nnico \\\nnike \\\nnikon \\\nninja \\\nnissan \\\nnissay \\\nnl \\\nno \\\nnokia \\\nnorthwesternmutual \\\nnorton \\\nnow \\\nnowruz \\\nnowtv \\\nnp \\\nnr \\\nnra \\\nnrw \\\nntt \\\nnu \\\nnyc \\\nnz \\\nobi \\\nobserver \\\noff \\\noffice \\\nokinawa \\\nolayan \\\nolayangroup \\\noldnavy \\\nollo \\\nom \\\nomega \\\none \\\nong \\\nonl \\\nonline \\\nonyourside \\\nooo \\\nopen \\\noracle \\\norange \\\norg \\\norganic \\\norigins \\\nosaka \\\notsuka \\\nott \\\novh \\\npa \\\npage \\\npanasonic \\\nparis \\\npars \\\npartners \\\nparts \\\nparty \\\npassagens \\\npay \\\npccw \\\npe \\\npet \\\npf \\\npfizer \\\npg \\\nph \\\npharmacy \\\nphd \\\nphilips \\\nphone \\\nphoto \\\nphotography \\\nphotos \\\nphysio \\\npics \\\npictet \\\npictures \\\npid \\\npin \\\nping \\\npink \\\npioneer \\\npizza \\\npk \\\npl \\\nplace \\\nplay \\\nplaystation \\\nplumbing \\\nplus \\\npm \\\npn \\\npnc \\\npohl \\\npoker \\\npolitie \\\nporn \\\npost \\\npr \\\npramerica \\\npraxi \\\npress \\\nprime \\\npro \\\nprod \\\nproductions \\\nprof \\\nprogressive \\\npromo \\\nproperties \\\nproperty \\\nprotection \\\npru \\\nprudential \\\nps \\\npt \\\npub \\\npw \\\npwc \\\npy \\\nqa \\\nqpon \\\nquebec \\\nquest \\\nqvc \\\nracing \\\nradio \\\nraid \\\nre \\\nread \\\nrealestate \\\nrealtor \\\nrealty \\\nrecipes \\\nred \\\nredstone \\\nredumbrella \\\nrehab \\\nreise \\\nreisen \\\nreit \\\nreliance \\\nren \\\nrent \\\nrentals \\\nrepair \\\nreport \\\nrepublican \\\nrest \\\nrestaurant \\\nreview \\\nreviews \\\nrexroth \\\nrich \\\nrichardli \\\nricoh \\\nril \\\nrio \\\nrip \\\nrmit \\\nro \\\nrocher \\\nrocks \\\nrodeo \\\nrogers \\\nroom \\\nrs \\\nrsvp \\\nru \\\nrugby \\\nruhr \\\nrun \\\nrw \\\nrwe \\\nryukyu \\\nsa \\\nsaarland \\\nsafe \\\nsafety \\\nsakura \\\nsale \\\nsalon \\\nsamsclub \\\nsamsung \\\nsandvik \\\nsandvikcoromant \\\nsanofi \\\nsap \\\nsarl \\\nsas \\\nsave \\\nsaxo \\\nsb \\\nsbi \\\nsbs \\\nsc \\\nsca \\\nscb \\\nschaeffler \\\nschmidt \\\nscholarships \\\nschool \\\nschule \\\nschwarz \\\nscience \\\nscjohnson \\\nscot \\\nsd \\\nse \\\nsearch \\\nseat \\\nsecure \\\nsecurity \\\nseek \\\nselect \\\nsener \\\nservices \\\nses \\\nseven \\\nsew \\\nsex \\\nsexy \\\nsfr \\\nsg \\\nsh \\\nshangrila \\\nsharp \\\nshaw \\\nshell \\\nshia \\\nshiksha \\\nshoes \\\nshop \\\nshopping \\\nshouji \\\nshow \\\nshowtime \\\nsi \\\nsilk \\\nsina \\\nsingles \\\nsite \\\nsj \\\nsk \\\nski \\\nskin \\\nsky \\\nskype \\\nsl \\\nsling \\\nsm \\\nsmart \\\nsmile \\\nsn \\\nsncf \\\nso \\\nsoccer \\\nsocial \\\nsoftbank \\\nsoftware \\\nsohu \\\nsolar \\\nsolutions \\\nsong \\\nsony \\\nsoy \\\nspa \\\nspace \\\nsport \\\nspot \\\nspreadbetting \\\nsr \\\nsrl \\\nss \\\nst \\\nstada \\\nstaples \\\nstar \\\nstatebank \\\nstatefarm \\\nstc \\\nstcgroup \\\nstockholm \\\nstorage \\\nstore \\\nstream \\\nstudio \\\nstudy \\\nstyle \\\nsu \\\nsucks \\\nsupplies \\\nsupply \\\nsupport \\\nsurf \\\nsurgery \\\nsuzuki \\\nsv \\\nswatch \\\nswiftcover \\\nswiss \\\nsx \\\nsy \\\nsydney \\\nsystems \\\nsz \\\ntab \\\ntaipei \\\ntalk \\\ntaobao \\\ntarget \\\ntatamotors \\\ntatar \\\ntattoo \\\ntax \\\ntaxi \\\ntc \\\ntci \\\ntd \\\ntdk \\\nteam \\\ntech \\\ntechnology \\\ntel \\\ntemasek \\\ntennis \\\nteva \\\ntf \\\ntg \\\nth \\\nthd \\\ntheater \\\ntheatre \\\ntiaa \\\ntickets \\\ntienda \\\ntiffany \\\ntips \\\ntires \\\ntirol \\\ntj \\\ntjmaxx \\\ntjx \\\ntk \\\ntkmaxx \\\ntl \\\ntm \\\ntmall \\\ntn \\\nto \\\ntoday \\\ntokyo \\\ntools \\\ntop \\\ntoray \\\ntoshiba \\\ntotal \\\ntours \\\ntown \\\ntoyota \\\ntoys \\\ntr \\\ntrade \\\ntrading \\\ntraining \\\ntravel \\\ntravelchannel \\\ntravelers \\\ntravelersinsurance \\\ntrust \\\ntrv \\\ntt \\\ntube \\\ntui \\\ntunes \\\ntushu \\\ntv \\\ntvs \\\ntw \\\ntz \\\nua \\\nubank \\\nubs \\\nug \\\nuk \\\nunicom \\\nuniversity \\\nuno \\\nuol \\\nups \\\nus \\\nuy \\\nuz \\\nva \\\nvacations \\\nvana \\\nvanguard \\\nvc \\\nve \\\nvegas \\\nventures \\\nverisign \\\nversicherung \\\nvet \\\nvg \\\nvi \\\nviajes \\\nvideo \\\nvig \\\nviking \\\nvillas \\\nvin \\\nvip \\\nvirgin \\\nvisa \\\nvision \\\nviva \\\nvivo \\\nvlaanderen \\\nvn \\\nvodka \\\nvolkswagen \\\nvolvo \\\nvote \\\nvoting \\\nvoto \\\nvoyage \\\nvu \\\nvuelos \\\nwales \\\nwalmart \\\nwalter \\\nwang \\\nwanggou \\\nwatch \\\nwatches \\\nweather \\\nweatherchannel \\\nwebcam \\\nweber \\\nwebsite \\\nwed \\\nwedding \\\nweibo \\\nweir \\\nwf \\\nwhoswho \\\nwien \\\nwiki \\\nwilliamhill \\\nwin \\\nwindows \\\nwine \\\nwinners \\\nwme \\\nwolterskluwer \\\nwoodside \\\nwork \\\nworks \\\nworld \\\nwow \\\nws \\\nwtc \\\nwtf \\\nxbox \\\nxerox \\\nxfinity \\\nxihuan \\\nxin \\\nxxx \\\nxyz \\\nyachts \\\nyahoo \\\nyamaxun \\\nyandex \\\nye \\\nyodobashi \\\nyoga \\\nyokohama \\\nyou \\\nyoutube \\\nyt \\\nyun \\\nza \\\nzappos \\\nzara \\\nzero \\\nzip \\\nzm \\\nzone \\\nzuerich \\\nzw \\\nvermögensberater-ctb \\\nvermögensberatung-pwb \\\nελ \\\nευ \\\nбг \\\nбел \\\nдети \\\nею \\\nкатолик \\\nком \\\nқаз \\\nмкд \\\nмон \\\nмосква \\\nонлайн \\\nорг \\\nрус \\\nрф \\\nсайт \\\nсрб \\\nукр \\\nგე \\\nհայ \\\nישראל \\\nקום \\\nابوظبي \\\nاتصالات \\\nارامكو \\\nالاردن \\\nالبحرين \\\nالجزائر \\\nالسعودية \\\nالعليان \\\nالمغرب \\\nامارات \\\nایران \\\nبارت \\\nبازار \\\nبھارت \\\nبيتك \\\nپاکستان \\\nڀارت \\\nتونس \\\nسودان \\\nسورية \\\nشبكة \\\nعراق \\\nعرب \\\nعمان \\\nفلسطين \\\nقطر \\\nكاثوليك \\\nكوم \\\nمصر \\\nمليسيا \\\nموريتانيا \\\nموقع \\\nهمراه \\\nकॉम \\\nनेट \\\nभारत \\\nभारतम् \\\nभारोत \\\nसंगठन \\\nবাংলা \\\nভারত \\\nভাৰত \\\nਭਾਰਤ \\\nભારત \\\nଭାରତ \\\nஇந்தியா \\\nஇலங்கை \\\nசிங்கப்பூர் \\\nభారత్ \\\nಭಾರತ \\\nഭാരതം \\\nලංකා \\\nคอม \\\nไทย \\\nລາວ \\\n닷넷 \\\n닷컴 \\\n삼성 \\\n한국 \\\nアマゾン \\\nグーグル \\\nクラウド \\\nコム \\\nストア \\\nセール \\\nファッション \\\nポイント \\\nみんな \\\n世界 \\\n中信 \\\n中国 \\\n中國 \\\n中文网 \\\n亚马逊 \\\n企业 \\\n佛山 \\\n信息 \\\n健康 \\\n八卦 \\\n公司 \\\n公益 \\\n台湾 \\\n台灣 \\\n商城 \\\n商店 \\\n商标 \\\n嘉里 \\\n嘉里大酒店 \\\n在线 \\\n大众汽车 \\\n大拿 \\\n天主教 \\\n娱乐 \\\n家電 \\\n广东 \\\n微博 \\\n慈善 \\\n我爱你 \\\n手机 \\\n招聘 \\\n政务 \\\n政府 \\\n新加坡 \\\n新闻 \\\n时尚 \\\n書籍 \\\n机构 \\\n淡马锡 \\\n游戏 \\\n澳門 \\\n点看 \\\n移动 \\\n组织机构 \\\n网址 \\\n网店 \\\n网站 \\\n网络 \\\n联通 \\\n诺基亚 \\\n谷歌 \\\n购物 \\\n通販 \\\n集团 \\\n電訊盈科 \\\n飞利浦 \\\n食品 \\\n餐厅 \\\n香格里拉 \\\n香港'.split(' ');\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar LETTER = /(?:[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\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\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\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-\\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-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/; // Any Unicode character with letter data type\n\nvar EMOJI = /(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEDD-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7C\\uDE80-\\uDE86\\uDE90-\\uDEAC\\uDEB0-\\uDEBA\\uDEC0-\\uDEC5\\uDED0-\\uDED9\\uDEE0-\\uDEE7\\uDEF0-\\uDEF6])/; // Any Unicode emoji character\n\nvar EMOJI_VARIATION = /\\uFE0F/; // Variation selector, follows heart and others\n\nvar DIGIT = /\\d/;\nvar SPACE = /\\s/;\n/**\n * Initialize the scanner character-based state machine for the given start state\n * @return {State} scanner starting state\n */\n\nfunction init$2() {\n var customProtocols = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // Frequently used states\n var S_START = makeState();\n var S_NUM = makeAcceptingState(NUM);\n var S_DOMAIN = makeAcceptingState(DOMAIN);\n var S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\n\n var S_WS = makeAcceptingState(WS);\n var DOMAIN_REGEX_TRANSITIONS = [[DIGIT, S_DOMAIN], [LETTER, S_DOMAIN], [EMOJI, S_DOMAIN], [EMOJI_VARIATION, S_DOMAIN]]; // Create a state which emits a domain token\n\n var makeDomainState = function makeDomainState() {\n var state = makeAcceptingState(DOMAIN);\n state.j = {\n '-': S_DOMAIN_HYPHEN\n };\n state.jr = [].concat(DOMAIN_REGEX_TRANSITIONS);\n return state;\n }; // Create a state which does not emit a domain state but the usual alphanumeric\n // transitions are domains\n\n\n var makeNearDomainState = function makeNearDomainState(token) {\n var state = makeDomainState();\n state.t = token;\n return state;\n }; // States for special URL symbols that accept immediately after start\n\n\n makeBatchT(S_START, [[\"'\", makeAcceptingState(APOSTROPHE)], ['{', makeAcceptingState(OPENBRACE)], ['[', makeAcceptingState(OPENBRACKET)], ['<', makeAcceptingState(OPENANGLEBRACKET)], ['(', makeAcceptingState(OPENPAREN)], ['}', makeAcceptingState(CLOSEBRACE)], [']', makeAcceptingState(CLOSEBRACKET)], ['>', makeAcceptingState(CLOSEANGLEBRACKET)], [')', makeAcceptingState(CLOSEPAREN)], ['&', makeAcceptingState(AMPERSAND)], ['*', makeAcceptingState(ASTERISK)], ['@', makeAcceptingState(AT)], ['`', makeAcceptingState(BACKTICK)], ['^', makeAcceptingState(CARET)], [':', makeAcceptingState(COLON)], [',', makeAcceptingState(COMMA)], ['$', makeAcceptingState(DOLLAR)], ['.', makeAcceptingState(DOT)], ['=', makeAcceptingState(EQUALS)], ['!', makeAcceptingState(EXCLAMATION)], ['-', makeAcceptingState(HYPHEN)], ['%', makeAcceptingState(PERCENT)], ['|', makeAcceptingState(PIPE)], ['+', makeAcceptingState(PLUS)], ['#', makeAcceptingState(POUND)], ['?', makeAcceptingState(QUERY)], ['\"', makeAcceptingState(QUOTE)], ['/', makeAcceptingState(SLASH)], [';', makeAcceptingState(SEMI)], ['~', makeAcceptingState(TILDE)], ['_', makeAcceptingState(UNDERSCORE)], ['\\\\', makeAcceptingState(BACKSLASH)]]); // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n\n makeT(S_START, '\\n', makeAcceptingState(NL));\n makeRegexT(S_START, SPACE, S_WS); // If any whitespace except newline, more whitespace!\n\n makeT(S_WS, '\\n', makeState()); // non-accepting state\n\n makeRegexT(S_WS, SPACE, S_WS); // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n\n for (var i = 0; i < tlds.length; i++) {\n makeChainT(S_START, tlds[i], makeNearDomainState(TLD), makeDomainState);\n } // Collect the states generated by different protocls\n\n\n var S_PROTOCOL_FILE = makeDomainState();\n var S_PROTOCOL_FTP = makeDomainState();\n var S_PROTOCOL_HTTP = makeDomainState();\n var S_MAILTO = makeDomainState();\n makeChainT(S_START, 'file', S_PROTOCOL_FILE, makeDomainState);\n makeChainT(S_START, 'ftp', S_PROTOCOL_FTP, makeDomainState);\n makeChainT(S_START, 'http', S_PROTOCOL_HTTP, makeDomainState);\n makeChainT(S_START, 'mailto', S_MAILTO, makeDomainState); // Protocol states\n\n var S_PROTOCOL_SECURE = makeDomainState();\n var S_FULL_PROTOCOL = makeAcceptingState(PROTOCOL); // Full protocol ends with COLON\n\n var S_FULL_MAILTO = makeAcceptingState(MAILTO); // Mailto ends with COLON\n // Secure protocols (end with 's')\n\n makeT(S_PROTOCOL_FTP, 's', S_PROTOCOL_SECURE);\n makeT(S_PROTOCOL_FTP, ':', S_FULL_PROTOCOL);\n makeT(S_PROTOCOL_HTTP, 's', S_PROTOCOL_SECURE);\n makeT(S_PROTOCOL_HTTP, ':', S_FULL_PROTOCOL); // Become protocol tokens after a COLON\n\n makeT(S_PROTOCOL_FILE, ':', S_FULL_PROTOCOL);\n makeT(S_PROTOCOL_SECURE, ':', S_FULL_PROTOCOL);\n makeT(S_MAILTO, ':', S_FULL_MAILTO); // Register custom protocols\n\n var S_CUSTOM_PROTOCOL = makeDomainState();\n\n for (var _i = 0; _i < customProtocols.length; _i++) {\n makeChainT(S_START, customProtocols[_i], S_CUSTOM_PROTOCOL, makeDomainState);\n }\n\n makeT(S_CUSTOM_PROTOCOL, ':', S_FULL_PROTOCOL); // Localhost\n\n makeChainT(S_START, 'localhost', makeNearDomainState(LOCALHOST), makeDomainState); // Everything else\n // DOMAINs make more DOMAINs\n // Number and character transitions\n\n makeRegexT(S_START, DIGIT, S_NUM);\n makeRegexT(S_START, LETTER, S_DOMAIN);\n makeRegexT(S_START, EMOJI, S_DOMAIN);\n makeRegexT(S_START, EMOJI_VARIATION, S_DOMAIN);\n makeRegexT(S_NUM, DIGIT, S_NUM);\n makeRegexT(S_NUM, LETTER, S_DOMAIN); // number becomes DOMAIN\n\n makeRegexT(S_NUM, EMOJI, S_DOMAIN); // number becomes DOMAIN\n\n makeRegexT(S_NUM, EMOJI_VARIATION, S_DOMAIN); // number becomes DOMAIN\n\n makeT(S_NUM, '-', S_DOMAIN_HYPHEN); // Default domain transitions\n\n makeT(S_DOMAIN, '-', S_DOMAIN_HYPHEN);\n makeT(S_DOMAIN_HYPHEN, '-', S_DOMAIN_HYPHEN);\n makeRegexT(S_DOMAIN, DIGIT, S_DOMAIN);\n makeRegexT(S_DOMAIN, LETTER, S_DOMAIN);\n makeRegexT(S_DOMAIN, EMOJI, S_DOMAIN);\n makeRegexT(S_DOMAIN, EMOJI_VARIATION, S_DOMAIN);\n makeRegexT(S_DOMAIN_HYPHEN, DIGIT, S_DOMAIN);\n makeRegexT(S_DOMAIN_HYPHEN, LETTER, S_DOMAIN);\n makeRegexT(S_DOMAIN_HYPHEN, EMOJI, S_DOMAIN);\n makeRegexT(S_DOMAIN_HYPHEN, EMOJI_VARIATION, S_DOMAIN); // Set default transition for start state (some symbol)\n\n S_START.jd = makeAcceptingState(SYM);\n return S_START;\n}\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {{t: string, v: string, s: number, l: number}[]} list of tokens, each with a type and value\n*/\n\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns the regular case though) Uses selective `toLowerCase`\n // is used because lowercasing the entire string causes the length and\n // character position to vary in some non-English strings with V8-based\n // runtimes.\n var iterable = stringToArray(str.replace(/[A-Z]/g, function (c) {\n return c.toLowerCase();\n }));\n var charCount = iterable.length; // <= len if there are emojis, etc\n\n var tokens = []; // return value\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n\n var cursor = 0; // Cursor through the array-representation of the string\n\n var charCursor = 0; // Tokenize the string\n\n while (charCursor < charCount) {\n var state = start;\n var nextState = null;\n var tokenLength = 0;\n var latestAccepting = null;\n var sinceAccepts = -1;\n var charsSinceAccepts = -1;\n\n while (charCursor < charCount && (nextState = takeT(state, iterable[charCursor]))) {\n state = nextState; // Keep track of the latest accepting state\n\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n } // Roll back to the latest accepting state\n\n\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts; // No more jumps, just make a new token from the last accepting one\n // TODO: If possible, don't output v, instead output range where values ocur\n\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.substr(cursor - tokenLength, tokenLength),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n\n });\n }\n\n return tokens;\n}\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\n\nfunction stringToArray(str) {\n var result = [];\n var len = str.length;\n var index = 0;\n\n while (index < len) {\n var first = str.charCodeAt(index);\n var second = void 0;\n var char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n\n result.push(char);\n index += char.length;\n }\n\n return result;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\n/**\n * @property {string} defaultProtocol\n * @property {{[string]: (event) => void}]} [events]\n */\nvar defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: 0,\n className: null,\n attributes: null,\n ignoreTags: []\n};\n/**\n * @class Options\n * @param {Object} [opts] Set option properties besides the defaults\n */\n\nfunction Options(opts) {\n opts = opts || {};\n this.defaultProtocol = 'defaultProtocol' in opts ? opts.defaultProtocol : defaults.defaultProtocol;\n this.events = 'events' in opts ? opts.events : defaults.events;\n this.format = 'format' in opts ? opts.format : defaults.format;\n this.formatHref = 'formatHref' in opts ? opts.formatHref : defaults.formatHref;\n this.nl2br = 'nl2br' in opts ? opts.nl2br : defaults.nl2br;\n this.tagName = 'tagName' in opts ? opts.tagName : defaults.tagName;\n this.target = 'target' in opts ? opts.target : defaults.target;\n this.rel = 'rel' in opts ? opts.rel : defaults.rel;\n this.validate = 'validate' in opts ? opts.validate : defaults.validate;\n this.truncate = 'truncate' in opts ? opts.truncate : defaults.truncate;\n this.className = 'className' in opts ? opts.className : defaults.className;\n this.attributes = opts.attributes || defaults.attributes;\n this.ignoreTags = []; // Make all tags names upper case\n\n var ignoredTags = 'ignoreTags' in opts ? opts.ignoreTags : defaults.ignoreTags;\n\n for (var i = 0; i < ignoredTags.length; i++) {\n this.ignoreTags.push(ignoredTags[i].toUpperCase());\n }\n}\nOptions.prototype = {\n /**\n * Given the token, return all options for how it should be displayed\n */\n resolve: function resolve(token) {\n var href = token.toHref(this.defaultProtocol);\n return {\n formatted: this.get('format', token.toString(), token),\n formattedHref: this.get('formatHref', href, token),\n tagName: this.get('tagName', href, token),\n className: this.get('className', href, token),\n target: this.get('target', href, token),\n rel: this.get('rel', href, token),\n events: this.getObject('events', href, token),\n attributes: this.getObject('attributes', href, token),\n truncate: this.get('truncate', href, token)\n };\n },\n\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n check: function check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {string} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n get: function get(key, operator, token) {\n var option = this[key];\n\n if (!option) {\n return option;\n }\n\n var optionValue;\n\n switch (_typeof(option)) {\n case 'function':\n return option(operator, token.t);\n\n case 'object':\n optionValue = token.t in option ? option[token.t] : defaults[key];\n return typeof optionValue === 'function' ? optionValue(operator, token.t) : optionValue;\n }\n\n return option;\n },\n getObject: function getObject(key, operator, token) {\n var option = this[key];\n return typeof option === 'function' ? option(operator, token.t) : option;\n }\n};\n\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tdefaults: defaults,\n\tOptions: Options\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\nfunction inherits(parent, child) {\n var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var extended = Object.create(parent.prototype);\n\n for (var p in props) {\n extended[p] = props[p];\n }\n\n extended.constructor = child;\n child.prototype = extended;\n return child;\n}\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@param {string} value\n\t@param {{t: string, v: string, s: number, e: number}[]} tokens\n\t@abstract\n*/\n\n\nfunction MultiToken() {}\nMultiToken.prototype = {\n /**\n \tString representing the type for this token\n \t@property t\n \t@default 'token'\n */\n t: 'token',\n\n /**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n isLink: false,\n\n /**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {string}\n */\n toString: function toString() {\n return this.v;\n },\n\n /**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {string}\n */\n toHref: function toHref() {\n return this.toString();\n },\n\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex: function startIndex() {\n return this.tk[0].s;\n },\n\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex: function endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n\n /**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject: function toObject() {\n var protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults.defaultProtocol;\n return {\n type: this.t,\n value: this.v,\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n }\n}; // Base token\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {(value: string, tokens: {t: string, v: string, s: number, e: number}) => MultiToken} new token class\n */\n\nfunction createTokenClass(type, props) {\n function Token(value, tokens) {\n this.t = type;\n this.v = value;\n this.tk = tokens;\n }\n\n inherits(MultiToken, Token, props);\n return Token;\n}\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MailtoEmail\n\t@extends MultiToken\n*/\n\nvar MailtoEmail = createTokenClass('email', {\n isLink: true\n});\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class Email\n\t@extends MultiToken\n*/\n\nvar Email = createTokenClass('email', {\n isLink: true,\n toHref: function toHref() {\n return 'mailto:' + this.toString();\n }\n});\n/**\n\tRepresents some plain text\n\t@class Text\n\t@extends MultiToken\n*/\n\nvar Text = createTokenClass('text');\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n\t@extends MultiToken\n*/\n\nvar Nl = createTokenClass('nl');\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n\t@extends MultiToken\n*/\n\nvar Url = createTokenClass('url', {\n isLink: true,\n\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {string} protocol\n \t@return {string}\n */\n toHref: function toHref() {\n var protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults.defaultProtocol;\n var tokens = this.tk;\n var hasProtocol = false;\n var hasSlashSlash = false;\n var result = [];\n var i = 0; // Make the first part of the domain lowercase\n // Lowercase protocol\n\n while (tokens[i].t === PROTOCOL) {\n hasProtocol = true;\n result.push(tokens[i].v);\n i++;\n } // Skip slash-slash\n\n\n while (tokens[i].t === SLASH) {\n hasSlashSlash = true;\n result.push(tokens[i].v);\n i++;\n } // Continue pushing characters\n\n\n for (; i < tokens.length; i++) {\n result.push(tokens[i].v);\n }\n\n result = result.join('');\n\n if (!(hasProtocol || hasSlashSlash)) {\n result = \"\".concat(protocol, \"://\").concat(result);\n }\n\n return result;\n },\n hasProtocol: function hasProtocol() {\n return this.tk[0].t === PROTOCOL;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tMultiToken: MultiToken,\n\tBase: MultiToken,\n\tcreateTokenClass: createTokenClass,\n\tMailtoEmail: MailtoEmail,\n\tEmail: Email,\n\tText: Text,\n\tNl: Nl,\n\tUrl: Url\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n/**\n * Generate the parser multi token-based state machine\n * @returns {State} the starting state\n */\n\nfunction init$1() {\n // The universal starting state.\n var S_START = makeState(); // Intermediate states for URLs. Note that domains that begin with a protocol\n // are treated slighly differently from those that don't.\n\n var S_PROTOCOL = makeState(); // e.g., 'http:'\n\n var S_MAILTO = makeState(); // 'mailto:'\n\n var S_PROTOCOL_SLASH = makeState(); // e.g., 'http:/''\n\n var S_PROTOCOL_SLASH_SLASH = makeState(); // e.g.,'http://'\n\n var S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\n\n var S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\n\n var S_TLD = makeAcceptingState(Url); // (A) Simplest possible URL with no query string\n\n var S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\n\n var S_TLD_PORT = makeAcceptingState(Url); // TLD followed by a port number\n\n var S_URL = makeAcceptingState(Url); // Long URL with optional port and maybe query string\n\n var S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n var S_URL_OPENBRACE = makeState(); // URL followed by {\n\n var S_URL_OPENBRACKET = makeState(); // URL followed by [\n\n var S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\n\n var S_URL_OPENPAREN = makeState(); // URL followed by (\n\n var S_URL_OPENBRACE_Q = makeAcceptingState(Url); // URL followed by { and some symbols that the URL can end it\n\n var S_URL_OPENBRACKET_Q = makeAcceptingState(Url); // URL followed by [ and some symbols that the URL can end it\n\n var S_URL_OPENANGLEBRACKET_Q = makeAcceptingState(Url); // URL followed by < and some symbols that the URL can end it\n\n var S_URL_OPENPAREN_Q = makeAcceptingState(Url); // URL followed by ( and some symbols that the URL can end it\n\n var S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\n\n var S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\n\n var S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\n\n var S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\n\n var S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\n\n var S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\n\n var S_EMAIL = makeAcceptingState(Email); // (C) Possible email address (could have more tlds)\n\n var S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\n\n var S_EMAIL_PORT = makeAcceptingState(Email); // (C) Email address with a port\n\n var S_MAILTO_EMAIL = makeAcceptingState(MailtoEmail); // Email that begins with the mailto prefix (D)\n\n var S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\n\n var S_LOCALPART = makeState(); // Local part of the email address\n\n var S_LOCALPART_AT = makeState(); // Local part of the email address plus @\n\n var S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\n\n var S_NL = makeAcceptingState(Nl); // single new line\n // Make path from start to protocol (with '//')\n\n makeT(S_START, NL, S_NL);\n makeT(S_START, PROTOCOL, S_PROTOCOL);\n makeT(S_START, MAILTO, S_MAILTO);\n makeT(S_PROTOCOL, SLASH, S_PROTOCOL_SLASH);\n makeT(S_PROTOCOL_SLASH, SLASH, S_PROTOCOL_SLASH_SLASH); // The very first potential domain name\n\n makeT(S_START, TLD, S_DOMAIN);\n makeT(S_START, DOMAIN, S_DOMAIN);\n makeT(S_START, LOCALHOST, S_TLD);\n makeT(S_START, NUM, S_DOMAIN); // Force URL for protocol followed by anything sane\n\n makeT(S_PROTOCOL_SLASH_SLASH, TLD, S_URL);\n makeT(S_PROTOCOL_SLASH_SLASH, DOMAIN, S_URL);\n makeT(S_PROTOCOL_SLASH_SLASH, NUM, S_URL);\n makeT(S_PROTOCOL_SLASH_SLASH, LOCALHOST, S_URL); // Account for dots and hyphens\n // hyphens are usually parts of domain names\n\n makeT(S_DOMAIN, DOT, S_DOMAIN_DOT);\n makeT(S_EMAIL_DOMAIN, DOT, S_EMAIL_DOMAIN_DOT); // Hyphen can jump back to a domain name\n // After the first domain and a dot, we can find either a URL or another domain\n\n makeT(S_DOMAIN_DOT, TLD, S_TLD);\n makeT(S_DOMAIN_DOT, DOMAIN, S_DOMAIN);\n makeT(S_DOMAIN_DOT, NUM, S_DOMAIN);\n makeT(S_DOMAIN_DOT, LOCALHOST, S_DOMAIN);\n makeT(S_EMAIL_DOMAIN_DOT, TLD, S_EMAIL);\n makeT(S_EMAIL_DOMAIN_DOT, DOMAIN, S_EMAIL_DOMAIN);\n makeT(S_EMAIL_DOMAIN_DOT, NUM, S_EMAIL_DOMAIN);\n makeT(S_EMAIL_DOMAIN_DOT, LOCALHOST, S_EMAIL_DOMAIN); // S_TLD accepts! But the URL could be longer, try to find a match greedily\n // The `run` function should be able to \"rollback\" to the accepting state\n\n makeT(S_TLD, DOT, S_DOMAIN_DOT);\n makeT(S_EMAIL, DOT, S_EMAIL_DOMAIN_DOT); // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here PSS and non-PSS converge\n\n makeT(S_TLD, COLON, S_TLD_COLON);\n makeT(S_TLD, SLASH, S_URL);\n makeT(S_TLD_COLON, NUM, S_TLD_PORT);\n makeT(S_TLD_PORT, SLASH, S_URL);\n makeT(S_EMAIL, COLON, S_EMAIL_COLON);\n makeT(S_EMAIL_COLON, NUM, S_EMAIL_PORT); // Types of characters the URL can definitely end in\n\n var qsAccepting = [AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, DOMAIN, EQUALS, HYPHEN, LOCALHOST, NUM, PERCENT, PIPE, PLUS, POUND, PROTOCOL, SLASH, SYM, TILDE, TLD, UNDERSCORE]; // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n\n var qsNonAccepting = [APOSTROPHE, CLOSEANGLEBRACKET, CLOSEBRACE, CLOSEBRACKET, CLOSEPAREN, COLON, COMMA, DOT, EXCLAMATION, OPENANGLEBRACKET, OPENBRACE, OPENBRACKET, OPENPAREN, QUERY, QUOTE, SEMI]; // These states are responsible primarily for determining whether or not to\n // include the final round bracket.\n // URL, followed by an opening bracket\n\n makeT(S_URL, OPENBRACE, S_URL_OPENBRACE);\n makeT(S_URL, OPENBRACKET, S_URL_OPENBRACKET);\n makeT(S_URL, OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET);\n makeT(S_URL, OPENPAREN, S_URL_OPENPAREN); // URL with extra symbols at the end, followed by an opening bracket\n\n makeT(S_URL_NON_ACCEPTING, OPENBRACE, S_URL_OPENBRACE);\n makeT(S_URL_NON_ACCEPTING, OPENBRACKET, S_URL_OPENBRACKET);\n makeT(S_URL_NON_ACCEPTING, OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET);\n makeT(S_URL_NON_ACCEPTING, OPENPAREN, S_URL_OPENPAREN); // Closing bracket component. This character WILL be included in the URL\n\n makeT(S_URL_OPENBRACE, CLOSEBRACE, S_URL);\n makeT(S_URL_OPENBRACKET, CLOSEBRACKET, S_URL);\n makeT(S_URL_OPENANGLEBRACKET, CLOSEANGLEBRACKET, S_URL);\n makeT(S_URL_OPENPAREN, CLOSEPAREN, S_URL);\n makeT(S_URL_OPENBRACE_Q, CLOSEBRACE, S_URL);\n makeT(S_URL_OPENBRACKET_Q, CLOSEBRACKET, S_URL);\n makeT(S_URL_OPENANGLEBRACKET_Q, CLOSEANGLEBRACKET, S_URL);\n makeT(S_URL_OPENPAREN_Q, CLOSEPAREN, S_URL);\n makeT(S_URL_OPENBRACE_SYMS, CLOSEBRACE, S_URL);\n makeT(S_URL_OPENBRACKET_SYMS, CLOSEBRACKET, S_URL);\n makeT(S_URL_OPENANGLEBRACKET_SYMS, CLOSEANGLEBRACKET, S_URL);\n makeT(S_URL_OPENPAREN_SYMS, CLOSEPAREN, S_URL); // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n // has a single opening bracket for some reason).\n\n makeMultiT(S_URL_OPENBRACE, qsAccepting, S_URL_OPENBRACE_Q);\n makeMultiT(S_URL_OPENBRACKET, qsAccepting, S_URL_OPENBRACKET_Q);\n makeMultiT(S_URL_OPENANGLEBRACKET, qsAccepting, S_URL_OPENANGLEBRACKET_Q);\n makeMultiT(S_URL_OPENPAREN, qsAccepting, S_URL_OPENPAREN_Q);\n makeMultiT(S_URL_OPENBRACE, qsNonAccepting, S_URL_OPENBRACE_SYMS);\n makeMultiT(S_URL_OPENBRACKET, qsNonAccepting, S_URL_OPENBRACKET_SYMS);\n makeMultiT(S_URL_OPENANGLEBRACKET, qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\n makeMultiT(S_URL_OPENPAREN, qsNonAccepting, S_URL_OPENPAREN_SYMS); // URL that begins with an opening bracket, followed by some symbols\n\n makeMultiT(S_URL_OPENBRACE_Q, qsAccepting, S_URL_OPENBRACE_Q);\n makeMultiT(S_URL_OPENBRACKET_Q, qsAccepting, S_URL_OPENBRACKET_Q);\n makeMultiT(S_URL_OPENANGLEBRACKET_Q, qsAccepting, S_URL_OPENANGLEBRACKET_Q);\n makeMultiT(S_URL_OPENPAREN_Q, qsAccepting, S_URL_OPENPAREN_Q);\n makeMultiT(S_URL_OPENBRACE_Q, qsNonAccepting, S_URL_OPENBRACE_Q);\n makeMultiT(S_URL_OPENBRACKET_Q, qsNonAccepting, S_URL_OPENBRACKET_Q);\n makeMultiT(S_URL_OPENANGLEBRACKET_Q, qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\n makeMultiT(S_URL_OPENPAREN_Q, qsNonAccepting, S_URL_OPENPAREN_Q);\n makeMultiT(S_URL_OPENBRACE_SYMS, qsAccepting, S_URL_OPENBRACE_Q);\n makeMultiT(S_URL_OPENBRACKET_SYMS, qsAccepting, S_URL_OPENBRACKET_Q);\n makeMultiT(S_URL_OPENANGLEBRACKET_SYMS, qsAccepting, S_URL_OPENANGLEBRACKET_Q);\n makeMultiT(S_URL_OPENPAREN_SYMS, qsAccepting, S_URL_OPENPAREN_Q);\n makeMultiT(S_URL_OPENBRACE_SYMS, qsNonAccepting, S_URL_OPENBRACE_SYMS);\n makeMultiT(S_URL_OPENBRACKET_SYMS, qsNonAccepting, S_URL_OPENBRACKET_SYMS);\n makeMultiT(S_URL_OPENANGLEBRACKET_SYMS, qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\n makeMultiT(S_URL_OPENPAREN_SYMS, qsNonAccepting, S_URL_OPENPAREN_SYMS); // Account for the query string\n\n makeMultiT(S_URL, qsAccepting, S_URL);\n makeMultiT(S_URL_NON_ACCEPTING, qsAccepting, S_URL);\n makeMultiT(S_URL, qsNonAccepting, S_URL_NON_ACCEPTING);\n makeMultiT(S_URL_NON_ACCEPTING, qsNonAccepting, S_URL_NON_ACCEPTING); // Email address-specific state definitions\n // Note: We are not allowing '/' in email addresses since this would interfere\n // with real URLs\n // For addresses with the mailto prefix\n // 'mailto:' followed by anything sane is a valid email\n\n makeT(S_MAILTO, TLD, S_MAILTO_EMAIL);\n makeT(S_MAILTO, DOMAIN, S_MAILTO_EMAIL);\n makeT(S_MAILTO, NUM, S_MAILTO_EMAIL);\n makeT(S_MAILTO, LOCALHOST, S_MAILTO_EMAIL); // Greedily get more potential valid email values\n\n makeMultiT(S_MAILTO_EMAIL, qsAccepting, S_MAILTO_EMAIL);\n makeMultiT(S_MAILTO_EMAIL, qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n makeMultiT(S_MAILTO_EMAIL_NON_ACCEPTING, qsAccepting, S_MAILTO_EMAIL);\n makeMultiT(S_MAILTO_EMAIL_NON_ACCEPTING, qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING); // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n\n var localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, CLOSEBRACE, DOLLAR, DOMAIN, EQUALS, HYPHEN, NUM, OPENBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, TLD, UNDERSCORE]; // Some of the tokens in `localpartAccepting` are already accounted for here and\n // will not be overwritten (don't worry)\n\n makeMultiT(S_DOMAIN, localpartAccepting, S_LOCALPART);\n makeT(S_DOMAIN, AT, S_LOCALPART_AT);\n makeMultiT(S_TLD, localpartAccepting, S_LOCALPART);\n makeT(S_TLD, AT, S_LOCALPART_AT);\n makeMultiT(S_DOMAIN_DOT, localpartAccepting, S_LOCALPART); // Now in localpart of address\n // TODO: IP addresses and what if the email starts with numbers?\n\n makeMultiT(S_LOCALPART, localpartAccepting, S_LOCALPART);\n makeT(S_LOCALPART, AT, S_LOCALPART_AT); // close to an email address now\n\n makeT(S_LOCALPART, DOT, S_LOCALPART_DOT);\n makeMultiT(S_LOCALPART_DOT, localpartAccepting, S_LOCALPART);\n makeT(S_LOCALPART_AT, TLD, S_EMAIL_DOMAIN);\n makeT(S_LOCALPART_AT, DOMAIN, S_EMAIL_DOMAIN);\n makeT(S_LOCALPART_AT, NUM, S_EMAIL_DOMAIN);\n makeT(S_LOCALPART_AT, LOCALHOST, S_EMAIL); // States following `@` defined above\n\n return S_START;\n}\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {{t: string, v: string, s: number, e: number}[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\n\nfunction run(start, input, tokens) {\n var len = tokens.length;\n var cursor = 0;\n var multis = [];\n var textTokens = [];\n\n while (cursor < len) {\n var state = start;\n var secondState = null;\n var nextState = null;\n var multiLength = 0;\n var latestAccepting = null;\n var sinceAccepts = -1;\n\n while (cursor < len && !(secondState = takeT(state, tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n\n while (cursor < len && (nextState = secondState || takeT(state, tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState; // Keep track of the latest accepting state\n\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n\n cursor++;\n multiLength++;\n }\n\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token\n // Add all the tokens we looked at to the text tokens array\n for (var i = cursor - multiLength; i < cursor; i++) {\n textTokens.push(tokens[i]);\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(parserCreateMultiToken(Text, input, textTokens));\n textTokens = [];\n } // Roll back to the latest accepting state\n\n\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts; // Create a new multitoken\n\n var Multi = latestAccepting.t;\n var subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(parserCreateMultiToken(Multi, input, subtokens));\n }\n } // Finally close off the textTokens (if available)\n\n\n if (textTokens.length > 0) {\n multis.push(parserCreateMultiToken(Text, input, textTokens));\n }\n\n return multis;\n}\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {Class<MultiToken>} Multi class to instantiate\n * @param {string} input original input string\n * @param {{t: string, v: string, s: number, e: number}[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\n\nfunction parserCreateMultiToken(Multi, input, tokens) {\n var startIdx = tokens[0].s;\n var endIdx = tokens[tokens.length - 1].e;\n var value = input.substr(startIdx, endIdx - startIdx);\n return new Multi(value, tokens);\n}\n\nvar warn = typeof console !== 'undefined' && console && console.warn || function () {}; // Side-effect initialization state\n\n\nvar INIT = {\n scanner: null,\n parser: null,\n pluginQueue: [],\n customProtocols: [],\n initialized: false\n};\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\n\nfunction reset() {\n INIT.scanner = null;\n INIT.parser = null;\n INIT.pluginQueue = [];\n INIT.customProtocols = [];\n INIT.initialized = false;\n}\n/**\n * Register a linkify extension plugin\n * @param {string} name of plugin to register\n * @param {Function} plugin function that accepts mutable linkify state\n */\n\nfunction registerPlugin(name, plugin) {\n for (var i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(\"linkifyjs: plugin \\\"\".concat(name, \"\\\" already registered - will be overwritten\"));\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n\n INIT.pluginQueue.push([name, plugin]);\n\n if (INIT.initialized) {\n warn(\"linkifyjs: already initialized - will not register plugin \\\"\".concat(name, \"\\\" until you manually call linkify.init(). To avoid this warning, please register all plugins before invoking linkify the first time.\"));\n }\n}\n/**\n * Detect URLs with the following additional protocol. Anything following\n * \"protocol:\" will be considered a link.\n * @param {string} protocol\n */\n\nfunction registerCustomProtocol(protocol) {\n if (INIT.initialized) {\n warn(\"linkifyjs: already initialized - will not register custom protocol \\\"\".concat(protocol, \"\\\" until you manually call linkify.init(). To avoid this warning, please register all custom protocols before invoking linkify the first time.\"));\n }\n\n if (!/^[a-z-]+$/.test(protocol)) {\n throw Error('linkifyjs: protocols containing characters other than a-z or - (hyphen) are not supported');\n }\n\n INIT.customProtocols.push(protocol);\n}\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\n\nfunction init() {\n // Initialize state machines\n INIT.scanner = {\n start: init$2(INIT.customProtocols),\n tokens: text\n };\n INIT.parser = {\n start: init$1(),\n tokens: multi\n };\n var utils = {\n createTokenClass: createTokenClass\n }; // Initialize plugins\n\n for (var i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser,\n utils: utils\n });\n }\n\n INIT.initialized = true;\n}\n/**\n\tParse a string into tokens that represent linkable and non-linkable sub-components\n\t@param {string} str\n\t@return {MultiToken[]} tokens\n*/\n\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\n/**\n\tFind a list of linkable items in the given string.\n\t@param {string} str string to find links in\n\t@param {string} [type] (optional) only find links of a specific type, e.g.,\n\t'url' or 'email'\n*/\n\nfunction find(str) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var tokens = tokenize(str);\n var filtered = [];\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (token.isLink && (!type || token.t === type)) {\n filtered.push(token.toObject());\n }\n }\n\n return filtered;\n}\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\n\nfunction test(str) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { Options, find, init, options, registerCustomProtocol, registerPlugin, reset, test, tokenize };\n","import * as React from 'react';\nimport { Options, tokenize } from 'linkifyjs';\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n * Given a string, converts to an array of valid React components\n * (which may include strings)\n * @param {string} str\n * @param {any} opts\n * @returns {React.ReactNodeArray}\n */\n\nfunction stringToElements(str, opts) {\n var tokens = tokenize(str);\n var elements = [];\n var linkId = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (token.t === 'nl' && opts.nl2br) {\n elements.push(React.createElement('br', {\n key: \"linkified-\".concat(++linkId)\n }));\n continue;\n } else if (!token.isLink || !opts.check(token)) {\n // Regular text\n elements.push(token.toString());\n continue;\n }\n\n var _opts$resolve = opts.resolve(token),\n formatted = _opts$resolve.formatted,\n formattedHref = _opts$resolve.formattedHref,\n tagName = _opts$resolve.tagName,\n className = _opts$resolve.className,\n target = _opts$resolve.target,\n rel = _opts$resolve.rel,\n attributes = _opts$resolve.attributes;\n\n var props = {\n key: \"linkified-\".concat(++linkId),\n href: formattedHref\n };\n\n if (className) {\n props.className = className;\n }\n\n if (target) {\n props.target = target;\n }\n\n if (rel) {\n props.rel = rel;\n } // Build up additional attributes\n // Support for events via attributes hash\n\n\n if (attributes) {\n for (var attr in attributes) {\n props[attr] = attributes[attr];\n }\n }\n\n elements.push(React.createElement(tagName, props, formatted));\n }\n\n return elements;\n} // Recursively linkify the contents of the given React Element instance\n\n/**\n * @template P\n * @template {string | React.JSXElementConstructor<P>} T\n * @param {React.ReactElement<P, T>} element\n * @param {Object} opts\n * @param {number} elementId\n * @returns {React.ReactElement<P, T>}\n */\n\n\nfunction linkifyReactElement(element, opts) {\n var elementId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (React.Children.count(element.props.children) === 0) {\n // No need to clone if the element had no children\n return element;\n }\n\n var children = [];\n React.Children.forEach(element.props.children, function (child) {\n if (typeof child === 'string') {\n // ensure that we always generate unique element IDs for keys\n elementId = elementId + 1;\n children.push.apply(children, _toConsumableArray(stringToElements(child, opts)));\n } else if (React.isValidElement(child)) {\n if (typeof child.type === 'string' && opts.ignoreTags.indexOf(child.type.toUpperCase()) >= 0) {\n // Don't linkify this element\n children.push(child);\n } else {\n children.push(linkifyReactElement(child, opts, ++elementId));\n }\n } else {\n // Unknown element type, just push\n children.push(child);\n }\n }); // Set a default unique key, copy over remaining props\n\n var newProps = {\n key: \"linkified-element-\".concat(elementId)\n };\n\n for (var prop in element.props) {\n newProps[prop] = element.props[prop];\n }\n\n return React.cloneElement(element, newProps, children);\n}\n/**\n * @template P\n * @template {string | React.JSXElementConstructor<P>} T\n * @param {P & { tagName?: T, options?: any, children?: React.ReactNode}} props\n * @returns {React.ReactElement<P, T>}\n */\n\n\nvar Linkify = function Linkify(props) {\n // Copy over all non-linkify-specific props\n var newProps = {\n key: 'linkified-element-wrapper'\n };\n\n for (var prop in props) {\n if (prop !== 'options' && prop !== 'tagName' && prop !== 'children') {\n newProps[prop] = props[prop];\n }\n }\n\n var opts = new Options(props.options);\n var tagName = props.tagName || React.Fragment || 'span';\n var children = props.children;\n var element = React.createElement(tagName, newProps, children);\n return linkifyReactElement(element, opts, 0);\n};\n\nexport { Linkify as default };\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport ReactLinkify from 'linkify-react';\nimport { Fragment, memo } from 'react';\nconst phoneNumberRegex = /(0030|\\+30)?(210\\d{7}|^69\\d{8})|(\\+\\d{1,2})?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}/gi;\nexport const Linkify = memo(({ children: message }) => {\n var _a, _b;\n const formatPhone = () => {\n const phoneIndex = message\n .split(' ')\n .findIndex((cell) => cell.match(phoneNumberRegex));\n if (phoneIndex !== -1) {\n const updatedMessage = message.split(' ').map((cell, index) => {\n if (index === phoneIndex) {\n return _jsx(\"a\", Object.assign({ href: `tel:${cell}` }, { children: cell }), void 0);\n }\n return cell;\n });\n return {\n hasPhone: true,\n message: updatedMessage,\n };\n }\n else {\n return {\n hasPhone: false,\n };\n }\n };\n if (!formatPhone().hasPhone) {\n return _jsx(ReactLinkify, { children: message }, void 0);\n }\n return (_jsx(_Fragment, { children: (_b = (_a = formatPhone()) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.map((value, i) => (_jsxs(Fragment, { children: [_jsx(ReactLinkify, { children: value }, void 0), ' '] }, i))) }, void 0));\n});\nLinkify.displayName = 'Linkify';\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback } from 'react';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport { Linkify } from '@/components/Linkify/Linkify';\nimport { useSocket } from '@/hooks/useSocket';\nimport styles from './Message.module.scss';\nexport const Text = ({ message, avatar, disabled }) => {\n const { sendMessage } = useSocket();\n const handleOptionClick = useCallback((text) => {\n sendMessage({ text });\n }, [sendMessage]);\n return (_jsxs(_Fragment, { children: [_jsxs(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsx(Linkify, { children: message.text }, void 0)] }), void 0), (message === null || message === void 0 ? void 0 : message.options) && (_jsx(\"li\", Object.assign({ className: styles.textOptionsContainer }, { children: _jsx(\"ul\", { children: message.options.map(({ label, text }) => (_jsx(\"button\", Object.assign({ disabled: disabled, className: styles.textOption, tabIndex: 0, onClick: () => handleOptionClick(text) }, { children: label }), label))) }, void 0) }), void 0))] }, void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport styles from './Message.module.scss';\nexport const Url = ({ url, title, avatar }) => {\n return (_jsxs(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsx(\"a\", Object.assign({ className: styles.link, href: url, target: \"_blank\", rel: \"noreferrer\" }, { children: title || url }), void 0)] }), void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport styles from './Message.module.scss';\nexport const Video = ({ name, url, avatar }) => {\n const { t } = useTranslation();\n return (_jsxs(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant) }, { children: [_jsx(Avatar, { avatar: avatar }, void 0), _jsxs(\"video\", Object.assign({ className: styles.video, controls: true, title: name }, { children: [_jsx(\"source\", { src: url, type: \"video/mp4\" }, void 0), _jsx(\"p\", { children: t('no_video_tag') }, void 0)] }), void 0)] }), void 0));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport debug from 'debug';\nimport { useRecoilValue } from 'recoil';\nimport { WebviewResponse } from '@/components/Message/Webview/WebviewResponse';\nimport { isResponseDisabledSelector } from '@/state/session';\nimport { Audio } from './Audio';\nimport { Carousel } from './Carousel/Carousel';\nimport { File } from './File';\nimport { Image } from './Image';\nimport { Text } from './Text';\nimport { Url } from './Url';\nimport { Video } from './Video';\nconst log = debug('moveo:response-event');\nexport const ResponseEvent = ({ event }) => {\n const isDisabled = useRecoilValue(isResponseDisabledSelector(event.event_id));\n const message = event.response;\n switch (message.type) {\n case 'text':\n case 'disambiguation':\n return (_jsx(Text, { avatar: event.author_avatar, message: message, disabled: isDisabled }, void 0));\n case 'url':\n return _jsx(Url, { avatar: event.author_avatar, url: message.url }, void 0);\n case 'video':\n return (_jsx(Video, { avatar: event.author_avatar, url: message.url, name: message.name }, void 0));\n case 'image':\n return (_jsx(Image, { avatar: event.author_avatar, url: message.url, name: message.name }, void 0));\n case 'file':\n return (_jsx(File, { avatar: event.author_avatar, url: message.url, name: message.name }, void 0));\n case 'audio':\n return _jsx(Audio, { avatar: event.author_avatar, url: message.url }, void 0);\n case 'carousel':\n return (_jsx(Carousel, { avatar: event.author_avatar, message: message, disabled: isDisabled }, void 0));\n case 'pause':\n return null;\n case 'webview':\n return _jsx(WebviewResponse, { avatar: event.author_avatar, webview: message }, void 0);\n default:\n log('message-not-supported', message);\n }\n return null;\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Check = ({ size = '12' }) => {\n return (_jsx(\"svg\", Object.assign({ width: size, height: size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\" }, { children: _jsx(\"path\", { d: \"M20.933 5.187 8.875 17.464 3.067 11.55a.616.616 0 0 0-.884 0 .644.644 0 0 0 0 .9l6.25 6.364a.618.618 0 0 0 .884 0l12.5-12.728a.644.644 0 0 0 0-.9.616.616 0 0 0-.884 0Z\", fill: \"currentColor\" }, void 0) }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./DeliverInfo.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./DeliverInfo.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { Check } from '../Icons/Check';\nimport styles from './DeliverInfo.module.scss';\nexport const DeliverInfo = ({ chatEvent }) => {\n if (chatEvent.event_type === 'user_message') {\n const time = new Date(0);\n time.setUTCSeconds(chatEvent.created_at);\n return (_jsxs(\"div\", Object.assign({ className: styles.receipt }, { children: [_jsx(\"span\", Object.assign({ className: cn(styles.checkGroup, {\n [styles.delivered]: !!chatEvent.read_at,\n }) }, { children: chatEvent.delivered_at && (_jsxs(_Fragment, { children: [_jsx(\"span\", Object.assign({ className: styles.check }, { children: _jsx(Check, {}, void 0) }), void 0), _jsx(\"span\", { children: _jsx(Check, {}, void 0) }, void 0)] }, void 0)) }), void 0), _jsx(\"span\", { children: `${time.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n })}`\n .replace('AM', '')\n .replace('PM', '') }, void 0)] }), void 0));\n }\n throw new Error(\"Shouldn't be reachable\");\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./ChatEvent.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./ChatEvent.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport debug from 'debug';\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Avatar } from '@/components/Avatar/Avatar';\nimport { ResponseEvent } from '@/components/Message/ResponseEvent';\nimport { DeliverInfo } from './DeliverInfo';\nimport messageStyles from '../Message/Message.module.scss';\nimport styles from './ChatEvent.module.scss';\nconst log = debug('moveo:test-utils');\nexport const ChatEvent = memo(({ event }) => {\n const { t } = useTranslation();\n if (event.event_type === 'user_message') {\n return (_jsxs(\"li\", Object.assign({ className: cn(styles.container) }, { children: [_jsx(\"div\", Object.assign({ className: styles.userMessage }, { children: event.text }), void 0), _jsx(DeliverInfo, { chatEvent: event }, void 0)] }), void 0));\n }\n if (event.event_type === 'agent_message') {\n return (_jsxs(\"li\", Object.assign({ className: cn(messageStyles.messageBubble, messageStyles.assistant) }, { children: [_jsx(Avatar, { avatar: event.author_avatar, name: event.author_name }, void 0), _jsx(\"div\", { children: event.text }, void 0)] }), void 0));\n }\n if (event.event_type === 'member_join') {\n return (_jsx(\"div\", Object.assign({ className: styles.swimmLineWithText }, { children: _jsx(\"div\", { children: t('events.member_join', event) }, void 0) }), void 0));\n }\n if (event.event_type === 'member_leave') {\n return (_jsx(\"div\", Object.assign({ className: styles.swimmLineWithText }, { children: _jsx(\"div\", { children: t('events.member_leave', event) }, void 0) }), void 0));\n }\n if (event.event_type === 'brain_message') {\n return (_jsx(\"span\", { children: _jsx(ResponseEvent, { event: event }, void 0) }, void 0));\n }\n log(`Ignoring event: ${JSON.stringify(event)}`);\n return null;\n});\nChatEvent.displayName = 'ChatEvent';\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./EmptyIcon.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./EmptyIcon.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport styles from './EmptyIcon.module.scss';\nexport const EmptyIcon = ({ size }) => {\n return (_jsx(_Fragment, { children: _jsxs(\"svg\", Object.assign({ width: size === 'regular' ? '120px' : '100px', height: size === 'regular' ? '120px' : '100px', viewBox: \"0 0 186 194\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", className: styles.icon }, { children: [_jsxs(\"g\", Object.assign({ filter: \"url(#filter0_ddd)\" }, { children: [_jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M141.406 111.325C150.518 100.398 156 86.339 156 71c0-34.794-28.206-63-63-63S30 36.206 30 71s28.206 63 63 63c11.415 0 22.12-3.036 31.353-8.344 10.718 6.108 22.318 7.747 28.038 8.185 1.012.077 1.437-1.279.632-1.897-3.738-2.866-9.814-8.569-11.062-16.1a62.755 62.755 0 01-.555-4.519z\" }, void 0), _jsx(\"rect\", { x: \"53.625\", y: \"81.5\", width: \"13.125\", height: \"21\", rx: \"6.563\", transform: \"rotate(-90 53.625 81.5)\" }, void 0), _jsx(\"rect\", { x: \"79.875\", y: \"81.5\", width: \"13.125\", height: \"21\", rx: \"6.563\", transform: \"rotate(-90 79.875 81.5)\" }, void 0), _jsx(\"rect\", { x: \"106.125\", y: \"81.5\", width: \"13.125\", height: \"21\", rx: \"6.563\", transform: \"rotate(-90 106.125 81.5)\" }, void 0), _jsx(\"rect\", { x: \"53.625\", y: \"60.5\", width: \"13.125\", height: \"26.25\", rx: \"6.563\", transform: \"rotate(-90 53.625 60.5)\" }, void 0), _jsx(\"rect\", { x: \"53.625\", y: \"99.875\", width: \"13.125\", height: \"26.25\", rx: \"6.563\", transform: \"rotate(-90 53.625 99.875)\" }, void 0), _jsx(\"circle\", { cx: \"107.992\", cy: \"55.25\", r: \"7.875\" }, void 0), _jsx(\"circle\", { cx: \"90.375\", cy: \"55.25\", r: \"5.25\" }, void 0), _jsx(\"circle\", { cx: \"126.367\", cy: \"55.25\", r: \"5.25\" }, void 0)] }), void 0), _jsx(\"defs\", { children: _jsxs(\"filter\", Object.assign({ id: \"filter0_ddd\", x: \"0\", y: \"0\", width: \"186\", height: \"194\", filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\" }, { children: [_jsx(\"feFlood\", { floodOpacity: \"0\", result: \"BackgroundImageFix\" }, void 0), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" }, void 0), _jsx(\"feOffset\", { dy: \"30\" }, void 0), _jsx(\"feGaussianBlur\", { stdDeviation: \"15\" }, void 0), _jsx(\"feColorMatrix\", { values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02 0\" }, void 0), _jsx(\"feBlend\", { in2: \"BackgroundImageFix\", result: \"effect1_dropShadow\" }, void 0), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" }, void 0), _jsx(\"feOffset\", {}, void 0), _jsx(\"feGaussianBlur\", { stdDeviation: \"4\" }, void 0), _jsx(\"feColorMatrix\", { values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03 0\" }, void 0), _jsx(\"feBlend\", { in2: \"effect1_dropShadow\", result: \"effect2_dropShadow\" }, void 0), _jsx(\"feColorMatrix\", { in: \"SourceAlpha\", values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" }, void 0), _jsx(\"feOffset\", { dy: \"1\" }, void 0), _jsx(\"feColorMatrix\", { values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0\" }, void 0), _jsx(\"feBlend\", { in2: \"effect2_dropShadow\", result: \"effect3_dropShadow\" }, void 0), _jsx(\"feBlend\", { in: \"SourceGraphic\", in2: \"effect3_dropShadow\", result: \"shape\" }, void 0)] }), void 0) }, void 0)] }), void 0) }, void 0));\n};\nEmptyIcon.defaultProps = {\n size: 'regular',\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./EmptyMessage.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./EmptyMessage.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useTranslation } from 'react-i18next';\nimport { EmptyIcon } from '@/components/Icons/EmptyIcon';\nimport styles from './EmptyMessage.module.scss';\nexport const EmptyMessage = () => {\n const { t } = useTranslation();\n return (_jsxs(\"div\", Object.assign({ className: styles.container }, { children: [_jsx(EmptyIcon, {}, void 0), _jsx(\"p\", { children: t('no_messages') }, void 0)] }), void 0));\n};\n","import { atom, selector } from 'recoil';\nimport { getConfig } from '@/config';\nimport { chatEventsState, widgetState } from './session';\nexport const widgetConfigState = atom({\n key: 'widgetConfig',\n default: {\n header_title: 'Virtual Assistant',\n accent_color: '#ffffff',\n background_color: '#1B66D6',\n icon_size: 'regular',\n show_powered_by: true,\n window_size: 'regular',\n welcome_message: null,\n welcome_trigger_message: null,\n widget_position: 'livechat',\n focus_trap: true,\n launcher: {\n size: 'regular',\n show: true,\n type: 'bubble',\n icon_url: null,\n text: null,\n },\n theme: 'light',\n optional_fields: null,\n required_fields: null,\n disclaimer: null,\n welcome_screen: {\n enabled: false,\n greeting: null,\n starters: null,\n },\n },\n});\nexport const backgroundColorSelector = selector({\n key: 'backgroundColorSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.background_color;\n },\n});\nexport const headerTitleSelector = selector({\n key: 'headerTitleSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.header_title;\n },\n});\nexport const accentColorSelector = selector({\n key: 'accentColorSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.accent_color;\n },\n});\nexport const iconSizeSelector = selector({\n key: 'iconSizeSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.icon_size;\n },\n});\nexport const windowSizeSelector = selector({\n key: 'windowSizeSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.window_size;\n },\n});\nexport const showPoweredBySelector = selector({\n key: 'showPoweredBySelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.show_powered_by;\n },\n});\nexport const welcomeMessageSelector = selector({\n key: 'welcomeMessageSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.welcome_message;\n },\n});\nexport const welcomeTriggerMessageSelector = selector({\n key: 'welcomeTriggerMessageSelector',\n get: ({ get }) => {\n var _a;\n const config = get(widgetConfigState);\n const events = get(chatEventsState);\n const open = get(widgetState).open;\n if (events.length === 0 &&\n open &&\n !((_a = config.welcome_screen) === null || _a === void 0 ? void 0 : _a.enabled) &&\n config.welcome_trigger_message) {\n return config.welcome_trigger_message;\n }\n return null;\n },\n});\nexport const widgetPositionSelector = selector({\n key: 'widgetPositionSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.widget_position;\n },\n});\nexport const avatarSelector = selector({\n key: 'avatarSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.avatar || getConfig().BRAIN_AVATAR;\n },\n});\nexport const themeSelector = selector({\n key: 'themeSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.theme;\n },\n});\nexport const launcherSelector = selector({\n key: 'launcherSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.launcher || {};\n },\n});\nexport const disclaimerSelector = selector({\n key: 'disclaimerSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.disclaimer;\n },\n});\nexport const optionalFieldsSelector = selector({\n key: 'optionalFieldsSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.optional_fields;\n },\n});\nexport const requiredFieldsSelector = selector({\n key: 'requiredFieldsSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.required_fields;\n },\n});\nexport const focusTrapSelector = selector({\n key: 'focusTrapSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.focus_trap;\n },\n});\nexport const welcomeScreenSelector = selector({\n key: 'welcomeScreenSelector',\n get: ({ get }) => {\n const config = get(widgetConfigState);\n return config.welcome_screen;\n },\n});\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Starter.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Starter.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { useSocket } from '@/hooks/useSocket';\nimport styles from './Starter.module.scss';\nexport const Starter = ({ title }) => {\n const { sendMessage } = useSocket();\n const handleStarterClick = useCallback((text) => {\n sendMessage({ text });\n }, [sendMessage]);\n return (_jsx(\"div\", Object.assign({ onClick: () => handleStarterClick(title), onKeyUp: () => handleStarterClick(title), role: \"button\", tabIndex: 0, className: styles.starter }, { children: title }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./WelcomeGreeting.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./WelcomeGreeting.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport styles from './WelcomeGreeting.module.scss';\nexport const WelcomeGreeting = ({ greeting }) => (_jsx(\"div\", Object.assign({ className: styles.container }, { children: greeting }), void 0));\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Starter } from '../WelcomeScreen/Starter';\nimport { WelcomeGreeting } from '../WelcomeScreen/WelcomeGreeting';\nimport styles from './WelcomeGreeting.module.scss';\nexport const WelcomeWrapper = ({ welcomeScreen }) => {\n var _a;\n return (_jsxs(\"div\", Object.assign({ className: styles.container }, { children: [(welcomeScreen === null || welcomeScreen === void 0 ? void 0 : welcomeScreen.enabled) && (_jsx(WelcomeGreeting, { greeting: welcomeScreen.greeting }, void 0)), (_a = welcomeScreen === null || welcomeScreen === void 0 ? void 0 : welcomeScreen.starters) === null || _a === void 0 ? void 0 : _a.map((starter) => (_jsx(Starter, { title: starter }, starter)))] }), void 0));\n};\n","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport { usePageVisibility } from 'react-page-visibility';\nimport { useRecoilValue } from 'recoil';\nimport { ChatEvent } from '@/components/ChatEvent/ChatEvent';\nimport { EmptyMessage } from '@/components/ChatEvents/EmptyMessage';\nimport { useSocket } from '@/hooks/useSocket';\nimport { chatEventsState, isWidgetOpenSelector, lastMessageReceivedSelector, sessionIdSelector, } from '@/state/session';\nimport { welcomeScreenSelector, welcomeTriggerMessageSelector, } from '@/state/widget';\nimport { WelcomeWrapper } from '../WelcomeScreen/WelcomeWrapper';\nexport const ChatEvents = () => {\n const isVisible = usePageVisibility();\n const { markMessagesAsRead, sendMessage } = useSocket();\n const chatEvents = useRecoilValue(chatEventsState);\n const lastMessageReceived = useRecoilValue(lastMessageReceivedSelector);\n const open = useRecoilValue(isWidgetOpenSelector);\n const session_id = useRecoilValue(sessionIdSelector);\n const welcomeScreen = useRecoilValue(welcomeScreenSelector);\n const welcomeTriggerMessage = useRecoilValue(welcomeTriggerMessageSelector);\n useEffect(() => {\n if (welcomeTriggerMessage && session_id) {\n sendMessage({ text: welcomeTriggerMessage });\n }\n }, [sendMessage, session_id, welcomeTriggerMessage]);\n useEffect(() => {\n if (isVisible &&\n open &&\n lastMessageReceived &&\n !('read_at' in lastMessageReceived)) {\n markMessagesAsRead();\n }\n }, [lastMessageReceived, markMessagesAsRead, isVisible, open]);\n return (_jsxs(_Fragment, { children: [chatEvents.length === 0 && !(welcomeScreen === null || welcomeScreen === void 0 ? void 0 : welcomeScreen.enabled) && _jsx(EmptyMessage, {}, void 0), chatEvents.length === 0 && (welcomeScreen === null || welcomeScreen === void 0 ? void 0 : welcomeScreen.enabled) && (_jsx(WelcomeWrapper, { welcomeScreen: welcomeScreen }, void 0)), chatEvents.length > 0 &&\n chatEvents.map((event) => {\n return _jsx(ChatEvent, { event: event }, event.event_id);\n })] }, void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const CloseMobileIcon = ({ color, size }) => {\n return (_jsxs(\"svg\", Object.assign({ width: size, height: size, viewBox: \"0 0 12 12\", fill: \"none\", stroke: color, xmlns: \"http://www.w3.org/2000/svg\" }, { children: [_jsx(\"path\", { d: \"M1.97974 2L5.95953 5.9999L1.97974 9.9998\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }, void 0), _jsx(\"path\", { d: \"M10.0203 2.00024L6.04047 6.00015L10.0203 10\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }, void 0)] }), void 0));\n};\nCloseMobileIcon.defaultProps = {\n color: 'var(--accent-color)',\n size: 16,\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./StatusDotIcon.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./StatusDotIcon.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport styles from './StatusDotIcon.module.scss';\nexport const StatusDotIcon = ({ status }) => {\n return (_jsx(\"svg\", Object.assign({ className: cn(styles.icon, styles[status]), width: \"6\", height: \"6\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: _jsx(\"circle\", { cx: \"3\", cy: \"3\", r: \"3\" }, void 0) }), void 0));\n};\n","import { atom } from 'recoil';\nexport const connectionState = atom({\n key: 'connectionState',\n default: 'offline',\n});\nexport const socketIdState = atom({\n key: 'socketIdState',\n default: undefined,\n});\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DotsThree = ({ size = 24 }) => {\n return (_jsx(\"svg\", Object.assign({ width: size, height: size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: _jsx(\"path\", { d: \"M12 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM19 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM5 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\", fill: \"#fff\", stroke: \"#fff\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }, void 0) }), void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const Reset = ({ size = '18', color = '#000' }) => {\n return (_jsxs(\"svg\", Object.assign({ width: size, height: size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: [_jsx(\"path\", { d: \"M15.58 8.992c0-3.723-2.955-6.742-6.6-6.742a6.465 6.465 0 0 0-2.864.666A6.622 6.622 0 0 0 3.82 4.79M2.4 7.882v1.124c0 3.727 2.954 6.744 6.6 6.744a6.519 6.519 0 0 0 2.857-.665 6.674 6.674 0 0 0 2.3-1.859\", stroke: color, strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }, void 0), _jsx(\"path\", { d: \"m.75 9.001 1.62-1.66 1.695 1.66M17.25 9l-1.62 1.66L13.934 9\", stroke: color, strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }, void 0)] }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Dropdown.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Dropdown.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useResetRecoilState } from 'recoil';\nimport { chatEventsState, sessionState } from '@/state/session';\nimport { Reset } from '../Icons/Reset';\nimport styles from './Dropdown.module.scss';\nexport const Dropdown = ({ callbackFn }) => {\n const { t } = useTranslation();\n const resetSessionState = useResetRecoilState(sessionState);\n const resetChatEvents = useResetRecoilState(chatEventsState);\n const items = [\n { id: 'reset', icon: _jsx(Reset, {}, void 0), text: t('reset_conversation') },\n ];\n const handleDropdownSelection = useCallback((text) => {\n if (text === 'reset') {\n resetSessionState();\n resetChatEvents();\n callbackFn(false);\n }\n }, [callbackFn, resetChatEvents, resetSessionState]);\n return (_jsx(\"div\", Object.assign({ className: styles.container }, { children: items.map((x) => (_jsxs(\"span\", Object.assign({ className: styles.item, onClick: () => handleDropdownSelection(x.id), onKeyUp: () => handleDropdownSelection(x.id), role: \"button\", tabIndex: 0 }, { children: [x.icon, \" \", _jsx(\"span\", Object.assign({ className: styles.text }, { children: x.text }), void 0)] }), x.id))) }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Header.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Header.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback, useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { CloseMobileIcon } from '@/components/Icons/CloseMobileIcon';\nimport { StatusDotIcon } from '@/components/Icons/StatusDotIcon';\nimport { widgetState } from '@/state/session';\nimport { connectionState } from '@/state/socket';\nimport { headerTitleSelector, widgetPositionSelector } from '@/state/widget';\nimport { DotsThree } from '../Icons/DotsThree';\nimport { Dropdown } from './Dropdown';\nimport styles from './Header.module.scss';\nexport const Header = () => {\n const widgetPosition = useRecoilValue(widgetPositionSelector);\n const connectionStatus = useRecoilValue(connectionState);\n const title = useRecoilValue(headerTitleSelector);\n const [state, setState] = useRecoilState(widgetState);\n const [showDropdown, setShowDropdown] = useState(false);\n const handleMobileCloseButton = useCallback(() => {\n setState({ open: false });\n }, [setState]);\n const handleDropdownButton = useCallback(() => {\n setShowDropdown(!showDropdown);\n }, [showDropdown]);\n return (_jsxs(\"div\", Object.assign({ className: cn(styles.container, styles[widgetPosition]) }, { children: [_jsxs(\"span\", Object.assign({ className: styles.titleWrapper }, { children: [_jsx(\"span\", Object.assign({ className: styles.dots, onClick: handleDropdownButton, onKeyUp: handleDropdownButton, tabIndex: 0, role: \"button\" }, { children: _jsx(DotsThree, {}, void 0) }), void 0), _jsx(\"span\", Object.assign({ className: cn(styles.dropdown, { [styles.hidden]: !showDropdown }) }, { children: _jsx(Dropdown, { callbackFn: setShowDropdown }, void 0) }), void 0), _jsxs(\"span\", Object.assign({ className: styles.title }, { children: [title, _jsx(\"span\", { children: _jsx(StatusDotIcon, { status: connectionStatus }, void 0) }, void 0)] }), void 0)] }), void 0), _jsx(\"span\", Object.assign({ role: \"button\", tabIndex: 0, className: cn(styles.closeButton, { [styles.hidden]: !state.open }), onClick: handleMobileCloseButton, onKeyDown: handleMobileCloseButton }, { children: _jsx(CloseMobileIcon, {}, void 0) }), void 0)] }), void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport styles from './Message.module.scss';\nexport const TypingIndicator = () => {\n return (_jsx(\"li\", Object.assign({ className: cn(styles.messageBubble, styles.assistant, styles.typingWrapper) }, { children: _jsxs(\"div\", Object.assign({ className: styles.loaderWrapper }, { children: [_jsx(\"div\", { className: cn(styles.typingDot, styles.dot1) }, void 0), _jsx(\"div\", { className: cn(styles.typingDot, styles.dot2) }, void 0), _jsx(\"div\", { className: cn(styles.typingDot, styles.dot3) }, void 0)] }), void 0) }), void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const SendMessageIcon = ({ color, size }) => {\n return (_jsxs(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: size, height: size, viewBox: \"0 0 24 24\", fill: \"none\", stroke: color, strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }, { children: [_jsx(\"line\", { x1: \"22\", y1: \"2\", x2: \"11\", y2: \"13\" }, void 0), _jsx(\"polygon\", { points: \"22 2 15 22 11 13 2 9 22 2\" }, void 0)] }), void 0));\n};\nSendMessageIcon.defaultProps = {\n size: 16,\n color: 'var(--moveo-background-color)',\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./MessageInput.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./MessageInput.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useRecoilValue } from 'recoil';\nimport { LoadingIcon } from '@/components/Icons/LoadingIcon';\nimport { SendMessageIcon } from '@/components/Icons/SendMessageIcon';\nimport { useDebounce } from '@/hooks/useDebounce';\nimport { useSocket } from '@/hooks/useSocket';\nimport { isTalkingToBrainSelector, isWidgetOpenSelector, } from '@/state/session';\nimport { connectionState } from '@/state/socket';\nimport { KEYS } from '@/utils';\nimport styles from './MessageInput.module.scss';\nconst MAX_CHARS = 280;\nconst ONE_SECOND = 1100; // Almost 1 sec :)\nexport const MessageInput = () => {\n const { t } = useTranslation();\n const { sendMessage, sendCompose } = useSocket();\n const [input, setInput] = useState('');\n const inputRef = useRef(null);\n const [isTyping, setIsTyping] = useState(false);\n const debouncedInput = useDebounce(String(input), 1000);\n const connectionStatus = useRecoilValue(connectionState);\n const isTalkingToBrain = useRecoilValue(isTalkingToBrainSelector);\n const [disableInput, setDisableInput] = useState(false);\n const isWidgetOpen = useRecoilValue(isWidgetOpenSelector);\n // Disable the input for 1 second if there is a Virtual Agent present.\n const disableInputTimeout = useCallback(() => {\n let timer;\n if (isTalkingToBrain) {\n setDisableInput(true);\n timer = setTimeout(() => {\n setDisableInput(false);\n }, ONE_SECOND);\n }\n return () => clearTimeout(timer);\n }, [isTalkingToBrain]);\n useEffect(() => {\n if (debouncedInput != null) {\n sendCompose('stop');\n }\n }, [debouncedInput, sendCompose]);\n useEffect(() => {\n if (debouncedInput != null) {\n setIsTyping(false);\n }\n }, [debouncedInput]);\n // Set the focus on the element 50ms after is shown\n useEffect(() => {\n if (isWidgetOpen && inputRef.current) {\n setTimeout(() => {\n var _a;\n (_a = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }, 50);\n }\n }, [isWidgetOpen]);\n const handleInputEvent = useCallback((event) => {\n if (input.trim().length > 0 &&\n (event.key === KEYS.ENTER || event.type === 'click')) {\n event.preventDefault();\n sendMessage({ text: input === null || input === void 0 ? void 0 : input.trim() });\n disableInputTimeout();\n if (inputRef.current) {\n inputRef.current.textContent = '';\n setInput('');\n }\n }\n }, [disableInputTimeout, input, sendMessage]);\n /**\n * Prevents input/paste of more characters than allowed.\n * When deleting text , allow placeholder to be shown again in Firefox and Safari\n */\n const handleLimitInputChange = useCallback(() => {\n var _a, _b, _c;\n if (((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.textContent) &&\n ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.textContent.length) >= MAX_CHARS) {\n inputRef.current.textContent = (_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.textContent.slice(0, MAX_CHARS);\n const selection = window.getSelection();\n const range = document.createRange();\n selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();\n range.selectNodeContents(inputRef.current);\n range.collapse(false);\n selection === null || selection === void 0 ? void 0 : selection.addRange(range);\n inputRef.current.focus();\n }\n const element = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current;\n if (!(element === null || element === void 0 ? void 0 : element.textContent)) {\n const breakTag = element === null || element === void 0 ? void 0 : element.getElementsByTagName('br')[0];\n breakTag && (element === null || element === void 0 ? void 0 : element.removeChild(breakTag));\n }\n }, []);\n const handleKeyUp = useCallback((event) => {\n if (input.trim().length > 0 && event.key === KEYS.ENTER) {\n handleInputEvent(event);\n }\n }, [handleInputEvent, input]);\n const handleInputChange = useCallback(() => {\n var _a;\n handleLimitInputChange();\n if (!isTyping) {\n sendCompose('start');\n setIsTyping(true);\n }\n setInput(((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.textContent) || '');\n }, [handleLimitInputChange, isTyping, sendCompose]);\n const handleKeyDown = useCallback((event) => {\n if (event.key === KEYS.ENTER) {\n event.preventDefault();\n }\n }, []);\n return (_jsxs(\"div\", Object.assign({ className: styles.container }, { children: [_jsx(\"div\", { ref: inputRef, className: styles.input, \"aria-label\": \"input\", role: \"textbox\", tabIndex: 0, placeholder: t('input_placeholder'), contentEditable: connectionStatus === 'online' && !disableInput, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, onInput: handleInputChange }, void 0), _jsx(\"span\", Object.assign({ onKeyUp: handleInputEvent, onClick: handleInputEvent, role: \"button\", tabIndex: 0, className: styles.sendMessage, title: t('input_send') }, { children: _jsx(SendMessageIcon, {}, void 0) }), void 0), _jsx(\"span\", Object.assign({ \"data-testid\": \"char-counter\", className: styles.charCounter }, { children: !disableInput ? MAX_CHARS - input.length : _jsx(LoadingIcon, {}, void 0) }), void 0)] }), void 0));\n};\n","import { useState, useEffect } from 'react';\nexport const useDebounce = (value = '', delay = 2000) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n return debouncedValue;\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./PoweredBy.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./PoweredBy.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { useRecoilValue } from 'recoil';\nimport { showPoweredBySelector } from '@/state/widget';\nimport styles from './PoweredBy.module.scss';\nexport const PoweredBy = () => {\n const { t } = useTranslation();\n const showPoweredBy = useRecoilValue(showPoweredBySelector);\n if (!showPoweredBy) {\n return null;\n }\n return (_jsxs(\"a\", Object.assign({ className: cn(styles.link), href: \"https://moveo.ai?ref=web-client\", target: \"_blank\", rel: \"noreferrer\" }, { children: [t('powered_by'), _jsxs(\"svg\", Object.assign({ width: \"12\", height: \"11\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: [_jsx(\"rect\", { x: \"4.859\", y: \"3.583\", width: \"3.583\", height: \"7.084\", rx: \"1.791\", transform: \"rotate(-90 4.86 3.583)\" }, void 0), _jsx(\"ellipse\", { cx: \"2.487\", cy: \"7.869\", rx: \"2.487\", ry: \"2.516\" }, void 0), _jsx(\"ellipse\", { cx: \"1.451\", cy: \"1.747\", rx: \"1.451\", ry: \"1.467\" }, void 0), _jsx(\"ellipse\", { cx: \"8.382\", cy: \"7.799\", rx: \"1.451\", ry: \"1.467\" }, void 0)] }), void 0)] }), void 0));\n};\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (data) => data instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\r\n ? isCheckBoxInput(event.target)\r\n ? event.target.checked\r\n : event.target.value\r\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/.\\d/)) || name;\n\nvar isNameInFieldArray = (names, name) => [...names].some((current) => getNodeParentName(name) === current);\n\nvar compact = (value) => (value || []).filter(Boolean);\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n if (isObject(obj) && path) {\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => (isNullOrUndefined(result) ? result : result[key]), obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n }\r\n return undefined;\r\n};\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nvar omit = (source, key) => {\r\n const copy = Object.assign({}, source);\r\n delete copy[key];\r\n return copy;\r\n};\n\nconst HookFormContext = React.createContext(null);\r\nconst useFormContext = () => React.useContext(HookFormContext);\r\nconst FormProvider = (props) => (React.createElement(HookFormContext.Provider, { value: omit(props, 'children') }, props.children));\n\nvar getProxyFormState = (formState, _proxyFormState, localProxyFormState, isRoot = true) => {\r\n function createGetter(prop) {\r\n return () => {\r\n if (prop in formState) {\r\n if (_proxyFormState[prop] !== VALIDATION_MODE.all) {\r\n _proxyFormState[prop] = !isRoot || VALIDATION_MODE.all;\r\n }\r\n localProxyFormState && (localProxyFormState[prop] = true);\r\n return formState[prop];\r\n }\r\n return undefined;\r\n };\r\n }\r\n const result = {};\r\n for (const key in formState) {\r\n Object.defineProperty(result, key, {\r\n get: createGetter(key),\r\n });\r\n }\r\n return result;\r\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, isRoot) => {\r\n const formState = omit(formStateData, 'name');\r\n return (isEmptyObject(formState) ||\r\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\r\n Object.keys(formState).find((key) => _proxyFormState[key] ===\r\n (!isRoot || VALIDATION_MODE.all)));\r\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => exact && signalName\r\n ? name === signalName\r\n : !name ||\r\n !signalName ||\r\n name === signalName ||\r\n convertToArrayPayload(name).some((currentName) => currentName &&\r\n (currentName.startsWith(signalName) ||\r\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\r\n const _props = React.useRef(props);\r\n _props.current = props;\r\n React.useEffect(() => {\r\n const tearDown = (subscription) => {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n };\r\n const subscription = !props.disabled &&\r\n _props.current.subject.subscribe({\r\n next: _props.current.callback,\r\n });\r\n return () => tearDown(subscription);\r\n }, [props.disabled]);\r\n}\n\nfunction useFormState(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, disabled, name, exact } = props || {};\r\n const [formState, updateFormState] = React.useState(control._formState);\r\n const _localProxyFormState = React.useRef({\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n });\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n useSubscribe({\r\n disabled,\r\n callback: (value) => shouldSubscribeByName(_name.current, value.name, exact) &&\r\n shouldRenderFormState(value, _localProxyFormState.current) &&\r\n updateFormState(Object.assign(Object.assign({}, control._formState), value)),\r\n subject: control._subjects.state,\r\n });\r\n return getProxyFormState(formState, control._proxyFormState, _localProxyFormState.current, false);\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal) => {\r\n const isArray = Array.isArray(names);\r\n if (isString(names)) {\r\n isGlobal && _names.watch.add(names);\r\n return get(formValues, names);\r\n }\r\n if (isArray) {\r\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\r\n get(formValues, fieldName)));\r\n }\r\n isGlobal && (_names.watchAll = true);\r\n return formValues;\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar objectHasFunction = (data) => {\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nfunction useWatch(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n useSubscribe({\r\n disabled,\r\n subject: control._subjects.watch,\r\n callback: (formState) => {\r\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\r\n const fieldValues = generateWatchOutput(_name.current, control._names, formState.values || control._formValues);\r\n updateValue(isUndefined(_name.current) ||\r\n (isObject(fieldValues) && !objectHasFunction(fieldValues))\r\n ? Object.assign({}, fieldValues) : Array.isArray(fieldValues)\r\n ? [...fieldValues]\r\n : isUndefined(fieldValues)\r\n ? defaultValue\r\n : fieldValues);\r\n }\r\n },\r\n });\r\n const [value, updateValue] = React.useState(isUndefined(defaultValue)\r\n ? control._getWatch(name)\r\n : defaultValue);\r\n React.useEffect(() => {\r\n control._removeUnmounted();\r\n });\r\n return value;\r\n}\n\nfunction useController(props) {\r\n const methods = useFormContext();\r\n const { name, control = methods.control, shouldUnregister } = props;\r\n const isArrayField = isNameInFieldArray(control._names.array, name);\r\n const value = useWatch({\r\n control,\r\n name,\r\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\r\n exact: !isArrayField,\r\n });\r\n const formState = useFormState({\r\n control,\r\n name,\r\n });\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n const registerProps = control.register(name, Object.assign(Object.assign({}, props.rules), { value }));\r\n React.useEffect(() => {\r\n const updateMounted = (name, value) => {\r\n const field = get(control._fields, name);\r\n if (field) {\r\n field._f.mount = value;\r\n }\r\n };\r\n updateMounted(name, true);\r\n return () => {\r\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\r\n isArrayField\r\n ? _shouldUnregisterField && !control._stateFlags.action\r\n : _shouldUnregisterField\r\n ? control.unregister(name)\r\n : updateMounted(name, false);\r\n };\r\n }, [name, control, isArrayField, shouldUnregister]);\r\n return {\r\n field: {\r\n onChange: (event) => {\r\n registerProps.onChange({\r\n target: {\r\n value: getEventValue(event),\r\n name: name,\r\n },\r\n type: EVENTS.CHANGE,\r\n });\r\n },\r\n onBlur: () => {\r\n registerProps.onBlur({\r\n target: {\r\n value: get(control._formValues, name),\r\n name: name,\r\n },\r\n type: EVENTS.BLUR,\r\n });\r\n },\r\n name,\r\n value,\r\n ref: (elm) => {\r\n const field = get(control._fields, name);\r\n if (elm && field && elm.focus) {\r\n field._f.ref = {\r\n focus: () => elm.focus(),\r\n setCustomValidity: (message) => elm.setCustomValidity(message),\r\n reportValidity: () => elm.reportValidity(),\r\n };\r\n }\r\n },\r\n },\r\n formState,\r\n fieldState: {\r\n invalid: !!get(formState.errors, name),\r\n isDirty: !!get(formState.dirtyFields, name),\r\n isTouched: !!get(formState.touchedFields, name),\r\n error: get(formState.errors, name),\r\n },\r\n };\r\n}\n\nconst Controller = (props) => props.render(useController(props));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? Object.assign(Object.assign({}, errors[name]), { types: Object.assign(Object.assign({}, (errors[name] && errors[name].types ? errors[name].types : {})), { [type]: message || true }) }) : {};\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nconst focusFieldBy = (fields, callback, fieldsNames) => {\r\n for (const key of fieldsNames || Object.keys(fields)) {\r\n const field = get(fields, key);\r\n if (field) {\r\n const _f = field._f;\r\n const current = omit(field, '_f');\r\n if (_f && callback(_f.name)) {\r\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\r\n break;\r\n }\r\n else if (_f.refs) {\r\n _f.refs[0].focus();\r\n break;\r\n }\r\n }\r\n else if (isObject(current)) {\r\n focusFieldBy(current, callback);\r\n }\r\n }\r\n }\r\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\r\n ? options.focusName ||\r\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\r\n : '';\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\r\n (_names.watchAll ||\r\n _names.watch.has(name) ||\r\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\r\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nvar mapCurrentIds = (values, _fieldIds, keyName) => values.map((value, index) => {\r\n const output = _fieldIds.current[index];\r\n return Object.assign(Object.assign({}, value), (output ? { [keyName]: output[keyName] } : {}));\r\n});\n\nvar generateId = () => {\r\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nvar mapIds = (values = [], keyName) => values.map((value) => (Object.assign(Object.assign({}, (value[keyName] ? {} : { [keyName]: generateId() })), value)));\n\nfunction append(data, value) {\r\n return [...convertToArrayPayload(data), ...convertToArrayPayload(value)];\r\n}\n\nfunction cloneObject(data) {\r\n let copy;\r\n const isArray = Array.isArray(data);\r\n if (data instanceof Date) {\r\n copy = new Date(data);\r\n }\r\n else if (data instanceof Set) {\r\n copy = new Set(data);\r\n }\r\n else if (isArray || isObject(data)) {\r\n copy = isArray ? [] : {};\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n copy = data;\r\n break;\r\n }\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n }\r\n else {\r\n return data;\r\n }\r\n return copy;\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...convertToArrayPayload(value),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar moveArrayAt = (data, from, to) => {\r\n if (Array.isArray(data)) {\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n }\r\n return [];\r\n};\n\nvar omitKeys = (fields, keyName) => fields.map((field = {}) => omit(field, keyName));\n\nfunction prepend(data, value) {\r\n return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\r\n}\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\r\n};\n\nvar updateAt = (fieldValues, index, value) => {\r\n fieldValues[index] = value;\r\n return fieldValues;\r\n};\n\nconst useFieldArray = (props) => {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\r\n const [fields, setFields] = React.useState(mapIds(control._getFieldArray(name), keyName));\r\n const _fieldIds = React.useRef(fields);\r\n const _name = React.useRef(name);\r\n const _actioned = React.useRef(false);\r\n _name.current = name;\r\n _fieldIds.current = fields;\r\n control._names.array.add(name);\r\n useSubscribe({\r\n callback: ({ values, name: fieldArrayName }) => {\r\n if (fieldArrayName === _name.current || !fieldArrayName) {\r\n setFields(mapIds(get(values, _name.current), keyName));\r\n }\r\n },\r\n subject: control._subjects.array,\r\n });\r\n const updateValues = React.useCallback((updatedFieldArrayValuesWithKey) => {\r\n const updatedFieldArrayValues = omitKeys(updatedFieldArrayValuesWithKey, keyName);\r\n _actioned.current = true;\r\n set(control._formValues, name, updatedFieldArrayValues);\r\n return updatedFieldArrayValues;\r\n }, [control, name, keyName]);\r\n const append$1 = (value, options) => {\r\n const appendValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValuesWithKey = append(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), mapIds(appendValue, keyName));\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n control._names.focus = getFocusFieldName(name, fieldArrayValues.length - 1, options);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, append, {\r\n argA: fillEmptyArray(value),\r\n }, fieldArrayValues);\r\n };\r\n const prepend$1 = (value, options) => {\r\n const updatedFieldArrayValuesWithKey = prepend(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), mapIds(convertToArrayPayload(cloneObject(value)), keyName));\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n control._names.focus = getFocusFieldName(name, 0, options);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, prepend, {\r\n argA: fillEmptyArray(value),\r\n }, fieldArrayValues);\r\n };\r\n const remove = (index) => {\r\n const updatedFieldArrayValuesWithKey = removeArrayAt(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), index);\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, removeArrayAt, {\r\n argA: index,\r\n }, fieldArrayValues);\r\n };\r\n const insert$1 = (index, value, options) => {\r\n const updatedFieldArrayValuesWithKey = insert(mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName), index, mapIds(convertToArrayPayload(cloneObject(value)), keyName));\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n control._names.focus = getFocusFieldName(name, index, options);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, insert, {\r\n argA: index,\r\n argB: fillEmptyArray(value),\r\n }, fieldArrayValues);\r\n };\r\n const swap = (indexA, indexB) => {\r\n const updatedFieldArrayValuesWithKey = mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName);\r\n swapArrayAt(updatedFieldArrayValuesWithKey, indexA, indexB);\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n }, fieldArrayValues, false);\r\n };\r\n const move = (from, to) => {\r\n const updatedFieldArrayValuesWithKey = mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName);\r\n moveArrayAt(updatedFieldArrayValuesWithKey, from, to);\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n }, fieldArrayValues, false);\r\n };\r\n const update = (index, value) => {\r\n const updatedFieldArrayValuesWithKey = mapCurrentIds(control._getFieldArray(name), _fieldIds, keyName);\r\n const updatedFieldArrayValues = updateAt(updatedFieldArrayValuesWithKey, index, value);\r\n _fieldIds.current = mapIds(updatedFieldArrayValues, keyName);\r\n const fieldArrayValues = updateValues(_fieldIds.current);\r\n setFields(_fieldIds.current);\r\n control._updateFieldArray(name, updateAt, {\r\n argA: index,\r\n argB: value,\r\n }, fieldArrayValues, true, false, false);\r\n };\r\n const replace = (value) => {\r\n const updatedFieldArrayValuesWithKey = mapIds(convertToArrayPayload(value), keyName);\r\n const fieldArrayValues = updateValues(updatedFieldArrayValuesWithKey);\r\n setFields(updatedFieldArrayValuesWithKey);\r\n control._updateFieldArray(name, () => updatedFieldArrayValuesWithKey, {}, fieldArrayValues, true, false, false);\r\n };\r\n React.useEffect(() => {\r\n control._stateFlags.action = false;\r\n isWatched(name, control._names) && control._subjects.state.next({});\r\n if (_actioned.current) {\r\n control._executeSchema([name]).then((result) => {\r\n const error = get(result.errors, name);\r\n if (error && error.type && !get(control._formState.errors, name)) {\r\n set(control._formState.errors, name, error);\r\n control._subjects.state.next({\r\n errors: control._formState.errors,\r\n });\r\n }\r\n });\r\n }\r\n control._subjects.watch.next({\r\n name,\r\n values: control._formValues,\r\n });\r\n control._names.focus &&\r\n focusFieldBy(control._fields, (key) => key.startsWith(control._names.focus));\r\n control._names.focus = '';\r\n control._proxyFormState.isValid && control._updateValid();\r\n }, [fields, name, control, keyName]);\r\n React.useEffect(() => {\r\n !get(control._formValues, name) && set(control._formValues, name, []);\r\n return () => {\r\n if (control._options.shouldUnregister || shouldUnregister) {\r\n control.unregister(name);\r\n }\r\n };\r\n }, [name, control, keyName, shouldUnregister]);\r\n return {\r\n swap: React.useCallback(swap, [updateValues, name, control, keyName]),\r\n move: React.useCallback(move, [updateValues, name, control, keyName]),\r\n prepend: React.useCallback(prepend$1, [updateValues, name, control, keyName]),\r\n append: React.useCallback(append$1, [updateValues, name, control, keyName]),\r\n remove: React.useCallback(remove, [updateValues, name, control, keyName]),\r\n insert: React.useCallback(insert$1, [updateValues, name, control, keyName]),\r\n update: React.useCallback(update, [updateValues, name, control, keyName]),\r\n replace: React.useCallback(replace, [updateValues, name, control, keyName]),\r\n fields: fields,\r\n };\r\n};\n\nfunction createSubject() {\r\n let _observers = [];\r\n const next = (value) => {\r\n for (const observer of _observers) {\r\n observer.next(value);\r\n }\r\n };\r\n const subscribe = (observer) => {\r\n _observers.push(observer);\r\n return {\r\n unsubscribe: () => {\r\n _observers = _observers.filter((o) => o !== observer);\r\n },\r\n };\r\n };\r\n const unsubscribe = () => {\r\n _observers = [];\r\n };\r\n return {\r\n get observers() {\r\n return _observers;\r\n },\r\n next,\r\n subscribe,\r\n unsubscribe,\r\n };\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\r\n if (isPrimitive(object1) || isPrimitive(object2)) {\r\n return object1 === object2;\r\n }\r\n if (isDateObject(object1) && isDateObject(object2)) {\r\n return object1.getTime() === object2.getTime();\r\n }\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!keys2.includes(key)) {\r\n return false;\r\n }\r\n if (key !== 'ref') {\r\n const val2 = object2[key];\r\n if ((isDateObject(val1) && isDateObject(val2)) ||\r\n (isObject(val1) && isObject(val2)) ||\r\n (Array.isArray(val1) && Array.isArray(val2))\r\n ? !deepEqual(val1, val2)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nvar getValidationModes = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => value instanceof HTMLElement;\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar isWeb = typeof window !== 'undefined' &&\r\n typeof window.HTMLElement !== 'undefined' &&\r\n typeof document !== 'undefined';\n\nvar live = (ref) => isHTMLElement(ref) && document.contains(ref);\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) &&\r\n !objectRef.filter((data) => (isObject(data) && !isEmptyObject(data)) || isBoolean(data)).length))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nfunction markFieldsDirty(data, fields = {}) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n fields[key] = Array.isArray(data[key]) ? [] : {};\r\n markFieldsDirty(data[key], fields[key]);\r\n }\r\n else if (!isNullOrUndefined(data[key])) {\r\n fields[key] = true;\r\n }\r\n }\r\n }\r\n return fields;\r\n}\r\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n if (isUndefined(formValues) ||\r\n isPrimitive(dirtyFieldsFromValues[key])) {\r\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\r\n ? markFieldsDirty(data[key], [])\r\n : Object.assign({}, markFieldsDirty(data[key]));\r\n }\r\n else {\r\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\r\n }\r\n }\r\n else {\r\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\r\n }\r\n }\r\n }\r\n return dirtyFieldsFromValues;\r\n}\r\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.checked && !option.disabled)\r\n .map((option) => option.value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n return options[0].checked && !options[0].disabled\r\n ? // @ts-expect-error expected to work in the browser\r\n options[0].attributes && !isUndefined(options[0].attributes.value)\r\n ? isUndefined(options[0].value) || options[0].value === ''\r\n ? validResult\r\n : { value: options[0].value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : +value\r\n : valueAsDate && isString(value)\r\n ? new Date(value)\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\r\n ? {\r\n isValid: true,\r\n value: option.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nfunction getFieldValue(_f) {\r\n const ref = _f.ref;\r\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(_f.refs).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return [...ref.selectedOptions].map(({ value }) => value);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(_f.refs).value;\r\n }\r\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\r\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\r\n const fields = {};\r\n for (const name of fieldsNames) {\r\n const field = get(_fields, name);\r\n field && set(fields, name, field._f);\r\n }\r\n return {\r\n criteriaMode,\r\n names: [...fieldsNames],\r\n fields,\r\n shouldUseNativeValidation,\r\n };\r\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\r\n ? undefined\r\n : isRegex(rule)\r\n ? rule.source\r\n : isObject(rule)\r\n ? isRegex(rule.value)\r\n ? rule.value.source\r\n : rule.value\r\n : rule;\n\nvar hasValidation = (options) => options.mount &&\r\n (options.required ||\r\n options.min ||\r\n options.max ||\r\n options.maxLength ||\r\n options.minLength ||\r\n options.pattern ||\r\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\r\n const error = get(errors, name);\r\n if (error || isKey(name)) {\r\n return {\r\n error,\r\n name,\r\n };\r\n }\r\n const names = name.split('.');\r\n while (names.length) {\r\n const fieldName = names.join('.');\r\n const field = get(_fields, fieldName);\r\n const foundError = get(errors, fieldName);\r\n if (field && !Array.isArray(field) && name !== fieldName) {\r\n return { name };\r\n }\r\n if (foundError && foundError.type) {\r\n return {\r\n name: fieldName,\r\n error: foundError,\r\n };\r\n }\r\n names.pop();\r\n }\r\n return {\r\n name,\r\n };\r\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\r\n if (mode.isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && mode.isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar isMessage = (value) => isString(value) || React.isValidElement(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) ||\r\n (Array.isArray(result) && result.every(isMessage)) ||\r\n (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar validateField = async (field, inputValue, validateAllFieldCriteria, shouldUseNativeValidation) => {\r\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\r\n if (!mount || disabled) {\r\n return {};\r\n }\r\n const inputRef = refs ? refs[0] : ref;\r\n const setCustomValidity = (message) => {\r\n if (shouldUseNativeValidation && inputRef.reportValidity) {\r\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\r\n inputRef.reportValidity();\r\n }\r\n };\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\r\n inputValue === '' ||\r\n (Array.isArray(inputValue) && !inputValue.length);\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, appendErrorsCurry(exceedMax ? maxType : minType, message));\r\n };\r\n if (required &&\r\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\r\n (isBoolean(inputValue) && !inputValue) ||\r\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\r\n (isRadio && !getRadioValue(refs).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message, ref: inputRef }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, message));\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNaN(inputValue)) {\r\n const valueNumber = ref.valueAsNumber ||\r\n parseFloat(inputValue);\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(inputValue);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if ((maxLength || minLength) && !isEmpty && isString(inputValue)) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n inputValue.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n inputValue.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty && isString(inputValue)) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message,\r\n ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message));\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n if (isFunction(validate)) {\r\n const result = await validate(inputValue);\r\n const validateError = getValidateError(result, inputRef);\r\n if (validateError) {\r\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(validateError.message);\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const key in validate) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateError = getValidateError(await validate[key](inputValue), inputRef, key);\r\n if (validateError) {\r\n validationResult = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n setCustomValidity(validateError.message);\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = Object.assign({ ref: inputRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n setCustomValidity(true);\r\n return error;\r\n};\n\nconst defaultOptions = {\r\n mode: VALIDATION_MODE.onSubmit,\r\n reValidateMode: VALIDATION_MODE.onChange,\r\n shouldFocusError: true,\r\n};\r\nfunction createFormControl(props = {}) {\r\n let _options = Object.assign(Object.assign({}, defaultOptions), props);\r\n let _formState = {\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n };\r\n let _fields = {};\r\n let _defaultValues = _options.defaultValues || {};\r\n let _formValues = _options.shouldUnregister\r\n ? {}\r\n : cloneObject(_defaultValues);\r\n let _stateFlags = {\r\n action: false,\r\n mount: false,\r\n watch: false,\r\n };\r\n let _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n };\r\n let delayErrorCallback;\r\n let timer = 0;\r\n let validateFields = {};\r\n const _proxyFormState = {\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n };\r\n const _subjects = {\r\n watch: createSubject(),\r\n array: createSubject(),\r\n state: createSubject(),\r\n };\r\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\r\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\r\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\r\n const debounce = (callback, wait) => (...args) => {\r\n clearTimeout(timer);\r\n timer = window.setTimeout(() => callback(...args), wait);\r\n };\r\n const _updateValid = async (shouldSkipRender) => {\r\n let isValid = false;\r\n if (_proxyFormState.isValid) {\r\n isValid = _options.resolver\r\n ? isEmptyObject((await _executeSchema()).errors)\r\n : await executeBuildInValidation(_fields, true);\r\n if (!shouldSkipRender && isValid !== _formState.isValid) {\r\n _formState.isValid = isValid;\r\n _subjects.state.next({\r\n isValid,\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n const _updateFieldArray = (name, method, args, values = [], shouldSetValues = true, shouldSetFields = true, shouldSetError = true) => {\r\n _stateFlags.action = true;\r\n if (shouldSetFields && get(_fields, name)) {\r\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\r\n shouldSetValues && set(_fields, name, fieldValues);\r\n }\r\n if (shouldSetError && Array.isArray(get(_formState.errors, name))) {\r\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.errors, name, errors);\r\n unsetEmptyArray(_formState.errors, name);\r\n }\r\n if (_proxyFormState.touchedFields && get(_formState.touchedFields, name)) {\r\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\r\n shouldSetValues &&\r\n set(_formState.touchedFields, name, touchedFields);\r\n unsetEmptyArray(_formState.touchedFields, name);\r\n }\r\n if (_proxyFormState.dirtyFields || _proxyFormState.isDirty) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n }\r\n _subjects.state.next({\r\n isDirty: _getDirty(name, values),\r\n dirtyFields: _formState.dirtyFields,\r\n errors: _formState.errors,\r\n isValid: _formState.isValid,\r\n });\r\n };\r\n const updateErrors = (name, error) => (set(_formState.errors, name, error),\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n }));\r\n const updateValidAndValue = (name, shouldSkipSetValueAs, ref) => {\r\n const field = get(_fields, name);\r\n if (field) {\r\n const defaultValue = get(_formValues, name, get(_defaultValues, name));\r\n isUndefined(defaultValue) ||\r\n (ref && ref.defaultChecked) ||\r\n shouldSkipSetValueAs\r\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\r\n : setFieldValue(name, defaultValue);\r\n }\r\n _stateFlags.mount && _updateValid();\r\n };\r\n const updateTouchAndDirty = (name, fieldValue, isCurrentTouched, shouldRender = true) => {\r\n let isFieldDirty = false;\r\n const output = {\r\n name,\r\n };\r\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\r\n if (_proxyFormState.isDirty) {\r\n const isPreviousFormDirty = _formState.isDirty;\r\n _formState.isDirty = output.isDirty = _getDirty();\r\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\r\n }\r\n if (_proxyFormState.dirtyFields && !isCurrentTouched) {\r\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\r\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\r\n isCurrentFieldPristine\r\n ? unset(_formState.dirtyFields, name)\r\n : set(_formState.dirtyFields, name, true);\r\n output.dirtyFields = _formState.dirtyFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\r\n }\r\n if (isCurrentTouched && !isPreviousFieldTouched) {\r\n set(_formState.touchedFields, name, isCurrentTouched);\r\n output.touchedFields = _formState.touchedFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n (_proxyFormState.touchedFields &&\r\n isPreviousFieldTouched !== isCurrentTouched);\r\n }\r\n isFieldDirty && shouldRender && _subjects.state.next(output);\r\n return isFieldDirty ? output : {};\r\n };\r\n const shouldRenderByError = async (shouldSkipRender, name, isValid, error, fieldState) => {\r\n const previousFieldError = get(_formState.errors, name);\r\n const shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;\r\n if (props.delayError && error) {\r\n delayErrorCallback =\r\n delayErrorCallback || debounce(updateErrors, props.delayError);\r\n delayErrorCallback(name, error);\r\n }\r\n else {\r\n clearTimeout(timer);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n if (((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\r\n !isEmptyObject(fieldState) ||\r\n shouldUpdateValid) &&\r\n !shouldSkipRender) {\r\n const updatedFormState = Object.assign(Object.assign(Object.assign({}, fieldState), (shouldUpdateValid ? { isValid } : {})), { errors: _formState.errors, name });\r\n _formState = Object.assign(Object.assign({}, _formState), updatedFormState);\r\n _subjects.state.next(updatedFormState);\r\n }\r\n validateFields[name]--;\r\n if (_proxyFormState.isValidating && !validateFields[name]) {\r\n _subjects.state.next({\r\n isValidating: false,\r\n });\r\n validateFields = {};\r\n }\r\n };\r\n const _executeSchema = async (name) => _options.resolver\r\n ? await _options.resolver(Object.assign({}, _formValues), _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation))\r\n : {};\r\n const executeSchemaAndUpdateState = async (names) => {\r\n const { errors } = await _executeSchema();\r\n if (names) {\r\n for (const name of names) {\r\n const error = get(errors, name);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n }\r\n else {\r\n _formState.errors = errors;\r\n }\r\n return errors;\r\n };\r\n const executeBuildInValidation = async (fields, shouldOnlyCheckValid, context = {\r\n valid: true,\r\n }) => {\r\n for (const name in fields) {\r\n const field = fields[name];\r\n if (field) {\r\n const fieldReference = field._f;\r\n const fieldValue = omit(field, '_f');\r\n if (fieldReference) {\r\n const fieldError = await validateField(field, get(_formValues, fieldReference.name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation);\r\n if (fieldError[fieldReference.name]) {\r\n context.valid = false;\r\n if (shouldOnlyCheckValid) {\r\n break;\r\n }\r\n }\r\n if (!shouldOnlyCheckValid) {\r\n fieldError[fieldReference.name]\r\n ? set(_formState.errors, fieldReference.name, fieldError[fieldReference.name])\r\n : unset(_formState.errors, fieldReference.name);\r\n }\r\n }\r\n fieldValue &&\r\n (await executeBuildInValidation(fieldValue, shouldOnlyCheckValid, context));\r\n }\r\n }\r\n return context.valid;\r\n };\r\n const _removeUnmounted = () => {\r\n for (const name of _names.unMount) {\r\n const field = get(_fields, name);\r\n field &&\r\n (field._f.refs\r\n ? field._f.refs.every((ref) => !live(ref))\r\n : !live(field._f.ref)) &&\r\n unregister(name);\r\n }\r\n _names.unMount = new Set();\r\n };\r\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\r\n !deepEqual(getValues(), _defaultValues));\r\n const _getWatch = (names, defaultValue, isGlobal) => {\r\n const fieldValues = Object.assign({}, (_stateFlags.mount\r\n ? _formValues\r\n : isUndefined(defaultValue)\r\n ? _defaultValues\r\n : isString(names)\r\n ? { [names]: defaultValue }\r\n : defaultValue));\r\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\r\n };\r\n const _getFieldArray = (name) => compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\r\n const setFieldValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n let fieldValue = value;\r\n if (field) {\r\n const fieldReference = field._f;\r\n if (fieldReference) {\r\n !fieldReference.disabled &&\r\n set(_formValues, name, getFieldValueAs(value, fieldReference));\r\n fieldValue =\r\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\r\n ? ''\r\n : value;\r\n if (isMultipleSelect(fieldReference.ref)) {\r\n [...fieldReference.ref.options].forEach((selectRef) => (selectRef.selected = fieldValue.includes(selectRef.value)));\r\n }\r\n else if (fieldReference.refs) {\r\n if (isCheckBoxInput(fieldReference.ref)) {\r\n fieldReference.refs.length > 1\r\n ? fieldReference.refs.forEach((checkboxRef) => (checkboxRef.checked = Array.isArray(fieldValue)\r\n ? !!fieldValue.find((data) => data === checkboxRef.value)\r\n : fieldValue === checkboxRef.value))\r\n : (fieldReference.refs[0].checked = !!fieldValue);\r\n }\r\n else {\r\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\r\n }\r\n }\r\n else if (!isFileInput(fieldReference.ref)) {\r\n fieldReference.ref.value = fieldValue;\r\n if (!fieldReference.ref.type) {\r\n _subjects.watch.next({\r\n name,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n (options.shouldDirty || options.shouldTouch) &&\r\n updateTouchAndDirty(name, fieldValue, options.shouldTouch);\r\n options.shouldValidate && trigger(name);\r\n };\r\n const setValues = (name, value, options) => {\r\n for (const fieldKey in value) {\r\n const fieldValue = value[fieldKey];\r\n const fieldName = `${name}.${fieldKey}`;\r\n const field = get(_fields, fieldName);\r\n (_names.array.has(name) ||\r\n !isPrimitive(fieldValue) ||\r\n (field && !field._f)) &&\r\n !isDateObject(fieldValue)\r\n ? setValues(fieldName, fieldValue, options)\r\n : setFieldValue(fieldName, fieldValue, options);\r\n }\r\n };\r\n const setValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n const isFieldArray = _names.array.has(name);\r\n set(_formValues, name, value);\r\n if (isFieldArray) {\r\n _subjects.array.next({\r\n name,\r\n values: _formValues,\r\n });\r\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\r\n options.shouldDirty) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n _subjects.state.next({\r\n name,\r\n dirtyFields: _formState.dirtyFields,\r\n isDirty: _getDirty(name, value),\r\n });\r\n }\r\n }\r\n else {\r\n field && !field._f && !isNullOrUndefined(value)\r\n ? setValues(name, value, options)\r\n : setFieldValue(name, value, options);\r\n }\r\n isWatched(name, _names) && _subjects.state.next({});\r\n _subjects.watch.next({\r\n name,\r\n });\r\n };\r\n const onChange = async (event) => {\r\n const target = event.target;\r\n let name = target.name;\r\n const field = get(_fields, name);\r\n if (field) {\r\n let error;\r\n let isValid;\r\n const fieldValue = target.type\r\n ? getFieldValue(field._f)\r\n : getEventValue(event);\r\n const isBlurEvent = event.type === EVENTS.BLUR;\r\n const shouldSkipValidation = (!hasValidation(field._f) &&\r\n !_options.resolver &&\r\n !get(_formState.errors, name) &&\r\n !field._f.deps) ||\r\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\r\n const watched = isWatched(name, _names, isBlurEvent);\r\n if (isBlurEvent) {\r\n field._f.onBlur && field._f.onBlur(event);\r\n }\r\n else if (field._f.onChange) {\r\n field._f.onChange(event);\r\n }\r\n set(_formValues, name, fieldValue);\r\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\r\n const shouldRender = !isEmptyObject(fieldState) || watched;\r\n !isBlurEvent &&\r\n _subjects.watch.next({\r\n name,\r\n type: event.type,\r\n });\r\n if (shouldSkipValidation) {\r\n return (shouldRender &&\r\n _subjects.state.next(Object.assign({ name }, (watched ? {} : fieldState))));\r\n }\r\n !isBlurEvent && watched && _subjects.state.next({});\r\n validateFields[name] = validateFields[name] ? +1 : 1;\r\n _proxyFormState.isValidating &&\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const { errors } = await _executeSchema([name]);\r\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\r\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\r\n error = errorLookupResult.error;\r\n name = errorLookupResult.name;\r\n isValid = isEmptyObject(errors);\r\n }\r\n else {\r\n error = (await validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\r\n isValid = await _updateValid(true);\r\n }\r\n field._f.deps && trigger(field._f.deps);\r\n shouldRenderByError(false, name, isValid, error, fieldState);\r\n }\r\n };\r\n const trigger = async (name, options = {}) => {\r\n let isValid;\r\n let validationResult;\r\n const fieldNames = convertToArrayPayload(name);\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\r\n isValid = isEmptyObject(errors);\r\n validationResult = name\r\n ? !fieldNames.some((name) => get(errors, name))\r\n : isValid;\r\n }\r\n else if (name) {\r\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\r\n const field = get(_fields, fieldName);\r\n return await executeBuildInValidation(field && field._f ? { [fieldName]: field } : field);\r\n }))).every(Boolean);\r\n !(!validationResult && !_formState.isValid) && _updateValid();\r\n }\r\n else {\r\n validationResult = isValid = await executeBuildInValidation(_fields);\r\n }\r\n _subjects.state.next(Object.assign(Object.assign(Object.assign({}, (!isString(name) ||\r\n (_proxyFormState.isValid && isValid !== _formState.isValid)\r\n ? {}\r\n : { name })), (_options.resolver ? { isValid } : {})), { errors: _formState.errors, isValidating: false }));\r\n options.shouldFocus &&\r\n !validationResult &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), name ? fieldNames : _names.mount);\r\n return validationResult;\r\n };\r\n const getValues = (fieldNames) => {\r\n const values = Object.assign(Object.assign({}, _defaultValues), (_stateFlags.mount ? _formValues : {}));\r\n return isUndefined(fieldNames)\r\n ? values\r\n : isString(fieldNames)\r\n ? get(values, fieldNames)\r\n : fieldNames.map((name) => get(values, name));\r\n };\r\n const clearErrors = (name) => {\r\n name\r\n ? convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName))\r\n : (_formState.errors = {});\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n isValid: true,\r\n });\r\n };\r\n const setError = (name, error, options) => {\r\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\r\n set(_formState.errors, name, Object.assign(Object.assign({}, error), { ref }));\r\n _subjects.state.next({\r\n name,\r\n errors: _formState.errors,\r\n isValid: false,\r\n });\r\n options && options.shouldFocus && ref && ref.focus && ref.focus();\r\n };\r\n const watch = (name, defaultValue) => isFunction(name)\r\n ? _subjects.watch.subscribe({\r\n next: (info) => name(_getWatch(undefined, defaultValue), info),\r\n })\r\n : _getWatch(name, defaultValue, true);\r\n const unregister = (name, options = {}) => {\r\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\r\n _names.mount.delete(fieldName);\r\n _names.array.delete(fieldName);\r\n if (get(_fields, fieldName)) {\r\n if (!options.keepValue) {\r\n unset(_fields, fieldName);\r\n unset(_formValues, fieldName);\r\n }\r\n !options.keepError && unset(_formState.errors, fieldName);\r\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\r\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\r\n !_options.shouldUnregister &&\r\n !options.keepDefaultValue &&\r\n unset(_defaultValues, fieldName);\r\n }\r\n }\r\n _subjects.watch.next({});\r\n _subjects.state.next(Object.assign(Object.assign({}, _formState), (!options.keepDirty ? {} : { isDirty: _getDirty() })));\r\n !options.keepIsValid && _updateValid();\r\n };\r\n const register = (name, options = {}) => {\r\n let field = get(_fields, name);\r\n set(_fields, name, {\r\n _f: Object.assign(Object.assign(Object.assign({}, (field && field._f ? field._f : { ref: { name } })), { name, mount: true }), options),\r\n });\r\n _names.mount.add(name);\r\n !isUndefined(options.value) &&\r\n !options.disabled &&\r\n set(_formValues, name, get(_formValues, name, options.value));\r\n field\r\n ? isBoolean(options.disabled) &&\r\n set(_formValues, name, options.disabled\r\n ? undefined\r\n : get(_formValues, name, getFieldValue(field._f)))\r\n : updateValidAndValue(name, true);\r\n return Object.assign(Object.assign(Object.assign({}, (isBoolean(options.disabled) ? { disabled: options.disabled } : {})), (_options.shouldUseNativeValidation\r\n ? {\r\n required: !!options.required,\r\n min: getRuleValue(options.min),\r\n max: getRuleValue(options.max),\r\n minLength: getRuleValue(options.minLength),\r\n maxLength: getRuleValue(options.maxLength),\r\n pattern: getRuleValue(options.pattern),\r\n }\r\n : {})), { name,\r\n onChange, onBlur: onChange, ref: (ref) => {\r\n if (ref) {\r\n register(name, options);\r\n field = get(_fields, name);\r\n const fieldRef = isUndefined(ref.value)\r\n ? ref.querySelectorAll\r\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\r\n : ref\r\n : ref;\r\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\r\n if (fieldRef === field._f.ref ||\r\n (radioOrCheckbox &&\r\n compact(field._f.refs).find((option) => option === fieldRef))) {\r\n return;\r\n }\r\n set(_fields, name, {\r\n _f: radioOrCheckbox\r\n ? Object.assign(Object.assign({}, field._f), { refs: [...compact(field._f.refs).filter(live), fieldRef], ref: { type: fieldRef.type, name } }) : Object.assign(Object.assign({}, field._f), { ref: fieldRef }),\r\n });\r\n updateValidAndValue(name, false, fieldRef);\r\n }\r\n else {\r\n field = get(_fields, name, {});\r\n if (field._f) {\r\n field._f.mount = false;\r\n }\r\n (_options.shouldUnregister || options.shouldUnregister) &&\r\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n _names.unMount.add(name);\r\n }\r\n } });\r\n };\r\n const handleSubmit = (onValid, onInvalid) => async (e) => {\r\n if (e) {\r\n e.preventDefault && e.preventDefault();\r\n e.persist && e.persist();\r\n }\r\n let hasNoPromiseError = true;\r\n let fieldValues = _options.shouldUnregister\r\n ? cloneObject(_formValues)\r\n : Object.assign({}, _formValues);\r\n _subjects.state.next({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (_options.resolver) {\r\n const { errors, values } = await _executeSchema();\r\n _formState.errors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n await executeBuildInValidation(_fields);\r\n }\r\n if (isEmptyObject(_formState.errors) &&\r\n Object.keys(_formState.errors).every((name) => get(fieldValues, name))) {\r\n _subjects.state.next({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n onInvalid && (await onInvalid(_formState.errors, e));\r\n _options.shouldFocusError &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), _names.mount);\r\n }\r\n }\r\n catch (err) {\r\n hasNoPromiseError = false;\r\n throw err;\r\n }\r\n finally {\r\n _formState.isSubmitted = true;\r\n _subjects.state.next({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(_formState.errors) && hasNoPromiseError,\r\n submitCount: _formState.submitCount + 1,\r\n errors: _formState.errors,\r\n });\r\n }\r\n };\r\n const resetField = (name, options = {}) => {\r\n if (isUndefined(options.defaultValue)) {\r\n setValue(name, get(_defaultValues, name));\r\n }\r\n else {\r\n setValue(name, options.defaultValue);\r\n set(_defaultValues, name, options.defaultValue);\r\n }\r\n if (!options.keepTouched) {\r\n unset(_formState.touchedFields, name);\r\n }\r\n if (!options.keepDirty) {\r\n unset(_formState.dirtyFields, name);\r\n _formState.isDirty = options.defaultValue\r\n ? _getDirty(name, get(_defaultValues, name))\r\n : _getDirty();\r\n }\r\n if (!options.keepError) {\r\n unset(_formState.errors, name);\r\n _proxyFormState.isValid && _updateValid();\r\n }\r\n _subjects.state.next(Object.assign({}, _formState));\r\n };\r\n const reset = (formValues, keepStateOptions = {}) => {\r\n const updatedValues = formValues || _defaultValues;\r\n const cloneUpdatedValues = cloneObject(updatedValues);\r\n const values = formValues && !isEmptyObject(formValues)\r\n ? cloneUpdatedValues\r\n : _defaultValues;\r\n if (!keepStateOptions.keepDefaultValues) {\r\n _defaultValues = updatedValues;\r\n }\r\n if (!keepStateOptions.keepValues) {\r\n if (isWeb && isUndefined(formValues)) {\r\n for (const name of _names.mount) {\r\n const field = get(_fields, name);\r\n if (field && field._f) {\r\n const fieldReference = Array.isArray(field._f.refs)\r\n ? field._f.refs[0]\r\n : field._f.ref;\r\n try {\r\n isHTMLElement(fieldReference) &&\r\n fieldReference.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n _formValues = props.shouldUnregister\r\n ? keepStateOptions.keepDefaultValues\r\n ? cloneObject(_defaultValues)\r\n : {}\r\n : cloneUpdatedValues;\r\n _fields = {};\r\n _subjects.array.next({\r\n values,\r\n });\r\n _subjects.watch.next({\r\n values,\r\n });\r\n }\r\n _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n watchAll: false,\r\n focus: '',\r\n };\r\n _stateFlags.mount =\r\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n _stateFlags.watch = !!props.shouldUnregister;\r\n _subjects.state.next({\r\n submitCount: keepStateOptions.keepSubmitCount\r\n ? _formState.submitCount\r\n : 0,\r\n isDirty: keepStateOptions.keepDirty\r\n ? _formState.isDirty\r\n : keepStateOptions.keepDefaultValues\r\n ? !deepEqual(formValues, _defaultValues)\r\n : false,\r\n isSubmitted: keepStateOptions.keepIsSubmitted\r\n ? _formState.isSubmitted\r\n : false,\r\n dirtyFields: keepStateOptions.keepDirty\r\n ? _formState.dirtyFields\r\n : (keepStateOptions.keepDefaultValues && formValues\r\n ? Object.entries(formValues).reduce((previous, [key, value]) => (Object.assign(Object.assign({}, previous), { [key]: value !== get(_defaultValues, key) })), {})\r\n : {}),\r\n touchedFields: keepStateOptions.keepTouched\r\n ? _formState.touchedFields\r\n : {},\r\n errors: keepStateOptions.keepErrors\r\n ? _formState.errors\r\n : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const setFocus = (name) => {\r\n const field = get(_fields, name)._f;\r\n (field.ref.focus ? field.ref : field.refs[0]).focus();\r\n };\r\n return {\r\n control: {\r\n register,\r\n unregister,\r\n _executeSchema,\r\n _getWatch,\r\n _getDirty,\r\n _updateValid,\r\n _removeUnmounted,\r\n _updateFieldArray,\r\n _getFieldArray,\r\n _subjects,\r\n _proxyFormState,\r\n get _fields() {\r\n return _fields;\r\n },\r\n set _fields(value) {\r\n _fields = value;\r\n },\r\n get _formValues() {\r\n return _formValues;\r\n },\r\n set _formValues(value) {\r\n _formValues = value;\r\n },\r\n get _stateFlags() {\r\n return _stateFlags;\r\n },\r\n set _stateFlags(value) {\r\n _stateFlags = value;\r\n },\r\n get _defaultValues() {\r\n return _defaultValues;\r\n },\r\n set _defaultValues(value) {\r\n _defaultValues = value;\r\n },\r\n get _names() {\r\n return _names;\r\n },\r\n set _names(value) {\r\n _names = value;\r\n },\r\n get _formState() {\r\n return _formState;\r\n },\r\n set _formState(value) {\r\n _formState = value;\r\n },\r\n get _options() {\r\n return _options;\r\n },\r\n set _options(value) {\r\n _options = Object.assign(Object.assign({}, _options), value);\r\n },\r\n },\r\n trigger,\r\n register,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n getValues,\r\n reset,\r\n resetField,\r\n clearErrors,\r\n unregister,\r\n setError,\r\n setFocus,\r\n };\r\n}\n\nfunction useForm(props = {}) {\r\n const _formControl = React.useRef();\r\n const [formState, updateFormState] = React.useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n });\r\n if (_formControl.current) {\r\n _formControl.current.control._options = props;\r\n }\r\n else {\r\n _formControl.current = Object.assign(Object.assign({}, createFormControl(props)), { formState });\r\n }\r\n const control = _formControl.current.control;\r\n useSubscribe({\r\n subject: control._subjects.state,\r\n callback: (value) => {\r\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\r\n control._formState = Object.assign(Object.assign({}, control._formState), value);\r\n updateFormState(Object.assign({}, control._formState));\r\n }\r\n },\r\n });\r\n React.useEffect(() => {\r\n if (!control._stateFlags.mount) {\r\n control._proxyFormState.isValid && control._updateValid();\r\n control._stateFlags.mount = true;\r\n }\r\n if (control._stateFlags.watch) {\r\n control._stateFlags.watch = false;\r\n control._subjects.state.next({});\r\n }\r\n control._removeUnmounted();\r\n });\r\n _formControl.current.formState = getProxyFormState(formState, control._proxyFormState);\r\n return _formControl.current;\r\n}\n\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Button.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Button.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport styles from './Button.module.scss';\nexport const Button = ({ type = 'button', children, fullWidth = false, }) => {\n return (_jsx(\"button\", Object.assign({ className: cn(styles.button, { [styles.fullWidth]: fullWidth }), type: type, tabIndex: 0 }, { children: children }), void 0));\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Checkbox = ({ register }) => {\n return _jsx(\"input\", Object.assign({ type: \"checkbox\" }, register), void 0);\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Input.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Input.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport styles from './Input.module.scss';\nexport const Input = ({ label, required, register, error, isDirty, defaultValue, }) => {\n const { t } = useTranslation();\n return (_jsxs(\"div\", Object.assign({ className: styles.container }, { children: [_jsxs(\"div\", Object.assign({ className: cn(styles.inputContainer, {\n [styles.required]: required,\n [styles.error]: error,\n }) }, { children: [_jsx(\"input\", Object.assign({ className: cn(styles.input, {\n [styles.dirty]: isDirty,\n }), type: \"text\" }, register, { defaultValue: defaultValue }), void 0), _jsx(\"span\", Object.assign({ className: styles.label }, { children: label }), void 0)] }), void 0), error && (_jsx(\"p\", Object.assign({ className: styles.errorMessage }, { children: t('fields.invalid', { field: label }) }), void 0))] }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./WelcomeFields.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./WelcomeFields.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useRecoilValue } from 'recoil';\nimport { Button } from '@/components/Button/Button';\nimport { Checkbox } from '@/components/Checkbox/Checkbox';\nimport { Input } from '@/components/Input/Input';\nimport { useSocket } from '@/hooks/useSocket';\nimport { userSelector } from '@/state/session';\nimport { optionalFieldsSelector, requiredFieldsSelector, disclaimerSelector, } from '@/state/widget';\nimport { emailRegExp } from '@/utils';\nimport styles from './WelcomeFields.module.scss';\nexport const WelcomeFields = ({ onComplete }) => {\n var _a;\n const { t } = useTranslation();\n const { updateContext } = useSocket();\n const user = useRecoilValue(userSelector);\n const optionalFields = useRecoilValue(optionalFieldsSelector);\n const requiredFields = useRecoilValue(requiredFieldsSelector);\n const { enabled, html } = (_a = useRecoilValue(disclaimerSelector)) !== null && _a !== void 0 ? _a : {};\n const { register, handleSubmit, reset, formState: { errors, touchedFields }, getValues, } = useForm();\n useEffect(() => {\n const defaultValues = [\n ...(requiredFields !== null && requiredFields !== void 0 ? requiredFields : []),\n ...(optionalFields !== null && optionalFields !== void 0 ? optionalFields : []),\n ].reduce((acc, value) => {\n var _a;\n return (Object.assign(Object.assign({}, acc), { [`${value}`]: user && user[value] !== '***' && !((_a = user[value]) === null || _a === void 0 ? void 0 : _a.startsWith('Visitor '))\n ? user[value]\n : '' }));\n }, {});\n reset(defaultValues);\n }, [optionalFields, requiredFields, reset, user]);\n const onSubmit = useCallback((formData) => {\n updateContext({ user: formData });\n onComplete();\n }, [onComplete, updateContext]);\n const registerOptions = useCallback((field, label, type) => {\n if (field === 'email') {\n return {\n pattern: emailRegExp,\n };\n }\n if (type === 'required') {\n return {\n validate: (field) => field.trim().length >= 2,\n message: t('errors.min_characters', { field, min: 2 }),\n };\n }\n return null;\n }, [t]);\n const isDirty = useCallback((value) => !!getValues()[value] ||\n (!getValues()[value] && !touchedFields[value] && user && user[value]), [getValues, touchedFields, user]);\n return (_jsx(\"div\", Object.assign({ className: styles.container }, { children: _jsxs(\"form\", Object.assign({ onSubmit: handleSubmit(onSubmit), autoComplete: \"off\" }, { children: [requiredFields === null || requiredFields === void 0 ? void 0 : requiredFields.map((field) => {\n return (_jsx(Input, { label: t(`fields.${field}`), isDirty: isDirty(field), required: true, error: errors[field], register: register(field, Object.assign({ required: true }, registerOptions(field, t(`fields.${field}`), 'required'))) }, field));\n }), optionalFields === null || optionalFields === void 0 ? void 0 : optionalFields.map((field) => {\n var _a;\n return (_jsx(Input, { label: t(`fields.${field}`), isDirty: isDirty(field), defaultValue: (_a = (user && user[field])) !== null && _a !== void 0 ? _a : '', error: errors[field], register: register(field, Object.assign({}, registerOptions(field, t(`fields.${field}`), 'optional'))) }, field));\n }), enabled && html && (_jsxs(\"div\", Object.assign({ className: cn(styles.disclaimerContainer, {\n [styles.error]: errors.disclaimer_accepted,\n }) }, { children: [_jsx(Checkbox, { register: register('disclaimer_accepted', {\n required: true,\n }) }, void 0), _jsx(\"p\", { dangerouslySetInnerHTML: { __html: html } }, void 0)] }), void 0)), _jsx(Button, Object.assign({ type: \"submit\", fullWidth: true }, { children: t('welcome.start') }), void 0), !requiredFields && !enabled && (_jsx(\"button\", Object.assign({ onClick: onComplete, className: styles.proceed }, { children: t('welcome.start') }), void 0))] }), void 0) }), void 0));\n};\n","const duration = 300;\nexport const defaultStyle = {\n transition: `all ${duration}ms ease-in-out`,\n opacity: 0,\n visibility: 'hidden',\n transform: ' translateY(20px)',\n};\nexport const transitionStyles = {\n entering: {\n opacity: 1,\n visibility: 'visible',\n transform: ' translateY(0px)',\n },\n entered: {\n opacity: 1,\n visibility: 'visible',\n transform: ' translateY(0px)',\n },\n exiting: {\n opacity: 0,\n visibility: 'hidden',\n transform: ' translateY(20px)',\n },\n exited: {\n opacity: 0,\n visibility: 'hidden',\n transform: ' translateY(20px)',\n },\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ThumbsDown = ({ size, backgroundColor, color = '#fff', }) => {\n return (_jsxs(\"svg\", Object.assign({ width: size, height: size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: [_jsx(\"path\", { d: \"M28 55.5C12.812 55.5.5 43.188.5 28S12.812.5 28 .5 55.5 12.812 55.5 28 43.188 55.5 28 55.5Z\", fill: backgroundColor, stroke: backgroundColor }, void 0), _jsx(\"path\", { fill: backgroundColor, d: \"M30 30v26H0V30z\" }, void 0), _jsx(\"path\", { d: \"M39.995 28.52a3.348 3.348 0 0 1-3.344 3.345h-5.17v3.726c0 1.576-.46 2.712-1.37 3.378-1.44 1.057-3.418.455-3.502.426a.6.6 0 0 1-.42-.573v-4.186c0-3.295-3.824-4.416-3.986-4.465a.534.534 0 0 1-.132-.054c-.284.568-.872.96-1.547.96h-2.8c-.95 0-1.724-.774-1.724-1.724V19.174c0-.95.774-1.723 1.723-1.723h1.62a.6.6 0 1 1 0 1.2h-1.62a.524.524 0 0 0-.523.523v10.179c0 .289.235.524.523.524h2.806a.524.524 0 0 0 .524-.524v-9.6a3.348 3.348 0 0 1 3.344-3.345h10.242c2.272 0 3.716 1.19 3.97 3.246l1.381 8.666a.6.6 0 0 1 .01.093v.108h-.005Zm-1.2-.053-1.375-8.641c-.181-1.47-1.117-2.218-2.781-2.218H24.397c-1.18 0-2.145.96-2.145 2.144v9.258a.58.58 0 0 1 .274.01c.201.054 4.862 1.405 4.862 5.62v3.702c.51.078 1.38.122 2.012-.338.583-.43.882-1.238.882-2.413v-4.329c0-.332.269-.602.602-.602h5.772c1.18 0 2.145-.96 2.145-2.144v-.05h-.005Z\", fill: color }, void 0)] }), void 0));\n};\nThumbsDown.defaultProps = {\n size: 56,\n color: '#DA0000',\n backgroundColor: '#fff)',\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ThumbsUp = ({ size, backgroundColor, color }) => {\n return (_jsxs(\"svg\", Object.assign({ width: size, height: size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: [_jsx(\"path\", { d: \"M55.5 28c0 15.188-12.312 27.5-27.5 27.5S.5 43.188.5 28 12.812.5 28 .5 55.5 12.812 55.5 28Z\", fill: backgroundColor, stroke: backgroundColor }, void 0), _jsx(\"path\", { fill: backgroundColor, d: \"M30 26h26v30H30z\" }, void 0), _jsx(\"path\", { d: \"M39.995 27.48a3.348 3.348 0 0 0-3.344-3.345h-5.17V20.41c0-1.576-.46-2.712-1.37-3.378-1.44-1.057-3.418-.455-3.502-.426a.6.6 0 0 0-.42.573v4.186c0 3.295-3.824 4.416-3.986 4.465a.534.534 0 0 0-.132.054 1.732 1.732 0 0 0-1.547-.96h-2.8c-.95 0-1.724.774-1.724 1.724v10.179c0 .95.774 1.723 1.723 1.723h1.62a.6.6 0 1 0 0-1.2h-1.62a.524.524 0 0 1-.523-.523V26.647c0-.289.235-.524.523-.524h2.806c.289 0 .524.235.524.524v9.6a3.348 3.348 0 0 0 3.344 3.345h10.242c2.272 0 3.716-1.19 3.97-3.246l1.381-8.666a.6.6 0 0 0 .01-.093v-.108h-.005Zm-1.2.053-1.375 8.642c-.181 1.468-1.117 2.217-2.781 2.217H24.397c-1.18 0-2.145-.96-2.145-2.144V26.99a.58.58 0 0 0 .274-.01c.201-.054 4.862-1.405 4.862-5.62v-3.702c.51-.078 1.38-.122 2.012.338.583.43.882 1.239.882 2.414v4.328c0 .332.269.602.602.602h5.772c1.18 0 2.145.96 2.145 2.144v.05h-.005Z\", fill: color }, void 0)] }), void 0));\n};\nThumbsUp.defaultProps = {\n size: 56,\n color: '#DA0000',\n backgroundColor: '#00973A',\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Survey.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Survey.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useResetRecoilState } from 'recoil';\nimport { chatEventsState, sessionState } from '@/state/session';\nimport { ThumbsDown } from '../Icons/ThumbsDown';\nimport { ThumbsUp } from '../Icons/ThumbsUp';\nimport styles from './Survey.module.scss';\nexport const Survey = ({ title, resetButton = true, survey = false, }) => {\n const { t } = useTranslation();\n const resetSessionState = useResetRecoilState(sessionState);\n const resetChatEvents = useResetRecoilState(chatEventsState);\n const handleClickReset = useCallback(() => {\n resetSessionState();\n resetChatEvents();\n }, [resetChatEvents, resetSessionState]);\n return (_jsx(\"div\", Object.assign({ className: styles.surveyFeauturesWrapper }, { children: _jsxs(\"div\", Object.assign({ className: styles.surveyFeauturesInner }, { children: [_jsx(\"div\", Object.assign({ className: styles.title }, { children: title }), void 0), survey && (_jsxs(\"div\", Object.assign({ className: styles.surveyWrapper }, { children: [_jsx(\"span\", { children: t('survey.rate') }, void 0), _jsxs(\"div\", Object.assign({ className: styles.icons }, { children: [_jsx(\"span\", Object.assign({ className: styles.greatIcon }, { children: _jsx(ThumbsUp, {}, void 0) }), void 0), _jsx(\"span\", { children: _jsx(ThumbsDown, {}, void 0) }, void 0)] }), void 0), _jsxs(\"div\", { children: [_jsx(\"span\", Object.assign({ className: styles.greatText }, { children: t('survey.great') }), void 0), _jsx(\"span\", Object.assign({ className: styles.badText }, { children: t('survey.bad') }), void 0)] }, void 0)] }), void 0)), resetButton && (_jsx(\"div\", Object.assign({ className: cn(styles.resetSession, {\n [styles.isForbidden]: !survey,\n }), onClick: handleClickReset, onKeyUp: handleClickReset, tabIndex: 0, role: \"button\" }, { children: t('survey.restart_conversation') }), void 0)), survey && _jsx(\"div\", Object.assign({ className: styles.link }, { children: t('survey.transcript') }), void 0)] }), void 0) }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./ChatContainer.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./ChatContainer.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useEffect, useState, useRef, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Transition } from 'react-transition-group';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport { ChatEvents } from '@/components/ChatEvents/ChatEvents';\nimport { Header } from '@/components/Header/Header';\nimport { TypingIndicator } from '@/components/Message/TypingIndicator';\nimport { MessageInput } from '@/components/MessageInput/MessageInput';\nimport { PoweredBy } from '@/components/PoweredBy/PoweredBy';\nimport { WelcomeFields } from '@/components/WelcomeFields/WelcomeFields';\nimport { chatEventCountSelector, chatEventsState, composeSelector, composeState, expiredStateSelector, forbiddenSessionSelector, widgetState, } from '@/state/session';\nimport { optionalFieldsSelector, windowSizeSelector, requiredFieldsSelector, widgetPositionSelector, disclaimerSelector, } from '@/state/widget';\nimport { defaultStyle, transitionStyles } from './animations';\nimport { Survey } from './Survey';\nimport styles from './ChatContainer.module.scss';\nconst MAX_TYPING_TIME = 10000;\nexport const ChatContainer = () => {\n const { t } = useTranslation();\n const size = useRecoilValue(windowSizeSelector);\n const compose = useRecoilValue(composeSelector);\n const chats = useRecoilValue(chatEventsState);\n const setCompose = useSetRecoilState(composeState);\n const widgetPosition = useRecoilValue(widgetPositionSelector);\n const optionalFields = useRecoilValue(optionalFieldsSelector);\n const requiredFields = useRecoilValue(requiredFieldsSelector);\n const disclaimer = useRecoilValue(disclaimerSelector);\n const [showWelcomeFields, setShowWelcomeFields] = useState(false);\n const timerRef = useRef();\n const bodyRef = useRef(null);\n const chatEventCount = useRecoilValue(chatEventCountSelector);\n const { open } = useRecoilValue(widgetState);\n const isExpired = useRecoilValue(expiredStateSelector);\n const isSessionForbidden = useRecoilValue(forbiddenSessionSelector);\n useEffect(() => {\n setShowWelcomeFields(!!(optionalFields || requiredFields || (disclaimer === null || disclaimer === void 0 ? void 0 : disclaimer.enabled)));\n }, [disclaimer, optionalFields, requiredFields]);\n useEffect(() => {\n if (!!compose) {\n timerRef.current = window.setTimeout(() => {\n setCompose(null);\n }, MAX_TYPING_TIME);\n }\n else {\n clearTimeout(timerRef.current);\n }\n }, [compose, setCompose]);\n useEffect(() => {\n if (bodyRef.current) {\n bodyRef.current.scrollTop = bodyRef.current.scrollHeight;\n }\n }, [chatEventCount, compose]);\n const handleWelcomeFormComplete = useCallback(() => {\n setShowWelcomeFields(false);\n }, []);\n const render = () => {\n if (isExpired && chats.length > 1) {\n return _jsx(Survey, { title: t('survey.expired'), survey: true }, void 0);\n }\n else if (isSessionForbidden) {\n return _jsx(Survey, { title: t('survey.forbidden') }, void 0);\n }\n else {\n return (_jsx(_Fragment, { children: showWelcomeFields ? (_jsx(WelcomeFields, { onComplete: handleWelcomeFormComplete }, void 0)) : (_jsxs(_Fragment, { children: [_jsxs(\"div\", Object.assign({ className: styles.middleWrapper }, { children: [_jsx(\"span\", Object.assign({ className: styles.poweredBy }, { children: _jsx(PoweredBy, {}, void 0) }), void 0), _jsxs(\"ul\", Object.assign({ className: styles.messages, ref: bodyRef }, { children: [_jsx(ChatEvents, {}, void 0), compose && _jsx(TypingIndicator, {}, void 0)] }), void 0)] }), void 0), _jsx(MessageInput, {}, void 0)] }, void 0)) }, void 0));\n }\n };\n return (_jsx(Transition, Object.assign({ in: open, timeout: 300 }, { children: (state) => {\n const containerStyles = widgetPosition !== 'livechat'\n ? null\n : Object.assign(Object.assign({}, defaultStyle), transitionStyles[state]);\n return (_jsxs(\"div\", Object.assign({ className: cn(styles.container, styles[size], styles[widgetPosition], { [styles.isExpired]: isExpired && chats.length > 1 }, { [styles.isExpired]: isSessionForbidden }), style: containerStyles }, { children: [_jsx(Header, {}, void 0), render()] }), void 0));\n } }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./BubbleIcon.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./BubbleIcon.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport styles from './BubbleIcon.module.scss';\nexport const BubbleIcon = ({ size, isOpen, onClick }) => {\n const _size = size === 'large' ? '80' : '60';\n if (isOpen) {\n return (_jsxs(\"svg\", Object.assign({ className: cn(styles.icon, styles.closeIcon), width: _size, height: _size, fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", onClick: () => onClick(false) }, { children: [_jsx(\"path\", { d: \"M60 30c0 16.569-13.431 30-30 30C13.431 60 0 46.569 0 30 0 13.431 13.431 0 30 0c16.569 0 30 13.431 30 30z\" }, void 0), _jsx(\"path\", { d: \"M22.703 21.294a.994.994 0 00-1.41 0 1.006 1.006 0 000 1.417l7.253 7.291-7.254 7.291a1.006 1.006 0 000 1.418.994.994 0 001.41 0l7.336-7.372 7.335 7.373a.994.994 0 001.41 0c.39-.392.39-1.027 0-1.418l-7.253-7.291 7.254-7.291c.39-.392.39-1.026 0-1.418a.994.994 0 00-1.41 0l-7.336 7.372-7.335-7.372z\" }, void 0)] }), void 0));\n }\n return (_jsxs(\"svg\", Object.assign({ className: cn(styles.icon, styles.openIcon), width: _size, height: _size, viewBox: \"0 0 81 80\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", onClick: () => onClick(true) }, { children: [_jsx(\"circle\", { cx: \"40.5\", cy: \"40\", r: \"40\" }, void 0), _jsx(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M58.9403 55.3618C62.4115 51.1994 64.5 45.8436 64.5 40C64.5 26.7452 53.7548 16 40.5 16C27.2452 16 16.5 26.7452 16.5 40C16.5 53.2548 27.2452 64 40.5 64C44.8484 64 48.9268 62.8435 52.4442 60.8214C55.4142 62.514 58.5619 63.3056 60.896 63.6757C61.8986 63.8347 62.396 62.4577 61.6938 61.7246C60.5688 60.5502 59.4641 58.9668 59.152 57.0835C59.067 56.5708 58.9973 55.9887 58.9403 55.3618Z\" }, void 0), _jsx(\"rect\", { x: \"25.5\", y: \"44\", width: \"5\", height: \"8\", rx: \"2.5\", transform: \"rotate(-90 25.5 44)\" }, void 0), _jsx(\"rect\", { x: \"35.5\", y: \"44\", width: \"5\", height: \"8\", rx: \"2.5\", transform: \"rotate(-90 35.5 44)\" }, void 0), _jsx(\"rect\", { x: \"45.5\", y: \"44\", width: \"5\", height: \"8\", rx: \"2.5\", transform: \"rotate(-90 45.5 44)\" }, void 0), _jsx(\"rect\", { x: \"25.5\", y: \"36\", width: \"5\", height: \"10\", rx: \"2.5\", transform: \"rotate(-90 25.5 36)\" }, void 0), _jsx(\"rect\", { x: \"25.5\", y: \"51\", width: \"5\", height: \"10\", rx: \"2.5\", transform: \"rotate(-90 25.5 51)\" }, void 0), _jsx(\"circle\", { cx: \"46.2114\", cy: \"34\", r: \"3\" }, void 0), _jsx(\"circle\", { cx: \"39.5\", cy: \"34\", r: \"2\" }, void 0), _jsx(\"circle\", { cx: \"53.2114\", cy: \"34\", r: \"2\" }, void 0)] }), void 0));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const CloseRounded = () => {\n return (_jsxs(\"svg\", Object.assign({ width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, { children: [_jsx(\"path\", { d: \"M1.97974 2L5.95953 5.9999L1.97974 9.9998\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }, void 0), _jsx(\"path\", { d: \"M10.0203 2.00024L6.04047 6.00015L10.0203 10\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }, void 0)] }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./OpeningMessage.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./OpeningMessage.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { CloseRounded } from '@/components/Icons/CloseRounded';\nimport { isWidgetOpenSelector } from '@/state/session';\nimport { iconSizeSelector, welcomeMessageSelector, launcherSelector, } from '@/state/widget';\nimport styles from './OpeningMessage.module.scss';\nexport const OpeningMessage = () => {\n const welcomeMessage = useRecoilValue(welcomeMessageSelector);\n const iconSize = useRecoilValue(iconSizeSelector);\n const open = useRecoilValue(isWidgetOpenSelector);\n const [show, setShow] = useState(!!welcomeMessage);\n const { type } = useRecoilValue(launcherSelector);\n useEffect(() => {\n setShow(!!welcomeMessage);\n }, [welcomeMessage]);\n useEffect(() => {\n if (open) {\n setShow(false);\n }\n }, [open]);\n const handleClose = useCallback(() => {\n setShow(false);\n }, []);\n if (!show) {\n return null;\n }\n return (_jsxs(\"div\", Object.assign({ className: cn(styles.text, styles[iconSize], styles[`type--${type}`]) }, { children: [_jsx(\"p\", { children: welcomeMessage }, void 0), _jsx(\"span\", Object.assign({ role: \"button\", tabIndex: 0, className: styles.closeBtn, onClick: handleClose, onKeyDown: handleClose }, { children: _jsx(CloseRounded, {}, void 0) }), void 0)] }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Launcher.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./Launcher.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport cn from 'classnames';\nimport { useCallback } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { BubbleIcon } from '@/components/Icons/Bubble';\nimport { OpeningMessage } from '@/components/OpeningMessage/OpeningMessage';\nimport { lastMessageReceivedSelector, widgetState } from '@/state/session';\nimport { iconSizeSelector, widgetPositionSelector, launcherSelector, } from '@/state/widget';\nimport styles from './Launcher.module.scss';\nexport const Launcher = () => {\n const iconSize = useRecoilValue(iconSizeSelector);\n const widgetPosition = useRecoilValue(widgetPositionSelector);\n const { icon_url, text, type } = useRecoilValue(launcherSelector);\n const [state, setOpenChat] = useRecoilState(widgetState);\n const lastMessageReceived = useRecoilValue(lastMessageReceivedSelector);\n const hasUnreadMessages = lastMessageReceived && !('read_at' in lastMessageReceived);\n const handleLauncherToggle = useCallback(() => {\n setOpenChat((prev) => (Object.assign(Object.assign({}, prev), { open: !prev.open })));\n }, [setOpenChat]);\n const renderLauncher = useCallback(() => {\n if (type === 'help') {\n return (_jsxs(\"div\", Object.assign({ className: cn(styles[type]), role: \"button\", tabIndex: 0, onClick: handleLauncherToggle, onKeyDown: handleLauncherToggle }, { children: [icon_url && _jsx(\"img\", { src: icon_url, alt: \"Launcher Icon\" }, void 0), ' ', _jsx(\"p\", Object.assign({ className: styles.text }, { children: text }), void 0)] }), void 0));\n }\n return (_jsx(\"div\", Object.assign({ className: cn({ [styles.hidden]: state.open }) }, { children: _jsx(BubbleIcon, { size: iconSize, isOpen: state.open, onClick: handleLauncherToggle }, void 0) }), void 0));\n }, [handleLauncherToggle, iconSize, icon_url, state.open, text, type]);\n return (_jsxs(\"div\", Object.assign({ className: cn(styles.launcher, styles[widgetPosition], styles[`type--${type}`], { [styles.open]: state.open, [styles.animate]: hasUnreadMessages }, 'mo_bubble') }, { children: [_jsx(OpeningMessage, {}, void 0), hasUnreadMessages && _jsx(\"span\", { className: styles.dot }, void 0), renderLauncher()] }), void 0));\n};\n","export default (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\n","// browser shim for xmlhttprequest module\nimport hasCORS from \"has-cors\";\nimport globalThis from \"../globalThis.js\";\nexport default function (opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import globalThis from \"./globalThis.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = setTimeout.bind(globalThis);\n obj.clearTimeoutFn = clearTimeout.bind(globalThis);\n }\n}\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach(key => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\nexport default encodePacket;\n",null,"import { ERROR_PACKET, PACKET_TYPES_REVERSE } from \"./commons.js\";\nimport { decode } from \"base64-arraybuffer\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType)\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType)\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1)\n }\n : {\n type: PACKET_TYPES_REVERSE[type]\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n return data instanceof ArrayBuffer ? new Blob([data]) : data;\n case \"arraybuffer\":\n default:\n return data; // assuming the data is already an ArrayBuffer\n }\n};\nexport default decodePacket;\n","import encodePacket from \"./encodePacket.js\";\nimport decodePacket from \"./decodePacket.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, encodedPacket => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload };\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api protected\n */\n onError(msg, desc) {\n const err = new Error(msg);\n // @ts-ignore\n err.type = \"TransportError\";\n // @ts-ignore\n err.description = desc;\n super.emit(\"error\", err);\n return this;\n }\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n return this;\n }\n /**\n * Closes the transport.\n *\n * @api public\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api public\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @api protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emit(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @api protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @api protected\n */\n onPacket(packet) {\n super.emit(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @api protected\n */\n onClose() {\n this.readyState = \"closed\";\n super.emit(\"close\");\n }\n}\n","import { Transport } from \"../transport.js\";\nimport yeast from \"yeast\";\nimport parseqs from \"parseqs\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this.polling = false;\n }\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this.polling || !this.writable) {\n let total = 0;\n if (this.polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this.poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n}\n","/* global attachEvent */\nimport XMLHttpRequest from \"./xmlhttprequest.js\";\nimport globalThis from \"../globalThis.js\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { Polling } from \"./polling.js\";\n/**\n * Empty function\n */\nfunction empty() { }\nconst hasXHR2 = (function () {\n const xhr = new XMLHttpRequest({\n xdomain: false\n });\n return null != xhr.responseType;\n})();\nexport class XHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n /**\n * XHR supports binary\n */\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n /**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd, xs: this.xs }, this.opts);\n return new Request(this.uri(), opts);\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data\n });\n req.on(\"success\", fn);\n req.on(\"error\", err => {\n this.onError(\"xhr post error\", err);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", err => {\n this.onError(\"xhr poll error\", err);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts) {\n super();\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.method = opts.method || \"GET\";\n this.uri = uri;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n create() {\n const opts = pick(this.opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this.opts.xd;\n opts.xscheme = !!this.opts.xs;\n const xhr = (this.xhr = new XMLHttpRequest(opts));\n try {\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.opts.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this.opts.extraHeaders) {\n if (this.opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this.method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this.opts.withCredentials;\n }\n if (this.opts.requestTimeout) {\n xhr.timeout = this.opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this.onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this.onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this.data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this.onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n }\n /**\n * Called upon successful response.\n *\n * @api private\n */\n onSuccess() {\n this.emit(\"success\");\n this.cleanup();\n }\n /**\n * Called if we have data.\n *\n * @api private\n */\n onData(data) {\n this.emit(\"data\", data);\n this.onSuccess();\n }\n /**\n * Called upon error.\n *\n * @api private\n */\n onError(err) {\n this.emit(\"error\", err);\n this.cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @api private\n */\n cleanup(fromError) {\n if (\"undefined\" === typeof this.xhr || null === this.xhr) {\n return;\n }\n this.xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this.xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this.index];\n }\n this.xhr = null;\n }\n /**\n * Called upon load.\n *\n * @api private\n */\n onLoad() {\n const data = this.xhr.responseText;\n if (data !== null) {\n this.onData(data);\n }\n }\n /**\n * Aborts the request.\n *\n * @api public\n */\n abort() {\n this.cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n","import globalThis from \"../globalThis.js\";\nexport const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const WebSocket = globalThis.WebSocket || globalThis.MozWebSocket;\nexport const usingBrowserWebSocket = true;\nexport const defaultBinaryType = \"arraybuffer\";\n","import { Transport } from \"../transport.js\";\nimport parseqs from \"parseqs\";\nimport yeast from \"yeast\";\nimport { pick } from \"../util.js\";\nimport { defaultBinaryType, nextTick, usingBrowserWebSocket, WebSocket } from \"./websocket-constructor.js\";\nimport { encodePacket } from \"engine.io-parser\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class WS extends Transport {\n /**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n constructor(opts) {\n super(opts);\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Transport name.\n *\n * @api public\n */\n get name() {\n return \"websocket\";\n }\n /**\n * Opens socket.\n *\n * @api private\n */\n doOpen() {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws =\n usingBrowserWebSocket && !isReactNative\n ? protocols\n ? new WebSocket(uri, protocols)\n : new WebSocket(uri)\n : new WebSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emit(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType || defaultBinaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @api private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = this.onClose.bind(this);\n this.ws.onmessage = ev => this.onData(ev.data);\n this.ws.onerror = e => this.onError(\"websocket error\", e);\n }\n /**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, data => {\n // always create a new object (GH-437)\n const opts = {};\n if (!usingBrowserWebSocket) {\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n if (this.opts.perMessageDeflate) {\n const len = \"string\" === typeof data ? Buffer.byteLength(data) : data.length;\n if (len < this.opts.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n this.ws.send(data);\n }\n else {\n this.ws.send(data, opts);\n }\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emit(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n /**\n * Closes socket.\n *\n * @api private\n */\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n let port = \"\";\n // avoid port if default for schema\n if (this.opts.port &&\n ((\"wss\" === schema && Number(this.opts.port) !== 443) ||\n (\"ws\" === schema && Number(this.opts.port) !== 80))) {\n port = \":\" + this.opts.port;\n }\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n const encodedQuery = parseqs.encode(query);\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n (encodedQuery.length ? \"?\" + encodedQuery : \"\"));\n }\n /**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n check() {\n return (!!WebSocket &&\n !(\"__initialize\" in WebSocket && this.name === WS.prototype.name));\n }\n}\n","import { XHR } from \"./polling-xhr.js\";\nimport { WS } from \"./websocket.js\";\nexport const transports = {\n websocket: WS,\n polling: XHR\n};\n","import { transports } from \"./transports/index.js\";\nimport { installTimerFunctions } from \"./util.js\";\nimport parseqs from \"parseqs\";\nimport parseuri from \"parseuri\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nexport class Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} opts - options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query)\n opts.query = uri.query;\n }\n else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n }, opts);\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n // set on heartbeat\n this.pingTimeoutTimer = null;\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\"beforeunload\", () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n }, false);\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n this.open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n const query = clone(this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts.transportOptions[name], this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n });\n return new transports[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1) {\n transport = \"websocket\";\n }\n else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n }\n catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n Socket.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n transport.open();\n }\n /**\n * Called when connection is deemed open.\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause) {\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this.onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this.resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n *\n * @api public\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n Socket.priorWebsocketSuccess = false;\n this.emitReserved(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this.pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, desc);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nSocket.protocol = protocol;\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n","import { Socket } from \"./socket.js\";\nexport { Socket };\nexport const protocol = Socket.protocol;\nexport { Transport } from \"./transport.js\";\nexport { transports } from \"./transports/index.js\";\nexport { installTimerFunctions } from \"./util.js\";\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n obj.type =\n obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK;\n return this.encodeAsBinary(obj);\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n constructor() {\n super();\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n packet = this.decodeString(obj);\n if (packet.type === PacketType.BINARY_EVENT ||\n packet.type === PacketType.BINARY_ACK) {\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return typeof payload === \"object\";\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || typeof payload === \"object\";\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return Array.isArray(payload) && payload.length > 0;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n }\n}\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n }\n catch (e) {\n return false;\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n *\n * @public\n */\n constructor(io, nsp, opts) {\n super();\n this.connected = false;\n this.disconnected = true;\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.ids = 0;\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @public\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for connect()\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * @return self\n * @public\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @return self\n * @public\n */\n emit(ev, ...args) {\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev + '\" is a reserved event name');\n }\n args.unshift(ev);\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = this.io.engine &&\n this.io.engine.transport &&\n this.io.engine.transport.writable;\n const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n if (discardPacket) {\n }\n else if (this.connected) {\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n const timeout = this.flags.timeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n this.acks[id] = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, [null, ...args]);\n };\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this.packet({ type: PacketType.CONNECT, data });\n });\n }\n else {\n this.packet({ type: PacketType.CONNECT, data: this.auth });\n }\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @private\n */\n onclose(reason) {\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emitReserved(\"disconnect\", reason);\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n const id = packet.data.sid;\n this.onconnect(id);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n this.onevent(packet);\n break;\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n this.onack(packet);\n break;\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowlegement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (\"function\" === typeof ack) {\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n }\n else {\n }\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id) {\n this.id = id;\n this.connected = true;\n this.disconnected = false;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => this.packet(packet));\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually.\n *\n * @return self\n * @public\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for disconnect()\n *\n * @return self\n * @public\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n * @public\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @returns self\n * @public\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * ```\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n * ```\n *\n * @returns self\n * @public\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @param listener\n * @public\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @param listener\n * @public\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @param listener\n * @public\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n *\n * @public\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n}\n","import { Socket as Engine, installTimerFunctions, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport Backoff from \"backo2\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n // emit `error`\n const errorSub = on(socket, \"error\", (err) => {\n self.cleanup();\n self._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n if (false !== this._timeout) {\n const timeout = this._timeout;\n if (timeout === 0) {\n openSubDestroy(); // prevents a race condition with the 'open' event\n }\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n socket.close();\n // @ts-ignore\n socket.emit(\"error\", new Error(\"timeout\"));\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n this.decoder.add(data);\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n this.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n if (this.engine)\n this.engine.close();\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called upon engine close.\n *\n * @private\n */\n onclose(reason) {\n this.cleanup();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(function subDestroy() {\n clearTimeout(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import parseuri from \"parseuri\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parseuri(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import { atom, selector } from 'recoil';\nimport { getConfig } from '@/config';\nexport const userConfigState = atom({\n key: 'userConfigState',\n default: undefined,\n});\nexport const integrationIdSelector = selector({\n key: 'integrationIdSelector',\n get: ({ get }) => {\n const userConfig = get(userConfigState);\n return userConfig === null || userConfig === void 0 ? void 0 : userConfig.integrationId;\n },\n});\nexport const hostSelector = selector({\n key: 'hostSelector',\n get: ({ get }) => {\n const userConfig = get(userConfigState);\n return (userConfig === null || userConfig === void 0 ? void 0 : userConfig.host) || getConfig().CHANNELS_HOST;\n },\n});\nexport const versionSelector = selector({\n key: 'versionSelector',\n get: ({ get }) => {\n const userConfig = get(userConfigState);\n return (userConfig === null || userConfig === void 0 ? void 0 : userConfig.version) || 'latest';\n },\n});\n","/* eslint-disable import/no-named-as-default */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport debug from 'debug';\nimport { nanoid } from 'nanoid';\nimport { useEffect, useRef, useState } from 'react';\nimport { useRecoilValue, useSetRecoilState } from 'recoil';\nimport io from 'socket.io-client';\nimport { getConfig } from '@/config';\nimport { hostSelector, integrationIdSelector } from '@/state/config';\nimport { chatEventsState, composeState, contextState, sessionIdSelector, sessionState, userSelector, } from '@/state/session';\nimport { connectionState, socketIdState } from '@/state/socket';\nimport { avatarSelector } from '@/state/widget';\nimport { SocketEvent, } from '@/ts/socket';\nimport { getTimestamp, getWebUser, sleep } from '@/utils';\nimport { useUnload } from './useUnload';\nconst SERVER_OR_CLIENT_DISCONNECT = new RegExp(/io server/);\nconst logError = debug('moveo:socket:error');\nconst log = debug('moveo:socket');\nexport const useSocketSetup = () => {\n const mounted = useRef(false);\n const [delayingBrainResponse, setDelayingBrainResponse] = useState(false);\n const [queuedMessages, setQueuedMessages] = useState([]);\n const [syncSessionId, setSyncSessionId] = useState(false);\n const integrationId = useRecoilValue(integrationIdSelector);\n const host = useRecoilValue(hostSelector);\n const sessionId = useRecoilValue(sessionIdSelector);\n const avatar = useRecoilValue(avatarSelector);\n const connectionStatus = useRecoilValue(connectionState);\n const setConnectionState = useSetRecoilState(connectionState);\n const setSessionState = useSetRecoilState(sessionState);\n const setContextState = useSetRecoilState(contextState);\n const setSocketIdState = useSetRecoilState(socketIdState);\n const setChatEvents = useSetRecoilState(chatEventsState);\n const setComposeState = useSetRecoilState(composeState);\n const user = useRecoilValue(userSelector);\n const [socket, setSocket] = useState();\n useUnload(() => {\n socket === null || socket === void 0 ? void 0 : socket.volatile.emit(SocketEvent.member_leave, {\n session_id: sessionId,\n author_name: user === null || user === void 0 ? void 0 : user.display_name,\n author_type: 'visitor',\n author_id: user === null || user === void 0 ? void 0 : user.user_id,\n });\n });\n useEffect(() => {\n if (integrationId && host && !socket) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const client = io(host, {\n rememberUpgrade: true,\n autoConnect: false,\n path: `/v1/web/${integrationId}/ws`,\n transports: ['websocket'],\n });\n setSocket(client);\n }\n }, [host, integrationId, socket]);\n useEffect(() => {\n mounted.current = true;\n if (socket) {\n socket.on('error', (error) => {\n logError(error);\n });\n socket.on('connect_error', (error) => {\n log('socket.connect_error', error);\n setConnectionState('offline');\n });\n socket.on('disconnect', (reason) => {\n if (!mounted.current) {\n // We can't update the recoil state if the component is unmounted\n return;\n }\n log('socket.disconnect reason:', reason);\n setConnectionState('offline');\n if (SERVER_OR_CLIENT_DISCONNECT.test(reason)) {\n // The disconnection was initiated by the server or the client, reconnect manually.\n // For all the other reasons wElse the socket will automatically try to reconnect\n socket.connect();\n }\n setSyncSessionId(true);\n setConnectionState('connecting');\n });\n socket.on('connect', () => {\n log('socket.connect', `${socket.id} at ${Date.now()}`);\n setConnectionState('online');\n setSocketIdState(socket.id);\n });\n // Session created\n socket.on(SocketEvent.session_created, (data) => {\n const { context } = data, session = __rest(data, [\"context\"]);\n setSessionState(session);\n setContextState(context);\n });\n // Session expired\n socket.on(SocketEvent.session_expired, (data) => {\n setSessionState(Object.assign(Object.assign({}, data), { is_expired: true }));\n });\n // Session reconnect is fobidden\n socket.on(SocketEvent.session_reconnect_forbidden, (data) => {\n setSessionState(Object.assign(Object.assign({}, data), { is_reconnect_forbidden: true }));\n });\n socket.on(SocketEvent.context_updated, (data) => {\n setContextState(data.context);\n });\n // Messages from agents\n socket.on(SocketEvent.message_received, (event) => {\n // Mark message as delivered\n socket.volatile.emit(SocketEvent.message_delivered, {\n session_id: event.session_id,\n timestamp: getTimestamp(),\n });\n // Transform the Agent message event from the socket to a chat event\n const chatEvent = {\n event_id: nanoid(),\n event_type: 'agent_message',\n author_name: event.from.agent_name,\n author_avatar: event.from.agent_avatar,\n author_id: event.from.agent_id,\n body: event.body,\n text: event.text,\n };\n setChatEvents((currentState) => [...currentState, chatEvent]);\n });\n // Messages from brains.\n socket.on(SocketEvent.message_brain_received, (event) => __awaiter(void 0, void 0, void 0, function* () {\n var e_1, _a;\n setDelayingBrainResponse(true);\n // Mark message as delivered\n socket.volatile.emit(SocketEvent.message_delivered, {\n session_id: event.session_id,\n timestamp: getTimestamp(),\n });\n // Set the context from the brain response to validate if we have\n // or not fields. The context is masked.\n setContextState(event.context);\n // Show brain is typing\n const startTyping = {\n event_id: nanoid(),\n event_type: 'compose',\n author_name: 'Virtual Assistant',\n author_type: 'brain',\n author_avatar: avatar,\n author_id: nanoid(),\n action: 'start',\n };\n setComposeState(startTyping);\n const responses = event.output.responses;\n const rootEvent = {\n event_type: 'brain_message',\n author_name: 'Virtual Assistant',\n author_avatar: avatar,\n author_id: nanoid(),\n };\n try {\n for (var responses_1 = __asyncValues(responses), responses_1_1; responses_1_1 = yield responses_1.next(), !responses_1_1.done;) {\n const resp = responses_1_1.value;\n if (resp.type === 'pause') {\n yield sleep(resp.duration * 1000);\n }\n else {\n // Delay responses for 1 second\n yield sleep(1000);\n }\n // Transform the brain message event from the socket to a chat event\n const chatEvent = Object.assign(Object.assign({}, rootEvent), { event_id: nanoid(), response: resp });\n setChatEvents((currentState) => [...currentState, chatEvent]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (responses_1_1 && !responses_1_1.done && (_a = responses_1.return)) yield _a.call(responses_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n const stopTyping = Object.assign(Object.assign({}, startTyping), { event_id: nanoid(), action: 'stop' });\n setComposeState(stopTyping);\n setDelayingBrainResponse(false);\n }));\n // compose event\n socket.on(SocketEvent.message_compose, (event) => {\n // We ignore compose messages from the brain or the visitor\n // * For the visitor we keep track of compose in a boolean in MessageInput\n // * For the brain we fake the compose when we received the message\n if (event.author_type === 'visitor' || event.author_type === 'brain') {\n return;\n }\n const compose = {\n event_id: nanoid(),\n event_type: 'compose',\n author_name: event.author_name,\n author_type: event.author_type,\n author_avatar: getConfig().BRAIN_AVATAR,\n author_id: event.author_id,\n action: event.action,\n };\n setComposeState(compose);\n });\n // Member join event\n socket.on(SocketEvent.member_join, (event) => {\n const chatEvent = {\n event_id: nanoid(),\n event_type: 'member_join',\n author_name: event.author_name || 'Virtual Assistant',\n author_type: event.author_type,\n author_avatar: getConfig().BRAIN_AVATAR,\n author_id: event.author_id,\n };\n setChatEvents((currentState) => [...currentState, chatEvent]);\n });\n // Member leave event\n socket.on(SocketEvent.member_leave, (event) => {\n const chatEvent = {\n event_id: nanoid(),\n event_type: 'member_leave',\n author_name: event.author_name || 'Virtual Assistant',\n author_type: event.author_type,\n author_avatar: getConfig().BRAIN_AVATAR,\n author_id: event.author_id,\n };\n setQueuedMessages((prev) => [...prev, chatEvent]);\n });\n socket.on(SocketEvent.message_delivered, (event) => {\n setChatEvents((currentState) => currentState.map((chatEvent) => {\n if (chatEvent.event_type === 'user_message') {\n const uMe = chatEvent;\n if (!uMe.delivered_at && uMe.created_at < event.timestamp) {\n return Object.assign(Object.assign({}, uMe), { delivered_at: event.timestamp });\n }\n }\n return chatEvent;\n }));\n });\n socket.on(SocketEvent.message_read, (event) => {\n setChatEvents((currentState) => currentState.map((chatEvent) => {\n if (chatEvent.event_type === 'user_message') {\n const uMe = chatEvent;\n if (uMe.read_at !== null && uMe.created_at < event.timestamp) {\n return Object.assign(Object.assign({}, uMe), { read_at: event.timestamp });\n }\n }\n return chatEvent;\n }));\n });\n socket.onAny(log);\n socket.connect();\n }\n return () => {\n mounted.current = false;\n socket === null || socket === void 0 ? void 0 : socket.close();\n };\n }, [\n avatar,\n setChatEvents,\n setComposeState,\n setConnectionState,\n setContextState,\n setSessionState,\n setSocketIdState,\n socket,\n ]);\n useEffect(() => {\n if (socket && socket.connected && connectionStatus === 'online') {\n if (!sessionId) {\n // Create session\n socket.emit(SocketEvent.session_create, {\n context: {\n user: getWebUser(),\n },\n });\n }\n else if (syncSessionId) {\n socket.emit(SocketEvent.session_reconnect, {\n session_id: sessionId,\n });\n // FIXME: This needs to be updated when the server reports that\n // we were successfully reconnected\n setSyncSessionId(false);\n }\n }\n }, [connectionStatus, sessionId, socket, syncSessionId]);\n useEffect(() => {\n if (!delayingBrainResponse && queuedMessages.length > 0) {\n setChatEvents((currentState) => [...currentState, ...queuedMessages]);\n setQueuedMessages([]);\n }\n }, [delayingBrainResponse, queuedMessages, setChatEvents]);\n return socket;\n};\n","import { useRef, useEffect } from 'react';\n/**\n * Attach an event listener for\n * [`onbeforeunload`](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload).\n * @param fn the callback function that will be called before closing the window\n */\nexport const useUnload = (fn) => {\n const cb = useRef(fn);\n useEffect(() => {\n cb.current = fn;\n }, [fn]);\n useEffect(() => {\n const onUnload = () => { var _a; return (_a = cb.current) === null || _a === void 0 ? void 0 : _a.call(cb); };\n window.addEventListener('beforeunload', onUnload);\n return () => window.removeEventListener('beforeunload', onUnload);\n }, []);\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport ReactModal from 'react-modal';\nexport const PopupContainer = ({ children, isOpen, onClose }) => {\n const modalStyles = {\n overlay: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'rgba(0,0,0,0.3)',\n },\n content: {\n padding: '0',\n inset: 'auto',\n border: 0,\n width: 'var(--moveo-chat-width--regular)',\n height: 'var(--moveo-chat-height--regular)',\n },\n };\n return (_jsx(ReactModal, Object.assign({ style: modalStyles, isOpen: isOpen, onRequestClose: onClose, shouldCloseOnOverlayClick: true, shouldCloseOnEsc: true, parentSelector: () => document.querySelector('.moveo_web_client > div:first-child'), ariaHideApp: false }, { children: children }), void 0));\n};\nPopupContainer.defaultProps = {\n children: null,\n isOpen: false,\n onClose: () => ({}),\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./AppContainer.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./AppContainer.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n// import { useEffect } from 'react';\n// import { useRecoilSnapshot, useRecoilValue } from 'recoil';\nimport cn from 'classnames';\nimport { useCallback, useState } from 'react';\nimport { useRecoilState, useRecoilValue } from 'recoil';\nimport { ChatContainer } from '@/components/ChatContainer/ChatContainer';\nimport { Launcher } from '@/components/Launcher/Launcher';\nimport { SocketContext } from '@/contexts/socket';\nimport { useSocketSetup } from '@/hooks/useSocketSetup';\nimport { widgetState } from '@/state/session';\nimport { focusTrapSelector, themeSelector, widgetPositionSelector, } from '@/state/widget';\nimport { PopupContainer } from './PopupContainer';\nimport styles from './AppContainer.module.scss';\nexport const AppContainer = () => {\n const socket = useSocketSetup();\n const widgetPosition = useRecoilValue(widgetPositionSelector);\n const theme = useRecoilValue(themeSelector);\n const [activeTrap, setActiveTrap] = useState(false);\n const [state, setState] = useRecoilState(widgetState);\n const focusTrap = useRecoilValue(focusTrapSelector);\n // const snapshot = useRecoilSnapshot();\n // useEffect(() => {\n // for (const node of snapshot.getNodes_UNSTABLE({ isModified: true })) {\n // console.debug(node.key, snapshot.getLoadable(node));\n // }\n // }, [snapshot]);\n const handleTrap = useCallback(() => {\n setActiveTrap(!activeTrap);\n }, [activeTrap]);\n const handleOnClose = useCallback((e) => {\n e.preventDefault();\n setState({ open: false });\n }, [setState]);\n return (_jsx(SocketContext.Provider, Object.assign({ value: socket }, { children: _jsxs(\"div\", Object.assign({ className: cn(styles.container, styles[theme], styles[widgetPosition]) }, { children: [_jsx(Launcher, {}, void 0), _jsx(\"div\", Object.assign({ className: cn(styles.focusTrap, { [styles.hide]: !state.open }, { [styles.disabled]: !focusTrap }), onClick: handleTrap, onKeyUp: handleTrap, tabIndex: 0, role: \"button\" }, { children: widgetPosition === 'popup' ? (_jsx(PopupContainer, Object.assign({ isOpen: state.open, onClose: handleOnClose }, { children: _jsx(ChatContainer, {}, void 0) }), void 0)) : (_jsx(ChatContainer, {}, void 0)) }), void 0)] }), void 0) }), void 0));\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./App.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-modules-typescript-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./App.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport { useRecoilState, useSetRecoilState } from 'recoil';\nimport { AppContainer } from '@/components/AppContainer/AppContainer';\nimport { useTheme } from '@/hooks/useTheme';\nimport { userConfigState } from '@/state/config';\nimport { widgetConfigState } from '@/state/widget';\nimport './App.scss';\nexport const App = (props) => {\n const [config, setConfig] = useRecoilState(widgetConfigState);\n const setUserConfig = useSetRecoilState(userConfigState);\n useTheme(props.userConfig.namespace);\n // Save the user config\n useEffect(() => {\n if (props.userConfig) {\n const { host, version, integrationId } = props.userConfig;\n setUserConfig({ host, version, integrationId });\n }\n }, [props.userConfig, setUserConfig]);\n useEffect(() => {\n if (props.widgetConfig) {\n // Separate state into widget config (which gets merged with user config)\n // and integration data such as `integration_id`, `active`, etc...\n setConfig(Object.assign(Object.assign({}, config), props.widgetConfig));\n }\n // Don't add `config` to the dependencies because it creates an infinity loop\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.userConfig, setUserConfig]);\n return _jsx(AppContainer, {}, void 0);\n};\n","import { useEffect } from 'react';\nimport { useRecoilValue } from 'recoil';\nimport { backgroundColorSelector, iconSizeSelector, accentColorSelector, } from '@/state/widget';\nexport const useTheme = (namespace = 'moveo_web_client') => {\n const backgroundColor = useRecoilValue(backgroundColorSelector);\n const accentColor = useRecoilValue(accentColorSelector);\n const iconSize = useRecoilValue(iconSizeSelector);\n useEffect(() => {\n const elementArray = document.querySelectorAll(`#${namespace} > div:first-child`);\n elementArray.forEach((element) => {\n element === null || element === void 0 ? void 0 : element.style.setProperty('--moveo-background-color', backgroundColor);\n element === null || element === void 0 ? void 0 : element.style.setProperty('--moveo-accent-color', accentColor);\n element === null || element === void 0 ? void 0 : element.style.setProperty('--moveo-icon-size', iconSize);\n });\n }, [accentColor, backgroundColor, iconSize, namespace]);\n};\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-modules-typescript-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-modules-typescript-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport debug from 'debug';\nimport { render } from 'react-dom';\nimport { RecoilRoot } from 'recoil';\nimport './i18n';\nimport { App } from '@/components/App/App';\nimport { fetchIntegration, onDocumentReady } from '@/utils';\nimport '@/styles/styles.scss';\nconst log = debug('moveo:index');\nexport const init = (userConfig) => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n if (!userConfig || !userConfig.integrationId) {\n throw new Error('integrationId is required.\\n Call MoveoAI.init({ integrationId: YOUR_INTEGRATION_HERE })');\n }\n const widgetConfig = yield fetchIntegration(userConfig.integrationId, userConfig.host);\n const app = (_jsx(RecoilRoot, { children: _jsx(App, { widgetConfig: widgetConfig, userConfig: userConfig }, void 0) }, void 0));\n const parentElement = userConfig.element;\n yield onDocumentReady();\n const container = document.createElement('div');\n container.setAttribute('id', (_a = userConfig === null || userConfig === void 0 ? void 0 : userConfig.namespace) !== null && _a !== void 0 ? _a : '');\n container.setAttribute('class', 'moveo_web_client');\n if (parentElement) {\n parentElement.appendChild(container);\n }\n else {\n document.body.appendChild(container);\n }\n render(app, container);\n return {\n show: () => {\n log('show()');\n },\n hide: () => {\n log('hide()');\n },\n login: () => {\n log('login()');\n },\n };\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(5088);\n"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","locals","i","Emitter","obj","key","prototype","mixin","on","addEventListener","event","fn","this","_callbacks","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","cb","callbacks","splice","emit","args","Array","len","slice","emitReserved","listeners","hasListeners","Backoff","opts","ms","min","max","factor","jitter","attempts","duration","Math","pow","rand","random","deviation","floor","reset","setMin","setMax","setJitter","hasOwn","hasOwnProperty","classNames","classes","arg","argType","isArray","inner","toString","Object","call","join","default","cssWithMappingToString","list","map","item","content","needLayer","concat","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","formatArgs","useColors","namespace","humanize","diff","c","color","index","lastC","replace","match","save","namespaces","storage","setItem","removeItem","error","load","r","getItem","process","env","DEBUG","window","type","__nwjs","navigator","userAgent","toLowerCase","document","documentElement","style","WebkitAppearance","console","firebug","exception","table","parseInt","RegExp","$1","localStorage","localstorage","destroy","warned","warn","colors","log","debug","formatters","j","v","message","createDebug","prevTime","namespacesCache","enabledCache","enableOverride","enabled","curr","Number","Date","prev","coerce","unshift","format","formatter","val","selectColor","extend","defineProperty","enumerable","configurable","get","set","init","delimiter","newDebug","toNamespace","regexp","substring","Error","stack","disable","names","skips","enable","split","substr","name","test","keys","forEach","hash","charCodeAt","abs","canUseDOM","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","XMLHttpRequest","err","s","m","h","d","plural","msAbs","n","isPlural","round","options","str","String","exec","parseFloat","parse","isFinite","long","fmtShort","encode","decode","qs","qry","pairs","l","pair","decodeURIComponent","re","parts","path","src","b","indexOf","e","query","uri","host","authority","ipv6uri","pathNames","queryKey","$0","$2","currentIndex","currentComponent","prevRaf","currentHook","afterPaintEffects","oldBeforeDiff","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","hooks","useState","initialState","useReducer","invokeOrReturn","reducer","hookState","_reducer","action","nextValue","setState","useEffect","callback","state","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","useCallback","useContext","context","provider","sub","props","value","useDebugValue","useErrorBoundary","errState","componentDidCatch","flushAfterPaintEffects","component","sort","a","pop","invokeCleanup","invokeEffect","vnode","raf","done","clearTimeout","timeout","HAS_RAF","cancelAnimationFrame","setTimeout","requestAnimationFrame","commitQueue","some","filter","hasErrored","hook","comp","cleanup","oldArgs","newArgs","f","assign","shallowDiffers","PureComponent","p","memo","comparer","shouldUpdate","nextProps","updateRef","Memoed","shouldComponentUpdate","displayName","isReactComponent","Component","isPureReactComponent","oldDiffHook","REACT_FORWARD_SYMBOL","Symbol","for","forwardRef","Forwarded","clone","$$typeof","render","mapFn","children","toChildArray","Children","count","only","normalized","toArray","oldCatchError","newVNode","oldVNode","then","oldUnmount","Suspense","_suspenders","suspended","lazy","loader","prom","Lazy","SuspenseList","_next","_map","promise","suspendingVNode","suspendingComponent","resolve","resolved","onResolved","onSuspensionComplete","suspendedVNode","removeOriginal","detachedParent","originalParent","child","insertBefore","forceUpdate","wasHydrating","componentWillUnmount","detachedComponent","detachedClone","parentDom","effect","fallback","Fragment","node","delete","revealOrder","size","ContextProvider","getChildContext","Portal","_this","container","_container","_temp","nodeType","parentNode","childNodes","appendChild","before","removeChild","createPortal","delegated","unsuspend","wrappedUnsuspend","Map","reverse","componentDidUpdate","componentDidMount","REACT_ELEMENT_TYPE","CAMEL_PROPS","IS_DOM","onChangeInputType","parent","textContent","preactRender","hydrate","preactHydrate","writable","oldEventHook","empty","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","persist","nativeEvent","classNameDescriptor","class","oldVNodeHook","normalizedProps","nonCustomElement","multiple","selected","defaultValue","className","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","readContext","version","createFactory","isValidElement","element","cloneElement","preactCloneElement","unmountComponentAtNode","findDOMNode","base","unstable_batchedUpdates","flushSync","StrictMode","createContext","createRef","vnodeId","rerenderQueue","defer","prevDebounce","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","defaultProps","createVNode","original","constructor","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","debounceRendering","queue","oldDom","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","refs","oldChildren","oldChildrenLength","reorderChildren","placeChild","unmount","applyRef","tmp","out","nextDom","sibDom","outer","nextSibling","setStyle","setProperty","dom","oldValue","useCapture","o","cssText","_listeners","eventProxyCapture","eventProxy","setAttribute","removeAttribute","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","componentContext","newType","contextType","doRender","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getSnapshotBeforeUpdate","diffElementNodes","diffed","oldHtml","newHtml","localName","createTextNode","createElementNS","is","dangerouslySetInnerHTML","attributes","innerHTML","diffProps","checked","parentVNode","skipRemove","replaceNode","firstChild","contextId","Consumer","contextValue","Provider","subs","ctx","_props","old","ctor","handled","getDerivedStateFromError","update","Promise","bind","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","__suppressDeprecationWarning","bodyOpenClassName","portalClassName","_extends","target","_createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","__esModule","newObj","_interopRequireWildcard","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","_classCallCheck","instance","TypeError","_possibleConstructorReturn","ReferenceError","isReact16","createHTMLElement","getCreatePortal","unstable_renderSubtreeIntoContainer","getParentElement","parentSelector","Modal","_Component","_ref","_len","_key","__proto__","getPrototypeOf","removePortal","contains","portalRef","portal","renderPortal","defaultStyles","subClass","superClass","create","setPrototypeOf","_inherits","prevParent","nextParent","_","isOpen","now","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","setElement","propTypes","overlay","htmlOpenClassName","afterOpen","overlayClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","onRequestClose","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","preventScroll","aria","role","contentLabel","shouldCloseOnEsc","overlayRef","contentRef","overlayElement","contentElement","body","contentEl","position","top","left","right","bottom","backgroundColor","border","background","overflow","WebkitOverflowScrolling","borderRadius","outline","padding","_typeof","iterator","focusManager","_scopeTab2","classList","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","_this$props","remove","getElementsByTagName","show","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","open","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","overlayEl","close","closeWithoutTimeout","focusContent","contentHasFocus","focus","handleKeyDown","keyCode","stopPropagation","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","preventDefault","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","activeElement","buildClassName","which","additional","attributesFromObject","prefix","items","reduce","acc","moveFromContentToOverlay","add","hide","register","_props2","contentStyles","overlayStyles","overlayProps","onClick","onMouseDown","contentProps","tabIndex","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","querySelectorAll","assertNodeList","useElement","el","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning2","nodeList","selector","HTMLCollection","NodeList","_arr","after","_i","instances","_arr2","_i2","check","nodeName","subscribe","eventType","openInstances","opacity","cloneNode","lastChild","parentElement","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","handleBlur","handleFocus","toFocus","modalElement","detachEvent","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","subscribers","subscriber","EE","SafeHTMLElement","HTMLElement","tabbable","shiftKey","head","tail","getActiveElement","checkSafari","x","shadowRoot","findTabbableDescendants","finished","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","getComputedStyle","getPropertyValue","scrollWidth","scrollHeight","getAttribute","isTabIndexNaN","isNaN","isTabIndexNotNaN","disabled","href","rootNode","getRootNode","visible","focusable","_Modal2","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","indexByIdentifier","css","sourceMap","references","updater","addElementStyle","byIndex","api","domAPI","lastIdentifiers","newList","newLastIdentifiers","_index","insert","styleTarget","querySelector","HTMLIFrameElement","contentDocument","getTarget","setAttributes","styleElement","nonce","insertStyleElement","styleTagTransform","removeStyleElement","styleSheet","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","arr","enums","toUpperCase","has","str1","str2","lowerize","trim","rgxMapper","ua","arrays","q","matches","regex","strMapper","windowsVersionMap","regexes","browser","OPERA","FIREFOX","CHROME","cpu","device","engine","EDGE","os","UAParser","extensions","getResult","_ua","_rgxmap","mergedRegexes","getBrowser","_browser","major","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","parser","prop","alphabet","seed","num","encoded","yeast","decoded","charAt","__source","__self","Recoil_err","Recoil_isPromise","Recoil_nullthrows","_defineProperty","BaseLoadable","getValue","toPromise","valueMaybe","valueOrThrow","promiseMaybe","promiseOrThrow","errorMaybe","errorOrThrow","other","contents","ValueLoadable","super","loadableWithPromise","isLoadable","loadableWithValue","loadableWithError","ErrorLoadable","reject","LoadingLoadable","nextLoadable","catch","freeze","loadableAll","inputs","output","every","find","all","loadableAllArray","getOwnPropertyNames","outputs","idx","LoadableStaticInterface","of","_useMutableSource","Recoil_Loadable","loadableLoading","RecoilLoadable","Recoil_Loadable_1","Recoil_Loadable_2","Recoil_Loadable_3","Recoil_Loadable_4","Recoil_Loadable_5","Recoil_Loadable_6","Recoil_Loadable_7","Recoil_Loadable$1","useMutableSource","Recoil_mutableSource","mutableSourceExists","$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE","mutableSourceExists$1","gks","Recoil_gkx","gk","_gks$get","setPass","setFail","Recoil_gkx_1","Recoil_mapIterable","iterable","AbstractRecoilValue","newKey","RecoilState","RecoilValueReadOnly","Recoil_RecoilValue","isRecoilValue","Recoil_RecoilValue_1","Recoil_RecoilValue_2","Recoil_RecoilValue_3","Recoil_RecoilValue_4","Recoil_RecoilValue$1","DefaultValue","DEFAULT_VALUE","RecoilValueNotReady","nodes","recoilValues","NodeMissingError","configDeletionHandlers","getConfigDeletionHandler","Recoil_Node","registerNode","recoilValue","getNode","getNodeMaybe","deleteNodeConfigIfPossible","_node$shouldDeleteCon","_getConfigDeletionHan","shouldDeleteConfigOnRelease","setConfigDeletionHandler","recoilValuesForKeys","Recoil_Queue","hamt_1","hamt","BUCKET_SIZE","MASK","MAX_INDEX_NODE","MIN_ARRAY_NODE","nothing","constant","hashFragment","shift","toBitmap","fromBitmap","bitmap","bit","arrayUpdate","mutate","arraySpliceOut","newLen","g","__hamt_isEmpty","isEmptyNode","Leaf","edit","_modify","Leaf__modify","Collision","Collision__modify","IndexedNode","mask","IndexedNode__modify","ArrayNode","ArrayNode__modify","mergeLeaves","h1","n1","h2","n2","subH1","subH2","canEditNode","keyEq","_v","_newValue","newValue","updateCollisionList","frag","indx","exists","canEdit","newChildren","subNodes","expand","arraySpliceIn","newChild","removed","elements","elem","pack","editable","config","_editable","_edit","_config","_root","_size","setTree","newRoot","newSize","tryGetHash","alt","tryGet","getHash","hasHash","defKeyCompare","y","make","isEmpty","modifyHash","NaN","modify","setHash","del","removeHash","deleteHash","beginMutation","endMutation","transient","appk","lazyVisitChildren","lazyVisit","rest","DONE","MapIterator","v0","visit","buildPairs","entries","buildKeys","buildValues","values","fold","z","toVisit","createCommonjsModule","BuiltInMap","existing","persistentMap","toMap","HashArrayMappedTrieMap","_hamt","Recoil_PersistentMap_1","Recoil_PersistentMap$1","Recoil_differenceSets","setsWithValuesToRemove","ret","Set","FIRST","otherSet","Recoil_mapMap","mergeDependencyMapIntoGraph","deps","graph","olderGraph","nodeDeps","nodeToNodeSubscriptions","upstreams","downstream","existingUpstreams","upstream","Recoil_Graph","addToDependencyMap","dependencyMap","cloneGraph","mergeDepsIntoDependencyMap","from","into","upstreamDeps","downstreamNode","dep","saveDependencyMapToStore","store","_storeState$nextTree","_storeState$previousT","_storeState$previousT2","_storeState$previousT3","storeState","getState","currentTree","nextTree","previousTree","getGraph","_storeState$nextTree2","nextVersion","persistentMap$1","graph$1","nextTreeStateVersion","getNextTreeStateVersion","makeEmptyTreeState","stateID","transactionMetadata","dirtyAtoms","atomValues","nonvalidatedAtoms","Recoil_State","makeEmptyStoreState","commitDepth","knownAtoms","knownSelectors","transactionSubscriptions","nodeTransactionSubscriptions","nodeToComponentSubscriptions","queuedComponentCallbacks_DEPRECATED","suspendedComponentResolvers","graphsByVersion","versionsUsedByComponent","retention","referenceCounts","nodesRetainedByZone","retainablesToCheckForRelease","nodeCleanupFunctions","Recoil_unionSets","sets","Recoil_CopyOnWrite","setByAddingToSet","setByDeletingFromSet","mapBySettingInMap","mapByUpdatingInMap","mapByDeletingFromMap","mapByDeletingMultipleFromMap","ks","Recoil_filterIterable","predicate","RetentionZone","Recoil_RetentionZone","retentionZone","setByAddingToSet$1","getNode$1","getNodeMaybe$1","recoilValuesForKeys$1","RetentionZone$1","emptySet","ReadOnlyRecoilValueError","initializeNodeIfNewToStore","treeState","trigger","retentionCleanup","nodeKey","retainedBy","addToZone","zone","deleteFromZone","initializeRetentionForNode","nodeCleanup","peekNodeLoadable","peek","getDownstreamNodes","visitedNodes","visitingNodes","_graph$nodeToNodeSubs","subscribedNodes","Recoil_FunctionalCore","getNodeLoadable","setNodeValue","cleanUpNode","_state$nodeCleanupFun","setUnvalidatedAtomValue_DEPRECATED","_node$invalidate","invalidate","peekNodeInfo","_graph$nodeDeps$get","_storeState$nodeToCom","_storeState$nodeToCom2","downstreamNodes","loadable","isActive","isSet","isModified","components","getDownstreamNodes$1","getNodeLoadable$1","setNodeValue$1","getNodeMaybe$2","DefaultValue$1","RecoilValueNotReady$1","AbstractRecoilValue$1","RecoilState$1","RecoilValueReadOnly$1","isRecoilValue$1","applyAction","valueOrUpdater","valueFromValueOrUpdater","writes","writeLoadableToTreeState","unvalidatedValue","applyActionsToStore","actions","replaceState","newState","copyTreeState","invalidateDownstreams","queueOrPerformStateUpdate","batchStack","actionsByStore","downstreams","_getNodeMaybe","_getNodeMaybe$invalid","setRecoilValue","subscriptionID","Recoil_RecoilValueInterface","getRecoilValueAsLoadable","setRecoilValueLoadable","markRecoilValueModified","setUnvalidatedRecoilValue","subscribeToRecoilValue","componentDebugName","subID","release","applyAtomValueWrites","batchStart","invalidateDownstreams_FOR_TESTING","Recoil_someSet","entry","cleanUpNode$1","deleteNodeConfigIfPossible$1","getNode$2","RetentionZone$2","emptySet$1","releaseRetainablesNowOnCurrentTree","retainables","releasableNodes","searchFromNodes","nonReleasableNodes","findReleasableNodesInner","releasableNodesFoundThisIteration","doNotDescendInto1","doNotDescendInto2","answer","visited","getDownstreamNodesInTopologicalOrder","_storeState$retention","zonesThatCouldRetainNode","nodeChildren","parents","findReleasableNodes","releaseNode","zones","_storeState$retention2","_storeState$retention3","updateRetainCountToZero","retainable","scheduleOrPerformPossibleReleaseOfRetainable","Recoil_Retention","SUSPENSE_TIMEOUT_MS","updateRetainCount","delta","_map$get","newCount","releaseScheduledRetainablesNow","clear","retainedByOptionWithDefault","Recoil_Environment","isSSR","isReactNative","product","ReactBatchedUpdates","unstable_batchedUpdates$1","Recoil_ReactBatchedUpdates","batchStart$1","unstable_batchedUpdates$2","batcher","Recoil_Batching","getBatcher","setBatcher","newBatcher","batchUpdates","batchEnd","isSSR$1","batchUpdates$1","initializeNodeIfNewToStore$1","peekNodeInfo$1","graph$2","DEFAULT_VALUE$1","recoilValues$1","recoilValuesForKeys$2","AbstractRecoilValue$2","getRecoilValueAsLoadable$1","setRecoilValue$1","setUnvalidatedRecoilValue$1","updateRetainCount$1","getNextTreeStateVersion$1","makeEmptyStoreState$1","Snapshot","checkRefCount_INTERNAL","_store","getLoadable","opt","isInitialized","iters","iter","Recoil_concatIterables","mapper","mutableSnapshot","MutableSnapshot","cloneSnapshot","getStore_INTERNAL","async","replacer","graphs","newGraph","subscribeToTransactions","addTransactionMetadata","retain","autorelease_INTERNAL","_refCount","released","release_INTERNAL","getID","getID_INTERNAL","cloneStoreState","bumpVersion","batch","recoilState","newValueOrUpdater","_batch","Recoil_Snapshot","freshSnapshot","initializeState","Recoil_Snapshot_1","Recoil_Snapshot_2","Recoil_Snapshot_3","Recoil_Snapshot_4","Recoil_Snapshot$1","getNextTreeStateVersion$2","makeEmptyStoreState$2","cleanUpNode$2","getDownstreamNodes$2","setNodeValue$2","setUnvalidatedAtomValue_DEPRECATED$1","graph$3","cloneGraph$1","applyAtomValueWrites$1","releaseScheduledRetainablesNow$1","freshSnapshot$1","notInAContext","defaultStore","stateReplacerIsBeingExecuted","startNextTreeIfNeeded","AppContext","useStoreRef","MutableSourceContext","notifyComponents","dependentNodes","comps","_subID","_debugName","sendEndOfBatchNotifications","subscriptions","subscription","Batcher","setNotifyBatcherOfChange","storeRef","endBatch","nextID","RecoilRoot_INTERNAL","initializeState_DEPRECATED","store_INTERNAL","storeProp","_createMutableSource","notifyBatcherOfChange","createMutableSource","replaced","metadata","initial","atom","writtenNodes","setUnvalidatedAtomValues","initialStoreState_DEPRECATED","initialStoreState","mutableSource","atomKey","Recoil_RecoilRoot_react","useRecoilMutableSource","RecoilRoot","override","propsExceptOverride","ancestorStoreRef","notifyComponents_FOR_TESTING","sendEndOfBatchNotifications_FOR_TESTING","useRef$1","Recoil_useComponentName","useEffect$1","useRef$2","Recoil_usePrevious","useStoreRef$1","SUSPENSE_TIMEOUT_MS$1","updateRetainCount$2","RetentionZone$3","isSSR$2","useEffect$2","useRef$3","Recoil_useRetain","toRetain","timeoutID","previousRetainables","Recoil_shallowArrayEqual","useRetain_ACTUAL","batchUpdates$2","DEFAULT_VALUE$2","useRecoilMutableSource$1","useStoreRef$2","isRecoilValue$2","AbstractRecoilValue$3","getRecoilValueAsLoadable$2","setRecoilValue$2","setUnvalidatedRecoilValue$2","subscribeToRecoilValue$1","setByAddingToSet$2","mutableSourceExists$2","useMutableSource$1","useCallback$1","useEffect$3","useMemo$1","useRef$4","useState$1","handleLoadable","useRecoilValueLoadable","getLoadableWithTesting","_storeState","newLoadable","prevLoadableRef","useRecoilValueLoadable_MUTABLESOURCE","_state","_prevLoadableRef$curr","_prevLoadableRef$curr2","useRecoilValueLoadable_LEGACY","useRecoilValue","useSetRecoilState","Recoil_Hooks","recoilComponentGetRecoilValueCount_FOR_TESTING","useRecoilInterface","recoilValuesUsed","previousSubscriptions","unsubscribeFrom","updateState","getRecoilValue","getRecoilValueLoadable","getRecoilState","getRecoilStateLoadable","getSetRecoilState","getResetRecoilState","useRecoilState","useRecoilStateLoadable","useResetRecoilState","useSetUnvalidatedAtomValues","batchUpdates$3","DEFAULT_VALUE$3","getNode$3","nodes$1","useStoreRef$3","AbstractRecoilValue$4","setRecoilValueLoadable$1","SUSPENSE_TIMEOUT_MS$2","Snapshot$1","cloneSnapshot$1","isSSR$3","useCallback$2","useEffect$4","useRef$5","useState$2","useTransactionSubscription","externallyVisibleAtomValuesInState","persistedAtomContentsValues","Recoil_filterMap","persistence","persistence_UNSTABLE","maps","nextKey","Recoil_mergeMaps","Recoil_SnapshotHooks","useRecoilSnapshot","setSnapshot","previousSnapshot","useGotoRecoilSnapshot","keysToUpdate","_prev$atomValues$get","_next$atomValues$get","shouldRestoreFromSnapshots","useRecoilTransactionObserver","useTransactionObservation_DEPRECATED","previousAtomValues","atomInfo","_node$persistence_UNS","_node$persistence_UNS2","_node$persistence_UNS3","_node$persistence_UNS4","backButton","modifiedAtoms","Recoil_filterSet","useTransactionSubscription_DEPRECATED","peekNodeInfo$2","useStoreRef$4","RecoilRoot$1","useStoreRef$5","useMemo$2","loadableWithValue$1","DEFAULT_VALUE$4","getNode$4","copyTreeState$1","getRecoilValueAsLoadable$3","invalidateDownstreams$1","writeLoadableToTreeState$1","isAtom","TransactionInterfaceImpl","_changes","_treeState","newTreeState_INTERNAL","Recoil_AtomicUpdates$1","atomicUpdater","changeset","Recoil_invariant","condition","atomicUpdater$1","batchUpdates$4","DEFAULT_VALUE$5","useStoreRef$6","setRecoilValue$3","Snapshot$2","cloneSnapshot$2","useGotoRecoilSnapshot$1","useCallback$3","Sentinel","SENTINEL","getNode$5","useStoreRef$7","useCallback$4","atomicUpdater$2","useStoreRef$8","useMemo$3","isReactNative$1","isSSR$4","includes","allowFunctions","_JSON$stringify","toJSON","localeCompare","Recoil_stableStringify","findLeaf","getNodeValue","handlers","_handlers$onNodeVisit","onNodeVisit","nodeValue","branches","addLeaf","route","branchKey","onAbort","_handlers$onNodeVisit2","pruneUpstreamBranches","branchNode","countDownstreamLeaves","sum","currNode","Recoil_TreeCache_1","_options$onHit","_options$onSet","_options$mapNodeValue","_numLeafs","_onHit","onHit","_onSet","onSet","_mapNodeValue","mapNodeValue","_this$getLeafNode","getLeafNode","leafNode","setRetryablePart","pruneNodeFromTree","Recoil_TreeCache$1","TreeCache","Recoil_LRUCache_1","_options$mapKey","_maxSize","maxSize","_head","_tail","_keyMapper","mapKey","mappedKey","_maybeDeleteLRU","deleteLru","Recoil_LRUCache$1","LRUCache","LRUCache$1","TreeCache$1","Recoil_treeCacheLRU","lruCache","cache","lruNode","TreeCache$2","defaultPolicy","equality","eviction","Infinity","loadableWithError$1","loadableWithPromise$1","loadableWithValue$2","getNodeLoadable$2","peekNodeLoadable$1","setNodeValue$3","saveDependencyMapToStore$1","DEFAULT_VALUE$6","RecoilValueNotReady$2","getConfigDeletionHandler$1","getNode$6","registerNode$1","isRecoilValue$3","AbstractRecoilValue$5","markRecoilValueModified$1","setRecoilValueLoadable$2","retainedByOptionWithDefault$1","cloneSnapshot$3","startPerfBlock","startPerfBlock$1","_id","Canceled","CANCELED","dependencyStack","waitingStores","getNewExecutionId","executionId","Recoil_selector","cachePolicy_UNSTABLE","cachePolicy","discoveredDependencyNodeKeys","valueMapper","getValueMapper","treeCache","getTreeCache","Recoil_treeCacheFromPolicy","retainedBy_UNSTABLE","executionInfoMap","liveStoresCount","selectorIsLive","getExecutionInfo","depValuesDiscoveredSoFarDuringAsyncWork","latestLoadable","latestExecutionId","stateVersion","selectorInit","selectorShouldDeleteConfigOnRelease","notifyStoreWhenAsyncSettles","stores","getCachedNodeLoadable","isKeyPointingToSelector","wrapPendingDependencyPromise","existingDeps","loadingDepsState","resolvedDep","clearExecutionInfo","loadingDepKey","loadingDepPromise","cachedLoadable","getValFromCacheAndUpdatedDownstreamDeps","setExecutionInfo","isLatestExecution","_executionInfo$latest","executionInfo","getExecutionInfoOfInProgressExecution","depValues","evaluateSelectorGetter","updateExecutionInfoDepValues","setCache","depValuesToDepRoute","setDepsInStore","setLoadableInStoreToNotifyDeps","maybeFreezeValue","notifyStoresOfSettledAsync","_store$getState","_store$getState$curre","_store$getState2","_store$getState2$next","_store$getState$nextT","_store$getState3","_store$getState3$next","endPerfBlock","resultIsError","depKey","newDepKey","setNewDepInStore","depLoadable","gateCallback","getCallback","errorOrPromise","wrapPendingPromise","finally","errorOrDepPromise","depsAfterCacheDone","cachedVal","valLoadable","_Array$from$find","execInfo","_executionInfo$depVal","_mapOfCheckedVersions","oldDepValues","cachedDepValuesCheckedForThisVersion","mapOfCheckedVersions","isCachedVersionSame","nodeVal","oldVal","haveAsyncDepsChanged","newExecutionId","cacheRoute","selectorPeek","selectorGet","inProgressExecutionInfo","newDepValues","depRoute","maybeSetCacheWithLoadable","getValFromRunningNewExecutionAndUpdatedDeps","getSelectorValAndUpdatedDeps","detectCircularDependencies","invalidateSelector","clearSelectorCache","_node$clearCache","clearCache","syncSelectorSetFinished","setRecoilState","setValue","dangerouslyAllowMutability","loadableWithError$2","loadableWithPromise$2","loadableWithValue$3","peekNodeInfo$3","DEFAULT_VALUE$7","DefaultValue$2","getConfigDeletionHandler$2","registerNode$2","setConfigDeletionHandler$1","isRecoilValue$4","getRecoilValueAsLoadable$4","markRecoilValueModified$2","setRecoilValue$4","setRecoilValueLoadable$3","retainedByOptionWithDefault$2","Recoil_atom","optionsDefault","restOptions","validator","storedValue","effects_UNSTABLE","sel","baseValue","atomWithFallback","cachedAnswerForUnvalidatedValue","defaultLoadable","cleanupEffectsByStore","_state$atomValues$get3","nonvalidatedValue","validatorResult","validatedValueLoadable","initState","alreadyKnown","notifyDefaultSubscribers","_store$getState$nextT3","initValue","pendingSetSelf","duringInit","retValue","getPromise","getInfo_UNSTABLE","_store$getState$nextT4","info","setSelf","currentValue","resetSelf","handler","currentStore","_currentTree$atomValu","_previousTree$atomVal","_pendingSetSelf","_pendingSetSelf2","_pendingSetSelf3","oldLoadable","_options$effects_UNST","_cleanupEffectsByStor","_store$getState$nextT5","frozenInitValue","initLoadable","wrappedPromise","_state$atomValues$get","_store$getState$nextT2","_state$atomValues$get2","_cleanupEffectsByStor2","baseAtom","Recoil_MapCache_1","Recoil_MapCache$1","MapCache","LRUCache$2","MapCache$1","defaultPolicy$1","Recoil_cacheFromPolicy","getValueMapper$1","getCache","setConfigDeletionHandler$2","setConfigDeletionHandler$3","nextIndex","Recoil_selectorFamily","_options$cachePolicyF","_options$cachePolicyF2","selectorCache","cachePolicyForParams_UNSTABLE","params","_stableStringify","cachedSelector","myKey","myGet","myCachePolicy","newSelector","constantSelector","throwingSelector","loadableWithError$3","loadableWithPromise$3","loadableWithValue$4","concurrentRequests","results","fill","exceptions","isError","exp","unwrapDependencies","dependencies","wrapResults","wrapLoadables","waitForNone","waitForAny","waitForAll","exceptionResults","syncResults","waitForAllSettled","noWait","dependency","Recoil_WaitFor","DefaultValue$3","RecoilRoot$2","isRecoilValue$5","retentionZone$1","freshSnapshot$2","useRecoilState$1","useRecoilStateLoadable$1","useRecoilValue$1","useRecoilValueLoadable$1","useResetRecoilState$1","useSetRecoilState$1","useSetUnvalidatedAtomValues$1","useGotoRecoilSnapshot$2","useRecoilSnapshot$1","useRecoilTransactionObserver$1","useTransactionObservation_DEPRECATED$1","noWait$1","waitForAll$1","waitForAllSettled$1","waitForAny$1","waitForNone$1","Recoil_index","useRecoilBridgeAcrossReactRoots_UNSTABLE","atomFamily","atomCache","cachedAtom","atomOptions","newAtom","selectorFamily","constSelector","errorSelector","readOnlySelector","useGetRecoilValueInfo_UNSTABLE","useRecoilRefresher_UNSTABLE","useRecoilCallback","gotoSnapshot","atomicUpdate","errMsg","transact_UNSTABLE","useRecoilTransaction_UNSTABLE","transactionInterface","useRecoilTransactionObserver_UNSTABLE","useTransactionObservation_UNSTABLE","useSetUnvalidatedAtomValues_UNSTABLE","snapshot_UNSTABLE","useRetain","Recoil_index_4","Recoil_index_6","Recoil_index_7","Recoil_index_9","Recoil_index_18","Recoil_index_20","Recoil_index_22","Recoil_index_23","_defineProperties","_assertThisInitialized","_setPrototypeOf","_getPrototypeOf","_arrayLikeToArray","arr2","_slicedToArray","_s","_e","_n","_d","minLen","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","consoleLogger","Logger","concreteLogger","logger","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","events","listener","cloned","observer","_cloned","res","rej","makeString","copy","t","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","_entityMap","isIE10","chars","ownKeys$1","_objectSpread$1","deepFind","keySeparator","paths","mix","joinedPath","ResourceStore","_EventEmitter","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","ns","defaultNS","ignoreJSONStructure","lng","silent","addNamespaces","resources","addResource","deep","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","handle","translator","processor","ownKeys$2","_objectSpread$2","checkedLoadedFor","Translator","_isNativeReflectConstruct$1","services","language","interpolation","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","_this2","overloadTranslationOptionHandler","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","utils","hasLoadedNamespace","code","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","nr","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","createRules","rules","numbers","plurals","PluralResolver","compatibilityJSON","Intl","PluralRules","_unused","rule","getRule","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","Interpolator","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","doReduce","ownKeys$4","_objectSpread$4","Formatter","formats","NumberFormat","currency","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split2","parseFormatStr","formatted","valOptions","formatParams","locale","ownKeys$5","_objectSpread$5","Connector","_isNativeReflectConstruct$2","backend","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","addResourceBundle","_getLastOfPath2","pushPath","what","fcName","tried","wait","read","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","preload","pluralSeparator","partialBundledLanguages","tDescription","transformOptions","ownKeys$6","_objectSpread$6","noop","bindMemberFunctions","inst","I18n","_isNativeReflectConstruct$3","external","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","changeLanguage","usedCallback","append","isLanguageChangingTo","setLngProps","resolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","keyPrefix","fixedT","resultKey","_this$translator","_this$translator2","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","createInstance","reloadResources","use","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","each","defaults","fieldContentRegExp","serializeCookie","maxAge","domain","expires","toUTCString","httpOnly","secure","sameSite","cookie$1","lookup","lookupCookie","nameEQ","ca","cookie","minutes","cookieOptions","setTime","getTime","cookieMinutes","cookieDomain","querystring","search","pos","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","testKey","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","pathname","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","Browser","detectors","i18nOptions","order","caches","excludeCacheFor","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","i18nInstance","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","ReportNamespaces","usedNamespaces","getI18n","initReactI18next","setDefaults","react","setI18n","de","translation","en","es","fr","it","ro","_console","alreadyWarned","warnOnce","i18n","initialized","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","retNotReady","ready","addUsedNamespaces","getT","nsMode","_useState","_useState2","setT","isMounted","boundReset","isInitial","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","status","nextCallback","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","_ref2","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","cancel","setNextCallback","active","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","childProps","excluded","sourceKeys","_objectWithoutPropertiesLoose","TransitionGroupContext","hasDocument","vendorEvents","hidden","isSupported","visibility","getHandlerArgs","sliceIterator","isSupportedLocal","Avatar","avatar","ExternalLink","xmlns","viewBox","width","height","LoadingIcon","WebviewContainer","webview","hideLoader","setHideLoader","action_id","title","url","onLoad","CloseIcon","stroke","strokeWidth","strokeLinecap","shapeRendering","WebviewModal","showModal","handleCloseModal","closeModal","receiveMessage","label","WebviewResponse","setShowModal","handleOpenModal","CHANNELS_HOST","BRAIN_AVATAR","TEST_INTEGRATION_ID","getConfig","sessionState","sessionIdSelector","session_id","expiredStateSelector","is_expired","forbiddenSessionSelector","is_reconnect_forbidden","contextState","userSelector","user","composeState","composeSelector","compose","author_avatar","chatEventsState","chatEventCountSelector","lastMessageReceivedSelector","messages","event_type","isResponseDisabledSelector","eventId","event_id","isTalkingToBrainSelector","response","author_type","widgetState","isWidgetOpenSelector","Audio","controls","nanoid","bytes","crypto","getRandomValues","Uint8Array","byte","SocketContext","SocketEvent","getWebUser","_a","browserInfo","browserName","deviceName","vendor","osName","locales","timezone","timeZone","platform","sleep","getTimestamp","KEYS","emailRegExp","useSocket","socket","setChatEvents","sendMessage","text","message_send","input","channel","chatEvent","author_name","display_name","author_id","user_id","created_at","currentState","sendCompose","volatile","message_compose","markMessagesAsRead","message_read","timestamp","read_at","updateContext","context_update","CarouselCard","card","onPostback","onWebviewClick","buttons","subtitle","default_action","defaultAction","hasDefaultAction","resolvedMedia","getButtonProps","button","isDefaultAction","rel","arrowIcon","strokeLinejoin","isMobile","innerWidth","Carousel","showWebview","setShowWebview","setWebview","currentSlide","setCurrentSlide","slidesPerView","slider","useKeenSlider","spacing","slideChanged","sl","details","relativeSlide","handlePostback","handleWebviewClose","handleWebviewClick","cards","Image","State","token","jr","jd","accepts","tt","tokenOrState","makeState","templateState","takeT","makeAcceptingState","makeT","startState","makeRegexT","_nextState","makeMultiT","makeBatchT","transitions","makeChainT","endState","defaultStateFactory","DOMAIN","LOCALHOST","TLD","NUM","PROTOCOL","MAILTO","WS","NL","OPENBRACE","OPENBRACKET","OPENANGLEBRACKET","OPENPAREN","CLOSEBRACE","CLOSEBRACKET","CLOSEANGLEBRACKET","CLOSEPAREN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","SEMI","SLASH","TILDE","UNDERSCORE","SYM","tlds","LETTER","EMOJI","EMOJI_VARIATION","DIGIT","SPACE","init$2","customProtocols","S_START","S_NUM","S_DOMAIN","S_DOMAIN_HYPHEN","S_WS","DOMAIN_REGEX_TRANSITIONS","makeDomainState","makeNearDomainState","S_PROTOCOL_FILE","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_MAILTO","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","S_CUSTOM_PROTOCOL","defaultProtocol","formatHref","nl2br","tagName","validate","truncate","ignoreTags","Options","ignoredTags","MultiToken","createTokenClass","Token","tokens","tk","extended","inherits","toHref","formattedHref","getObject","operator","optionValue","isLink","startIndex","endIndex","toObject","protocol","start","end","MailtoEmail","Email","Text","Nl","Url","hasProtocol","hasSlashSlash","multi","Base","init$1","S_PROTOCOL","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","qsAccepting","qsNonAccepting","localpartAccepting","parserCreateMultiToken","Multi","startIdx","endIdx","INIT","scanner","pluginQueue","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","stringToElements","cursor","multis","textTokens","secondState","multiLength","latestAccepting","sinceAccepts","subtokens","run","first","second","char","stringToArray","charCount","charCursor","tokenLength","charsSinceAccepts","run$1","tokenize","linkId","_opts$resolve","attr","linkifyReactElement","elementId","Linkify","phoneNumberRegex","_b","formatPhone","phoneIndex","findIndex","cell","hasPhone","handleOptionClick","Video","ResponseEvent","isDisabled","Check","DeliverInfo","time","setUTCSeconds","delivered_at","toLocaleTimeString","hour","minute","ChatEvent","EmptyIcon","fillRule","clipRule","rx","transform","cx","cy","filterUnits","colorInterpolationFilters","floodOpacity","dy","stdDeviation","in2","EmptyMessage","widgetConfigState","header_title","accent_color","background_color","icon_size","show_powered_by","window_size","welcome_message","welcome_trigger_message","widget_position","focus_trap","launcher","icon_url","theme","optional_fields","required_fields","disclaimer","welcome_screen","greeting","starters","backgroundColorSelector","headerTitleSelector","accentColorSelector","iconSizeSelector","windowSizeSelector","showPoweredBySelector","welcomeMessageSelector","welcomeTriggerMessageSelector","widgetPositionSelector","avatarSelector","themeSelector","launcherSelector","disclaimerSelector","optionalFieldsSelector","requiredFieldsSelector","focusTrapSelector","welcomeScreenSelector","Starter","handleStarterClick","onKeyUp","WelcomeGreeting","WelcomeWrapper","welcomeScreen","starter","ChatEvents","isVisible","_getHandlerArgs","initiallyVisible","setIsVisible","_getHandlerArgs3","currentlyVisible","chatEvents","lastMessageReceived","welcomeTriggerMessage","CloseMobileIcon","StatusDotIcon","connectionState","socketIdState","DotsThree","Reset","Dropdown","callbackFn","resetSessionState","resetChatEvents","icon","handleDropdownSelection","Header","widgetPosition","connectionStatus","showDropdown","setShowDropdown","handleMobileCloseButton","handleDropdownButton","TypingIndicator","SendMessageIcon","x1","y1","x2","y2","points","MessageInput","setInput","inputRef","isTyping","setIsTyping","debouncedInput","delay","debouncedValue","setDebouncedValue","useDebounce","isTalkingToBrain","disableInput","setDisableInput","isWidgetOpen","disableInputTimeout","timer","handleInputEvent","handleLimitInputChange","_c","selection","getSelection","createRange","removeAllRanges","selectNodeContents","collapse","addRange","breakTag","handleKeyUp","handleInputChange","placeholder","contentEditable","onInput","PoweredBy","ry","isCheckBoxInput","isDateObject","isNullOrUndefined","isObjectType","isObject","compact","isUndefined","VALIDATION_MODE","INPUT_VALIDATION_RULES","omit","isEmptyObject","convertToArrayPayload","isString","isFunction","objectHasFunction","appendErrors","validateAllFieldCriteria","types","isKey","stringToPath","tempPath","objValue","focusFieldBy","fields","fieldsNames","field","_f","isWatched","_names","isBlurEvent","watchAll","watch","watchName","startsWith","cloneObject","createSubject","_observers","unsubscribe","isPrimitive","deepEqual","object1","object2","keys1","keys2","val1","val2","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isBoolean","isFileInput","isHTMLElement","isMultipleSelect","isRadioInput","isWeb","live","unset","updatePath","childObject","baseGet","previousObjRef","objectRef","currentPaths","currentPathsLength","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","formValues","dirtyFieldsFromValues","getDirtyFields","defaultValues","defaultResult","isValid","validResult","getCheckboxValue","getFieldValueAs","valueAsNumber","valueAsDate","setValueAs","defaultReturn","getRadioValue","previous","getFieldValue","files","selectedOptions","isRegex","getRuleValue","schemaErrorLookup","_fields","fieldName","foundError","unsetEmptyArray","isMessage","getValidateError","getValueAndMessage","validationData","validateField","inputValue","shouldUseNativeValidation","required","maxLength","minLength","pattern","mount","setCustomValidity","reportValidity","isRadio","isCheckBox","isRadioOrCheckbox","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","reValidateMode","shouldFocusError","createFormControl","delayErrorCallback","_options","_formState","isDirty","isValidating","dirtyFields","isSubmitted","submitCount","touchedFields","isSubmitting","isSubmitSuccessful","_defaultValues","_formValues","shouldUnregister","_stateFlags","unMount","validateFields","_proxyFormState","_subjects","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","criteriaMode","_updateValid","shouldSkipRender","resolver","_executeSchema","executeBuildInValidation","updateErrors","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","isCurrentTouched","shouldRender","isFieldDirty","isPreviousFieldTouched","isPreviousFormDirty","_getDirty","isPreviousFieldDirty","getResolverOptions","shouldOnlyCheckValid","valid","fieldReference","fieldError","getValues","_getWatch","isGlobal","fieldValues","generateWatchOutput","selectRef","checkboxRef","radioRef","shouldDirty","shouldTouch","shouldValidate","setValues","fieldKey","isFieldArray","onChange","getEventValue","shouldSkipValidation","hasValidation","isTouched","skipValidation","watched","onBlur","fieldState","previousErrorLookupResult","errorLookupResult","previousFieldError","shouldUpdateValid","delayError","updatedFormState","shouldRenderByError","fieldNames","executeSchemaAndUpdateState","shouldFocus","unregister","keepValue","keepError","keepDirty","keepTouched","keepDefaultValue","keepIsValid","fieldRef","radioOrCheckbox","getNodeParentName","isNameInFieldArray","control","_removeUnmounted","_updateFieldArray","method","shouldSetValues","shouldSetFields","shouldSetError","argA","argB","_getFieldArray","handleSubmit","onValid","onInvalid","hasNoPromiseError","keepStateOptions","updatedValues","cloneUpdatedValues","keepDefaultValues","keepValues","closest","keepSubmitCount","keepIsSubmitted","keepErrors","resetField","clearErrors","inputName","setError","setFocus","Button","fullWidth","Checkbox","Input","WelcomeFields","onComplete","optionalFields","requiredFields","html","formState","_formControl","updateFormState","subject","tearDown","useSubscribe","formStateData","isRoot","shouldRenderFormState","localProxyFormState","createGetter","getProxyFormState","useForm","onSubmit","formData","registerOptions","autoComplete","disclaimer_accepted","__html","defaultStyle","transition","transitionStyles","entering","entered","exiting","exited","ThumbsDown","ThumbsUp","Survey","resetButton","survey","handleClickReset","ChatContainer","chats","setCompose","showWelcomeFields","setShowWelcomeFields","timerRef","bodyRef","chatEventCount","isExpired","isSessionForbidden","scrollTop","handleWelcomeFormComplete","containerStyles","BubbleIcon","CloseRounded","OpeningMessage","welcomeMessage","iconSize","setShow","handleClose","Launcher","setOpenChat","hasUnreadMessages","handleLauncherToggle","renderLauncher","Function","xdomain","pick","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","useNativeTimers","setTimeoutFn","clearTimeoutFn","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","Blob","withNativeArrayBuffer","ArrayBuffer","encodeBlobAsBase64","fileReader","FileReader","onload","readAsDataURL","supportsBinary","isView","buffer","decodeBase64Packet","binaryType","mapBinary","encodedPacket","SEPARATOR","fromCharCode","Transport","readyState","onError","msg","desc","description","doOpen","doClose","onClose","packets","write","onOpen","onData","packet","onPacket","Polling","polling","pause","onPause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","encodePayload","doWrite","schema","port","timestampRequests","timestampParam","sid","b64","encodedQuery","parseqs","hostname","hasXHR2","responseType","Request","xd","xscheme","xs","xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","withCredentials","requestTimeout","onreadystatechange","requestsCount","requests","onSuccess","fromError","abort","responseText","unloadHandler","nextTick","WebSocket","forceBase64","protocols","headers","ws","addEventListeners","onopen","autoUnref","_socket","unref","onclose","onmessage","ev","onerror","lastPacket","transports","websocket","isSSL","request","req","pollXhr","Socket","parseuri","writeBuffer","prevBufferLen","agent","upgrade","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","transport","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","setTransport","onDrain","probe","failed","onTransportOpen","upgrading","flush","freezeTransport","onTransportClose","onupgrade","to","onHandshake","resetPingTimeout","sendPacket","filterUpgrades","compress","cleanupAndClose","waitForUpgrade","reason","filteredUpgrades","withNativeFile","File","isBinary","hasBinary","deconstructPacket","buffers","packetData","_deconstructPacket","attachments","_placeholder","newData","reconstructPacket","_reconstructPacket","PacketType","Encoder","EVENT","ACK","encodeAsString","BINARY_EVENT","BINARY_ACK","encodeAsBinary","nsp","deconstruction","Decoder","decodeString","reconstructor","BinaryReconstructor","takeBinaryData","buf","payload","tryParse","isPayloadValid","static","CONNECT","DISCONNECT","CONNECT_ERROR","finishedReconstruction","reconPack","binData","RESERVED_EVENTS","connect","connect_error","disconnect","disconnecting","newListener","io","connected","disconnected","receiveBuffer","sendBuffer","ids","acks","flags","auth","_autoConnect","subEvents","onpacket","_readyState","ack","_registerAckCallback","isTransportWritable","_packet","onconnect","onevent","onack","ondisconnect","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","encoder","decoder","autoConnect","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","_reconnecting","reconnect","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_destroy","_close","onreconnect","attempt","parsed","loc","sameNamespace","forceNew","multiplex","userConfigState","integrationIdSelector","userConfig","integrationId","hostSelector","SERVER_OR_CLIENT_DISCONNECT","logError","useSocketSetup","mounted","delayingBrainResponse","setDelayingBrainResponse","queuedMessages","setQueuedMessages","syncSessionId","setSyncSessionId","sessionId","setConnectionState","setSessionState","setContextState","setSocketIdState","setComposeState","setSocket","onUnload","useUnload","member_leave","client","session_created","session","propertyIsEnumerable","__rest","session_expired","session_reconnect_forbidden","context_updated","message_received","message_delivered","agent_name","agent_avatar","agent_id","message_brain_received","thisArg","_arguments","generator","e_1","startTyping","responses","rootEvent","responses_1_1","responses_1","asyncIterator","__values","verb","settle","__asyncValues","resp","e_1_1","stopTyping","P","fulfilled","step","rejected","member_join","uMe","session_reconnect","session_create","PopupContainer","display","justifyContent","alignItems","inset","AppContainer","activeTrap","setActiveTrap","focusTrap","handleTrap","handleOnClose","setConfig","setUserConfig","accentColor","useTheme","widgetConfig","channelHost","fetch","ok","app","login","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","definition","toStringTag"],"sourceRoot":""}
|