{"version":3,"file":"static/js/main.1a24b735.js","mappings":"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,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,GAAa,EAAG,GAAI,IAAK,E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","sources":["../node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","../node_modules/@material-ui/core/esm/utils/capitalize.js","../node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/is-in-browser/dist/module.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/jss/dist/jss.esm.js","../node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","../node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","../node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","../node_modules/@material-ui/styles/esm/useTheme/useTheme.js","../node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","../node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","../node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","../node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","../node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","../node_modules/hyphenate-style-name/index.js","../node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","../node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","../node_modules/css-vendor/dist/css-vendor.esm.js","../node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","../node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","../node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","../node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","../node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","../node_modules/@material-ui/utils/esm/deepmerge.js","../node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","../node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","../node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","../node_modules/@material-ui/styles/esm/withStyles/withStyles.js","../node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","../node_modules/@material-ui/core/esm/styles/createBreakpoints.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@material-ui/core/esm/styles/createMixins.js","../node_modules/@material-ui/core/esm/colors/common.js","../node_modules/@material-ui/core/esm/colors/grey.js","../node_modules/@material-ui/core/esm/colors/indigo.js","../node_modules/@material-ui/core/esm/colors/pink.js","../node_modules/@material-ui/core/esm/colors/red.js","../node_modules/@material-ui/core/esm/colors/orange.js","../node_modules/@material-ui/core/esm/colors/blue.js","../node_modules/@material-ui/core/esm/colors/green.js","../node_modules/@material-ui/core/esm/styles/colorManipulator.js","../node_modules/@material-ui/core/esm/styles/createPalette.js","../node_modules/@material-ui/core/esm/styles/createTypography.js","../node_modules/@material-ui/core/esm/styles/shadows.js","../node_modules/@material-ui/core/esm/styles/shape.js","../node_modules/@material-ui/system/esm/breakpoints.js","../node_modules/@material-ui/system/esm/merge.js","../node_modules/@material-ui/system/esm/spacing.js","../node_modules/@material-ui/system/esm/memoize.js","../node_modules/@material-ui/core/esm/styles/transitions.js","../node_modules/@material-ui/core/esm/styles/zIndex.js","../node_modules/@material-ui/core/esm/styles/createTheme.js","../node_modules/@material-ui/core/esm/styles/createSpacing.js","../node_modules/@material-ui/core/esm/styles/defaultTheme.js","../node_modules/@material-ui/core/esm/styles/withStyles.js","../node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","../node_modules/@material-ui/core/esm/utils/createSvgIcon.js","../node_modules/@material-ui/core/esm/utils/debounce.js","../node_modules/@material-ui/core/esm/utils/deprecatedPropType.js","../node_modules/@material-ui/core/esm/utils/isMuiElement.js","../node_modules/@material-ui/core/esm/utils/ownerDocument.js","../node_modules/@material-ui/core/esm/utils/ownerWindow.js","../node_modules/@material-ui/core/esm/utils/requirePropFactory.js","../node_modules/@material-ui/core/esm/utils/setRef.js","../node_modules/@material-ui/core/esm/utils/unsupportedProp.js","../node_modules/@material-ui/core/esm/utils/useControlled.js","../node_modules/@material-ui/core/esm/utils/useEventCallback.js","../node_modules/@material-ui/core/esm/utils/useForkRef.js","../node_modules/@material-ui/core/esm/utils/unstable_useId.js","../node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","../node_modules/@material-ui/icons/Email.js","../node_modules/@material-ui/icons/Home.js","../node_modules/@material-ui/icons/LinkedIn.js","../node_modules/@material-ui/icons/Reorder.js","../node_modules/@material-ui/icons/School.js","../node_modules/@material-ui/icons/Work.js","../node_modules/@material-ui/icons/utils/createSvgIcon.js","../node_modules/classnames/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/src/observe.ts","../node_modules/src/InView.tsx","../node_modules/src/useInView.tsx","../node_modules/react-vertical-timeline-component/dist-es6/VerticalTimeline.js","../node_modules/react-vertical-timeline-component/dist-es6/VerticalTimelineElement.js","../node_modules/react-vertical-timeline-component/dist-es6/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../Typewriter/webpack/universalModuleDefinition","../Typewriter/src/utils/does-string-contain-html-tag.js","../Typewriter/src/utils/get-random-integer.js","../Typewriter/src/core/constants.js","../Typewriter/src/core/Typewriter.js","../Typewriter/src/utils/get-dom-element-from-string.js","../Typewriter/src/utils/add-styles.js","../Typewriter/node_modules/lodash/_DataView.js","../Typewriter/node_modules/lodash/_Hash.js","../Typewriter/node_modules/lodash/_ListCache.js","../Typewriter/node_modules/lodash/_Map.js","../Typewriter/node_modules/lodash/_MapCache.js","../Typewriter/node_modules/lodash/_Promise.js","../Typewriter/node_modules/lodash/_Set.js","../Typewriter/node_modules/lodash/_SetCache.js","../Typewriter/node_modules/lodash/_Stack.js","../Typewriter/node_modules/lodash/_Symbol.js","../Typewriter/node_modules/lodash/_Uint8Array.js","../Typewriter/node_modules/lodash/_WeakMap.js","../Typewriter/node_modules/lodash/_arrayFilter.js","../Typewriter/node_modules/lodash/_arrayLikeKeys.js","../Typewriter/node_modules/lodash/_arrayPush.js","../Typewriter/node_modules/lodash/_arraySome.js","../Typewriter/node_modules/lodash/_assocIndexOf.js","../Typewriter/node_modules/lodash/_baseGetAllKeys.js","../Typewriter/node_modules/lodash/_baseGetTag.js","../Typewriter/node_modules/lodash/_baseIsArguments.js","../Typewriter/node_modules/lodash/_baseIsEqual.js","../Typewriter/node_modules/lodash/_baseIsEqualDeep.js","../Typewriter/node_modules/lodash/_baseIsNative.js","../Typewriter/node_modules/lodash/_baseIsTypedArray.js","../Typewriter/node_modules/lodash/_baseKeys.js","../Typewriter/node_modules/lodash/_baseTimes.js","../Typewriter/node_modules/lodash/_baseUnary.js","../Typewriter/node_modules/lodash/_cacheHas.js","../Typewriter/node_modules/lodash/_coreJsData.js","../Typewriter/node_modules/lodash/_equalArrays.js","../Typewriter/node_modules/lodash/_equalByTag.js","../Typewriter/node_modules/lodash/_equalObjects.js","../Typewriter/node_modules/lodash/_freeGlobal.js","../Typewriter/node_modules/lodash/_getAllKeys.js","../Typewriter/node_modules/lodash/_getMapData.js","../Typewriter/node_modules/lodash/_getNative.js","../Typewriter/node_modules/lodash/_getRawTag.js","../Typewriter/node_modules/lodash/_getSymbols.js","../Typewriter/node_modules/lodash/_getTag.js","../Typewriter/node_modules/lodash/_getValue.js","../Typewriter/node_modules/lodash/_hashClear.js","../Typewriter/node_modules/lodash/_hashDelete.js","../Typewriter/node_modules/lodash/_hashGet.js","../Typewriter/node_modules/lodash/_hashHas.js","../Typewriter/node_modules/lodash/_hashSet.js","../Typewriter/node_modules/lodash/_isIndex.js","../Typewriter/node_modules/lodash/_isKeyable.js","../Typewriter/node_modules/lodash/_isMasked.js","../Typewriter/node_modules/lodash/_isPrototype.js","../Typewriter/node_modules/lodash/_listCacheClear.js","../Typewriter/node_modules/lodash/_listCacheDelete.js","../Typewriter/node_modules/lodash/_listCacheGet.js","../Typewriter/node_modules/lodash/_listCacheHas.js","../Typewriter/node_modules/lodash/_listCacheSet.js","../Typewriter/node_modules/lodash/_mapCacheClear.js","../Typewriter/node_modules/lodash/_mapCacheDelete.js","../Typewriter/node_modules/lodash/_mapCacheGet.js","../Typewriter/node_modules/lodash/_mapCacheHas.js","../Typewriter/node_modules/lodash/_mapCacheSet.js","../Typewriter/node_modules/lodash/_mapToArray.js","../Typewriter/node_modules/lodash/_nativeCreate.js","../Typewriter/node_modules/lodash/_nativeKeys.js","../Typewriter/node_modules/lodash/_nodeUtil.js","../Typewriter/node_modules/lodash/_objectToString.js","../Typewriter/node_modules/lodash/_overArg.js","../Typewriter/node_modules/lodash/_root.js","../Typewriter/node_modules/lodash/_setCacheAdd.js","../Typewriter/node_modules/lodash/_setCacheHas.js","../Typewriter/node_modules/lodash/_setToArray.js","../Typewriter/node_modules/lodash/_stackClear.js","../Typewriter/node_modules/lodash/_stackDelete.js","../Typewriter/node_modules/lodash/_stackGet.js","../Typewriter/node_modules/lodash/_stackHas.js","../Typewriter/node_modules/lodash/_stackSet.js","../Typewriter/node_modules/lodash/_toSource.js","../Typewriter/node_modules/lodash/eq.js","../Typewriter/node_modules/lodash/isArguments.js","../Typewriter/node_modules/lodash/isArray.js","../Typewriter/node_modules/lodash/isArrayLike.js","../Typewriter/node_modules/lodash/isBuffer.js","../Typewriter/node_modules/lodash/isEqual.js","../Typewriter/node_modules/lodash/isFunction.js","../Typewriter/node_modules/lodash/isLength.js","../Typewriter/node_modules/lodash/isObject.js","../Typewriter/node_modules/lodash/isObjectLike.js","../Typewriter/node_modules/lodash/isTypedArray.js","../Typewriter/node_modules/lodash/keys.js","../Typewriter/node_modules/lodash/stubArray.js","../Typewriter/node_modules/lodash/stubFalse.js","../Typewriter/node_modules/performance-now/lib/performance-now.js","../Typewriter/node_modules/raf/index.js","../Typewriter/external umd \"react\"","../Typewriter/webpack/bootstrap","../Typewriter/webpack/runtime/compat get default export","../Typewriter/webpack/runtime/define property getters","../Typewriter/webpack/runtime/global","../Typewriter/webpack/runtime/hasOwnProperty shorthand","../Typewriter/webpack/runtime/node module decorator","../Typewriter/src/react/Typewriter.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","pages/Home.js","pages/AboutMe.js","pages/Experience.js","pages/Photography.js","pages/RedHat.js","components/Navbar.js","pages/GEAerospace.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://mui.com/production-error/?code=' + code;\n\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","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 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 return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\n\nvar toCssValue = function toCssValue(value) {\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n\n if (value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n\n return cssValue;\n};\n\nfunction getWhitespaceSymbols(options) {\n if (options && options.format === false) {\n return {\n linebreak: '',\n space: ''\n };\n }\n\n return {\n linebreak: '\\n',\n space: ' '\n };\n}\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\nfunction indentStr(str, indent) {\n var result = '';\n\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n\n if (options.format === false) {\n indent = -Infinity;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak,\n space = _getWhitespaceSymbols.space;\n\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n\n for (var prop in fallback) {\n var value = fallback[prop];\n\n if (value != null) {\n if (result) result += linebreak;\n result += indentStr(prop + \":\" + space + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n\n if (_value != null) {\n if (result) result += linebreak;\n result += indentStr(_prop + \":\" + space + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += linebreak;\n result += indentStr(_prop2 + \":\" + space + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\" + linebreak + result + linebreak;\n return indentStr(\"\" + selector + space + \"{\" + result, indent) + indentStr('}', indent);\n}\n\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = (function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n});\n\nvar BaseStyleRule =\n/*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.isProcessed = false;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n\n var _proto = BaseStyleRule.prototype;\n\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n\n var isEmpty = newValue == null || newValue === false;\n var isDefined = name in this.style; // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n\n var sheet = this.options.sheet;\n\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n\n return this;\n };\n\n return BaseStyleRule;\n}();\nvar StyleRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n\n function StyleRule(key, style, options) {\n var _this;\n\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n\n if (renderer) {\n var json = this.toJSON();\n\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */\n ;\n\n _proto2.toJSON = function toJSON() {\n var json = {};\n\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n\n return json;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */\n ,\n get: function get() {\n return this.selectorText;\n }\n }]);\n\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (key[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n\n return new StyleRule(key, style, options);\n }\n};\n\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule =\n/*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.isProcessed = false;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = ConditionalRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n\n if (options.children === false) {\n return this.query + \" {}\";\n }\n\n var children = this.rules.toString(options);\n return children ? this.query + \" {\" + linebreak + children + linebreak + \"}\" : '';\n };\n\n return ConditionalRule;\n}();\nvar keyRegExp = /@container|@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\n\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule =\n/*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.isProcessed = false;\n var nameMatch = key.match(nameRegExp);\n\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = KeyframesRule.prototype;\n\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n\n var children = this.rules.toString(options);\n if (children) children = \"\" + linebreak + children + linebreak;\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\n\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\n\nvar pluginKeyframesRule = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n\n if (!sheet) {\n return val;\n }\n\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n\n default:\n return val;\n }\n }\n};\n\nvar KeyframeRule =\n/*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n\n function KeyframeRule() {\n return _BaseStyleRule.apply(this, arguments) || this;\n }\n\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n\n return null;\n }\n};\n\nvar FontFaceRule =\n/*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = FontFaceRule.prototype;\n\n _proto.toString = function toString(options) {\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n if (Array.isArray(this.style)) {\n var str = '';\n\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += linebreak;\n }\n\n return str;\n }\n\n return toCss(this.at, this.style, options);\n };\n\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\n\nvar ViewportRule =\n/*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n\n var _proto = ViewportRule.prototype;\n\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\n\nvar SimpleRule =\n/*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.isProcessed = false;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n\n var _proto = SimpleRule.prototype;\n\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n\n return str;\n }\n\n return this.key + \" \" + this.value + \";\";\n };\n\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\n\nvar plugins = [pluginStyleRule, pluginConditionalRule, pluginKeyframesRule, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\n\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n\n};\n\nvar RuleList =\n/*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n\n var _proto = RuleList.prototype;\n\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n\n var key = name;\n\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n\n this.raw[key] = decl;\n\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Replace rule.\n * Create a new rule and remove old one instead of overwriting\n * because we want to invoke onCreateRule hook to make plugins work.\n */\n ;\n\n _proto.replace = function replace(name, decl, ruleOptions) {\n var oldRule = this.get(name);\n var oldIndex = this.index.indexOf(oldRule);\n\n if (oldRule) {\n this.remove(oldRule);\n }\n\n var options = ruleOptions;\n if (oldIndex !== -1) options = _extends({}, ruleOptions, {\n index: oldIndex\n });\n return this.add(name, decl, options);\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.get = function get(nameOrSelector) {\n return this.map[nameOrSelector];\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */\n ;\n\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */\n ;\n\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */\n ;\n\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var name;\n var data;\n var options;\n\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0];\n data = arguments.length <= 1 ? undefined : arguments[1];\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0];\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n\n if (name) {\n this.updateOne(this.get(name), data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n\n var style = rule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== rule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(rule.style, rule, sheet); // Update and add props.\n\n for (var prop in rule.style) {\n var nextValue = rule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n rule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n\n for (var _prop in style) {\n var _nextValue = rule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n rule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += linebreak;\n str += css;\n }\n\n return str;\n };\n\n return RuleList;\n}();\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n\n this.rules = new RuleList(this.options);\n\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n\n var _proto = StyleSheet.prototype;\n\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */\n ;\n\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return rule;\n }\n /**\n * Replace a rule in the current stylesheet.\n */\n ;\n\n _proto.replaceRule = function replaceRule(nameOrSelector, decl, options) {\n var oldRule = this.rules.get(nameOrSelector);\n if (!oldRule) return this.addRule(nameOrSelector, decl, options);\n var newRule = this.rules.replace(nameOrSelector, decl, options);\n\n if (newRule) {\n this.options.jss.plugins.onProcessRule(newRule);\n }\n\n if (this.attached) {\n if (!this.deployed) return newRule; // Don't replace / delete rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (this.renderer) {\n if (!newRule) {\n this.renderer.deleteRule(oldRule);\n } else if (oldRule.renderable) {\n this.renderer.replaceRule(oldRule.renderable, newRule);\n }\n }\n\n return newRule;\n } // We can't replace rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n\n this.deployed = false;\n return newRule;\n }\n /**\n * Insert rule into the StyleSheet\n */\n ;\n\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */\n ;\n\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n\n return added;\n }\n /**\n * Get a rule by name or selector.\n */\n ;\n\n _proto.getRule = function getRule(nameOrSelector) {\n return this.rules.get(nameOrSelector);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */\n ;\n\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n\n if (!rule || // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n\n this.rules.remove(rule);\n\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n\n return true;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */\n ;\n\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */\n ;\n\n _proto.update = function update() {\n var _this$rules;\n\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n\n return this;\n }\n /**\n * Updates a single rule.\n */\n ;\n\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return StyleSheet;\n}();\n\nvar PluginsRegistry =\n/*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = {};\n }\n\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */\n ;\n\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */\n ;\n\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */\n ;\n\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */\n ;\n\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */\n ;\n\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n\n return processedValue;\n }\n /**\n * Register a plugin.\n */\n ;\n\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access all instances in one place.\n */\n\nvar SheetsRegistry =\n/*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */\n ;\n\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */\n ;\n\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */\n ;\n\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n\n var css = '';\n\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n\n if (css) css += linebreak;\n css += sheet.toString(options);\n }\n\n return css;\n };\n\n _createClass(SheetsRegistry, [{\n key: \"index\",\n\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar sheets = new SheetsRegistry();\n\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\n\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\n\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n\n var ruleCounter = 0;\n\n var generateId = function generateId(rule, sheet) {\n ruleCounter += 1;\n\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n\n var jssId = '';\n var prefix = '';\n\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n\n return generateId;\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\n\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n/**\n * Set a style property.\n */\n\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n\n if (Array.isArray(value)) {\n cssValue = toCssValue(value);\n } // Support CSSTOM.\n\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n var indexOfImportantFlag = cssValue ? cssValue.indexOf('!important') : -1;\n var cssValueWithoutImportantFlag = indexOfImportantFlag > -1 ? cssValue.substr(0, indexOfImportantFlag - 1) : cssValue;\n cssRule.style.setProperty(prop, cssValueWithoutImportantFlag, indexOfImportantFlag > -1 ? 'important' : '');\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n\n return true;\n};\n/**\n * Remove a style property.\n */\n\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n/**\n * Set the selector.\n */\n\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\n\nfunction findCommentNode(text) {\n var head = getHead();\n\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n\n return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\n\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n\n sheet = findHighestSheet(registry, options);\n\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n\n var insertionPoint = options.insertionPoint;\n\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\n\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n container.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n container.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n\n return container.cssRules[index];\n};\n\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n\n return index;\n};\n\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\n\nvar DomRenderer =\n/*#__PURE__*/\nfunction () {\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n\n var _proto = DomRenderer.prototype;\n\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */\n ;\n\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */\n ;\n\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */\n ;\n\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */\n ;\n\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n\n if (latestNativeParent === false) {\n return false;\n }\n\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n\n if (nativeRule === false) {\n return false;\n }\n\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules.splice(index, 0, cssRule);\n }\n }\n /**\n * Delete a rule.\n */\n ;\n\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */\n ;\n\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n */\n ;\n\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */\n ;\n\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n\n return DomRenderer;\n}();\n\nvar instanceCounter = 0;\n\nvar Jss =\n/*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.10.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n\n var _proto = Jss.prototype;\n\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */\n ;\n\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n index = _options.index;\n\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */\n ;\n\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */\n ;\n\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n return this.createRule(undefined, name, style);\n }\n\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n\n var rule = createRule(name, style, ruleOptions);\n\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */\n ;\n\n _proto.use = function use() {\n var _this = this;\n\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n\n return Jss;\n}();\n\nvar createJss = function createJss(options) {\n return new Jss(options);\n};\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n * Used in react-jss.\n */\n\nvar SheetsManager =\n/*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n\n var _proto = SheetsManager.prototype;\n\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n\n entry.refs++;\n return entry.sheet;\n }\n\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n\n return SheetsManager;\n}();\n\n/**\n* Export a constant indicating if this browser has CSSTOM support.\n* https://developers.google.com/web/updates/2018/03/cssom\n*/\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n\n return to;\n}\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\nvar index = createJss();\n\nexport default index;\nexport { RuleList, SheetsManager, SheetsRegistry, createJss as create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, sheets, toCssValue };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getDisplayName } from '@material-ui/utils';\nexport default function mergeClasses() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var baseClasses = options.baseClasses,\n newClasses = options.newClasses,\n Component = options.Component;\n\n if (!newClasses) {\n return baseClasses;\n }\n\n var nextClasses = _extends({}, baseClasses);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof newClasses === 'string') {\n console.error([\"Material-UI: The value `\".concat(newClasses, \"` \") + \"provided to the classes prop of \".concat(getDisplayName(Component), \" is incorrect.\"), 'You might want to use the className prop instead.'].join('\\n'));\n return baseClasses;\n }\n }\n\n Object.keys(newClasses).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!baseClasses[key] && newClasses[key]) {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not implemented in \".concat(getDisplayName(Component), \".\"), \"You can only override one of the following: \".concat(Object.keys(baseClasses).join(','), \".\")].join('\\n'));\n }\n\n if (newClasses[key] && typeof newClasses[key] !== 'string') {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not valid for \".concat(getDisplayName(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(newClasses[key], \".\")].join('\\n'));\n }\n }\n\n if (newClasses[key]) {\n nextClasses[key] = \"\".concat(baseClasses[key], \" \").concat(newClasses[key]);\n }\n });\n return nextClasses;\n}","// Used https://github.com/thinkloop/multi-key-cache as inspiration\nvar multiKeyStore = {\n set: function set(cache, key1, key2, value) {\n var subCache = cache.get(key1);\n\n if (!subCache) {\n subCache = new Map();\n cache.set(key1, subCache);\n }\n\n subCache.set(key2, value);\n },\n get: function get(cache, key1, key2) {\n var subCache = cache.get(key1);\n return subCache ? subCache.get(key2) : undefined;\n },\n delete: function _delete(cache, key1, key2) {\n var subCache = cache.get(key1);\n subCache.delete(key2);\n }\n};\nexport default multiKeyStore;","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import nested from '../ThemeProvider/nested';\n/**\n * This is the list of the style rule name we use as drop in replacement for the built-in\n * pseudo classes (:checked, :disabled, :focused, etc.).\n *\n * Why do they exist in the first place?\n * These classes are used at a specificity of 2.\n * It allows them to override previously definied styles as well as\n * being untouched by simple user overrides.\n */\n\nvar pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nexport default function createGenerateClassName() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$disableGloba = options.disableGlobal,\n disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,\n _options$productionPr = options.productionPrefix,\n productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,\n _options$seed = options.seed,\n seed = _options$seed === void 0 ? '' : _options$seed;\n var seedPrefix = seed === '' ? '' : \"\".concat(seed, \"-\");\n var ruleCounter = 0;\n\n var getNextCounterId = function getNextCounterId() {\n ruleCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (ruleCounter >= 1e10) {\n console.warn(['Material-UI: You might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));\n }\n }\n\n return ruleCounter;\n };\n\n return function (rule, styleSheet) {\n var name = styleSheet.options.name; // Is a global static MUI style?\n\n if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {\n // We can use a shorthand class name, we never use the keys to style the components.\n if (pseudoClasses.indexOf(rule.key) !== -1) {\n return \"Mui-\".concat(rule.key);\n }\n\n var prefix = \"\".concat(seedPrefix).concat(name, \"-\").concat(rule.key);\n\n if (!styleSheet.options.theme[nested] || seed !== '') {\n return prefix;\n }\n\n return \"\".concat(prefix, \"-\").concat(getNextCounterId());\n }\n\n if (process.env.NODE_ENV === 'production') {\n return \"\".concat(seedPrefix).concat(productionPrefix).concat(getNextCounterId());\n }\n\n var suffix = \"\".concat(rule.key, \"-\").concat(getNextCounterId()); // Help with debuggability.\n\n if (styleSheet.options.classNamePrefix) {\n return \"\".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, \"-\").concat(suffix);\n }\n\n return \"\".concat(seedPrefix).concat(suffix);\n };\n}","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\n\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\n\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n }\n\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule;\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n }\n\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\n\nexport default functionPlugin;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\n\nvar at = '@global';\nvar atPrefix = '@global ';\n\nvar GlobalContainerRule =\n/*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n\n var _proto = GlobalContainerRule.prototype;\n\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */\n ;\n\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */\n ;\n\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Get index of a rule.\n */\n ;\n\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */\n ;\n\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n\n return GlobalContainerRule;\n}();\n\nvar GlobalPrefixedRule =\n/*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n\n var _proto2 = GlobalPrefixedRule.prototype;\n\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n\n return GlobalPrefixedRule;\n}();\n\nvar separatorRegExp = /\\s*,\\s*/g;\n\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n\n return scoped;\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n\n delete style[at];\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n\n var parent = options.parent;\n\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n\n if (!options.selector && options.scoped === false) {\n options.selector = name;\n }\n\n return null;\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\n\nexport default jssGlobal;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\n\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n\n if (rule) {\n return rule.selector;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n\n return result;\n }\n\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n\n });\n\n delete options.name;\n return options;\n }\n\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n var name = styleRule.key + \"-\" + prop;\n\n if ('replaceRule' in container) {\n // for backward compatibility\n container.replaceRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else {\n container.addRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n }\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options).addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n\n delete style[prop];\n }\n\n return style;\n }\n\n return {\n onProcessStyle: onProcessStyle\n };\n}\n\nexport default jssNested;\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n */\n\nfunction convertCase(style) {\n var converted = {};\n\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n */\n\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n\n return style;\n }\n\n return convertCase(style);\n }\n\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default camelCase;\n","import { hasCSSTOMSupport } from 'jss';\n\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\n\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n\n var newObj = {};\n\n for (var key in obj) {\n newObj[key] = obj[key];\n newObj[key.replace(regExp, replace)] = obj[key];\n }\n\n return newObj;\n}\n\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n } // eslint-disable-next-line no-restricted-globals\n\n } else if (typeof value === 'number' && isNaN(value) === false) {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n\n return value.toString();\n }\n\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n\n var camelCasedOptions = addCamelCasedVersion(options);\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n\n return style;\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default defaultUnit;\n","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\n\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n\n if (camelize(longhand) in style) {\n return prop;\n }\n\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n\n if (options.transform) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n\n if (options.transition) {\n return prop;\n }\n\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n\n return _jsProp in style ? \"page-\" + prop : false;\n }\n\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\n\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n\n return prop;\n }\n};\n\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\n\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n\n if (!multiple) return false;\n\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n\n return newProp.map(prefixCss);\n }\n\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\n\nvar el;\nvar cache = {};\n\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n\n return cache[prop];\n}\n\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\n\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\n\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };\n","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n\n return style;\n }\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\n\nexport default jssVendorPrefixer;\n","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n\n return prop0.length - prop1.length;\n };\n\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n\n return newStyle;\n }\n };\n}\n\nexport default jssPropsSort;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = React.createContext(defaultOptions);\n\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\n\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n\n var outerOptions = React.useContext(StylesContext);\n\n var context = _extends({}, outerOptions, {\n disableGeneration: disableGeneration\n }, localOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: You cannot use a custom insertionPoint and at the same time.');\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n\n return /*#__PURE__*/React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override Material-UI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","import functions from 'jss-plugin-rule-value-function';\nimport global from 'jss-plugin-global';\nimport nested from 'jss-plugin-nested';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort'; // Subset of jss-preset-default with only the plugins the Material-UI components are using.\n\nexport default function jssPreset() {\n return {\n plugins: [functions(), global(), nested(), camelCase(), defaultUnit(), // Disable the vendor prefixer server-side, it does nothing.\n // This way, we can get a performance boost.\n // In the documentation, we are using `autoprefixer` to solve this problem.\n typeof window === 'undefined' ? null : vendorPrefixer(), propsSort()]\n };\n}","/* eslint-disable import/prefer-default-export */\n// Global index counter to preserve source order.\n// We create the style sheet during the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any child's styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\nvar indexCounter = -1e9;\nexport function increment() {\n indexCounter += 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (indexCounter >= 0) {\n console.warn(['Material-UI: You might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join('\\n'));\n }\n }\n\n return indexCounter;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","// We use the same empty object to ref count the styles that don't need a theme object.\nvar noopTheme = {};\nexport default noopTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getDynamicStyles } from 'jss';\nimport mergeClasses from '../mergeClasses';\nimport multiKeyStore from './multiKeyStore';\nimport useTheme from '../useTheme';\nimport { StylesContext } from '../StylesProvider';\nimport { increment } from './indexCounter';\nimport getStylesCreator from '../getStylesCreator';\nimport noopTheme from '../getStylesCreator/noopTheme';\n\nfunction getClasses(_ref, classes, Component) {\n var state = _ref.state,\n stylesOptions = _ref.stylesOptions;\n\n if (stylesOptions.disableGeneration) {\n return classes || {};\n }\n\n if (!state.cacheClasses) {\n state.cacheClasses = {\n // Cache for the finalized classes value.\n value: null,\n // Cache for the last used classes prop pointer.\n lastProp: null,\n // Cache for the last used rendered classes pointer.\n lastJSS: {}\n };\n } // Tracks if either the rendered classes or classes prop has changed,\n // requiring the generation of a new finalized classes object.\n\n\n var generate = false;\n\n if (state.classes !== state.cacheClasses.lastJSS) {\n state.cacheClasses.lastJSS = state.classes;\n generate = true;\n }\n\n if (classes !== state.cacheClasses.lastProp) {\n state.cacheClasses.lastProp = classes;\n generate = true;\n }\n\n if (generate) {\n state.cacheClasses.value = mergeClasses({\n baseClasses: state.cacheClasses.lastJSS,\n newClasses: classes,\n Component: Component\n });\n }\n\n return state.cacheClasses.value;\n}\n\nfunction attach(_ref2, props) {\n var state = _ref2.state,\n theme = _ref2.theme,\n stylesOptions = _ref2.stylesOptions,\n stylesCreator = _ref2.stylesCreator,\n name = _ref2.name;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n\n if (!sheetManager) {\n sheetManager = {\n refs: 0,\n staticSheet: null,\n dynamicStyles: null\n };\n multiKeyStore.set(stylesOptions.sheetsManager, stylesCreator, theme, sheetManager);\n }\n\n var options = _extends({}, stylesCreator.options, stylesOptions, {\n theme: theme,\n flip: typeof stylesOptions.flip === 'boolean' ? stylesOptions.flip : theme.direction === 'rtl'\n });\n\n options.generateId = options.serverGenerateClassName || options.generateClassName;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n var staticSheet;\n\n if (stylesOptions.sheetsCache) {\n staticSheet = multiKeyStore.get(stylesOptions.sheetsCache, stylesCreator, theme);\n }\n\n var styles = stylesCreator.create(theme, name);\n\n if (!staticSheet) {\n staticSheet = stylesOptions.jss.createStyleSheet(styles, _extends({\n link: false\n }, options));\n staticSheet.attach();\n\n if (stylesOptions.sheetsCache) {\n multiKeyStore.set(stylesOptions.sheetsCache, stylesCreator, theme, staticSheet);\n }\n }\n\n if (sheetsRegistry) {\n sheetsRegistry.add(staticSheet);\n }\n\n sheetManager.staticSheet = staticSheet;\n sheetManager.dynamicStyles = getDynamicStyles(styles);\n }\n\n if (sheetManager.dynamicStyles) {\n var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({\n link: true\n }, options));\n dynamicSheet.update(props);\n dynamicSheet.attach();\n state.dynamicSheet = dynamicSheet;\n state.classes = mergeClasses({\n baseClasses: sheetManager.staticSheet.classes,\n newClasses: dynamicSheet.classes\n });\n\n if (sheetsRegistry) {\n sheetsRegistry.add(dynamicSheet);\n }\n } else {\n state.classes = sheetManager.staticSheet.classes;\n }\n\n sheetManager.refs += 1;\n}\n\nfunction update(_ref3, props) {\n var state = _ref3.state;\n\n if (state.dynamicSheet) {\n state.dynamicSheet.update(props);\n }\n}\n\nfunction detach(_ref4) {\n var state = _ref4.state,\n theme = _ref4.theme,\n stylesOptions = _ref4.stylesOptions,\n stylesCreator = _ref4.stylesCreator;\n\n if (stylesOptions.disableGeneration) {\n return;\n }\n\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n sheetManager.refs -= 1;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n\n if (sheetManager.refs === 0) {\n multiKeyStore.delete(stylesOptions.sheetsManager, stylesCreator, theme);\n stylesOptions.jss.removeStyleSheet(sheetManager.staticSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(sheetManager.staticSheet);\n }\n }\n\n if (state.dynamicSheet) {\n stylesOptions.jss.removeStyleSheet(state.dynamicSheet);\n\n if (sheetsRegistry) {\n sheetsRegistry.remove(state.dynamicSheet);\n }\n }\n}\n\nfunction useSynchronousEffect(func, values) {\n var key = React.useRef([]);\n var output; // Store \"generation\" key. Just returns a new object every time\n\n var currentKey = React.useMemo(function () {\n return {};\n }, values); // eslint-disable-line react-hooks/exhaustive-deps\n // \"the first render\", or \"memo dropped the value\"\n\n if (key.current !== currentKey) {\n key.current = currentKey;\n output = func();\n }\n\n React.useEffect(function () {\n return function () {\n if (output) {\n output();\n }\n };\n }, [currentKey] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\n\nexport default function makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var name = options.name,\n classNamePrefixOption = options.classNamePrefix,\n Component = options.Component,\n _options$defaultTheme = options.defaultTheme,\n defaultTheme = _options$defaultTheme === void 0 ? noopTheme : _options$defaultTheme,\n stylesOptions2 = _objectWithoutProperties(options, [\"name\", \"classNamePrefix\", \"Component\", \"defaultTheme\"]);\n\n var stylesCreator = getStylesCreator(stylesOrCreator);\n var classNamePrefix = name || classNamePrefixOption || 'makeStyles';\n stylesCreator.options = {\n index: increment(),\n name: name,\n meta: classNamePrefix,\n classNamePrefix: classNamePrefix\n };\n\n var useStyles = function useStyles() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var theme = useTheme() || defaultTheme;\n\n var stylesOptions = _extends({}, React.useContext(StylesContext), stylesOptions2);\n\n var instance = React.useRef();\n var shouldUpdate = React.useRef();\n useSynchronousEffect(function () {\n var current = {\n name: name,\n state: {},\n stylesCreator: stylesCreator,\n stylesOptions: stylesOptions,\n theme: theme\n };\n attach(current, props);\n shouldUpdate.current = false;\n instance.current = current;\n return function () {\n detach(current);\n };\n }, [theme, stylesCreator]);\n React.useEffect(function () {\n if (shouldUpdate.current) {\n update(instance.current, props);\n }\n\n shouldUpdate.current = true;\n });\n var classes = getClasses(instance.current, props.classes, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(classes);\n }\n\n return classes;\n };\n\n return useStyles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { deepmerge } from '@material-ui/utils';\nimport noopTheme from './noopTheme';\nexport default function getStylesCreator(stylesOrCreator) {\n var themingEnabled = typeof stylesOrCreator === 'function';\n\n if (process.env.NODE_ENV !== 'production') {\n if (_typeof(stylesOrCreator) !== 'object' && !themingEnabled) {\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\\n'));\n }\n }\n\n return {\n create: function create(theme, name) {\n var styles;\n\n try {\n styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n if (themingEnabled === true && theme === noopTheme) {\n // TODO: prepend error message/name instead\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n\n throw err;\n }\n\n if (!name || !theme.overrides || !theme.overrides[name]) {\n return styles;\n }\n\n var overrides = theme.overrides[name];\n\n var stylesWithOverrides = _extends({}, styles);\n\n Object.keys(overrides).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!stylesWithOverrides[key]) {\n console.warn(['Material-UI: You are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n'));\n }\n }\n\n stylesWithOverrides[key] = deepmerge(stylesWithOverrides[key], overrides[key]);\n });\n return stylesWithOverrides;\n },\n options: {}\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n\n var classNamePrefix = name;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = /*#__PURE__*/React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n\n var classes = useStyles(_extends({}, Component.defaultProps, props));\n var theme;\n var more = other;\n\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? WithStyles.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n\n return null; // return new Error(\n // 'Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' +\n // 'Refs are now automatically forwarded to the inner component.',\n // );\n })\n } : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n\n hoistNonReactStatics(WithStyles, Component);\n\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n\n return WithStyles;\n };\n};\n\nexport default withStyles;","/* eslint-disable no-restricted-syntax */\nexport default function getThemeProps(params) {\n var theme = params.theme,\n name = params.name,\n props = params.props;\n\n if (!theme || !theme.props || !theme.props[name]) {\n return props;\n } // Resolve default props, code borrow from React source.\n // https://github.com/facebook/react/blob/15a8f031838a553e41c0b66eb1bcf1da8448104d/packages/react/src/ReactElement.js#L221\n\n\n var defaultProps = theme.props[name];\n var propName;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n\n return props;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n var warnedOnce = false;\n\n function width(key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.warn([\"Material-UI: The `theme.breakpoints.width` utility is deprecated because it's redundant.\", 'Use the `theme.breakpoints.values` instead.'].join('\\n'));\n }\n }\n\n return values[key];\n }\n\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn(['Material-UI: theme.mixins.gutters() is deprecated.', 'You can use the source of the mixin directly:', \"\\n paddingLeft: theme.spacing(2),\\n paddingRight: theme.spacing(2),\\n [theme.breakpoints.up('sm')]: {\\n paddingLeft: theme.spacing(3),\\n paddingRight: theme.spacing(3),\\n },\\n \"].join('\\n'));\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nvar warnedOnce = false;\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n *\n * @deprecated\n * Use `import { alpha } from '@material-ui/core/styles'` instead.\n */\n\nexport function fade(color, value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: The `fade` color utility was renamed to `alpha` to better describe its functionality.', '', \"You should use `import { alpha } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return alpha(color, value);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha value is overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0-1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\n\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n\n function getContrastText(background) {\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : _formatMuiErrorMessage(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar warnedOnce = false;\n\nfunction roundWithDeprecationWarning(value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['Material-UI: The `theme.typography.round` helper is deprecated.', 'Head to https://mui.com/r/migration-v4/#theme for a migration path.'].join('\\n'));\n warnedOnce = true;\n }\n }\n\n return round(value);\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: roundWithDeprecationWarning,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\n\nfunction createTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\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 muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://mui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nvar warnedOnce = false;\nexport function createMuiTheme() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme.apply(void 0, arguments);\n}\nexport default createTheme;","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;\n\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","import createTheme from './createTheme';\nvar defaultTheme = createTheme();\nexport default defaultTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default withStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'medium' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && fontSize !== 'medium' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: chainPropTypes(PropTypes.oneOf(['default', 'inherit', 'large', 'medium', 'small']), function (props) {\n var fontSize = props.fontSize;\n\n if (fontSize === 'default') {\n throw new Error('Material-UI: `fontSize=\"default\"` is deprecated. Use `fontSize=\"medium\"` instead.');\n }\n\n return null;\n }),\n\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function createSvgIcon(path, displayName) {\n var Component = function Component(props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;\n var timeout;\n\n function debounced() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line consistent-this\n var that = this;\n\n var later = function later() {\n func.apply(that, args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = function () {\n clearTimeout(timeout);\n };\n\n return debounced;\n}","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n return function (props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<>';\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(\"The \".concat(location, \" `\").concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameSafe, \"` is deprecated. \").concat(reason));\n }\n\n return null;\n };\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc.defaultView || window;\n}","export default function requirePropFactory(componentNameInError) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n var requireProp = function requireProp(requiredProp) {\n return function (props, propName, componentName, location, propFullName) {\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` of \") + \"`\".concat(componentNameInError, \"` must be used on `\").concat(requiredProp, \"`.\"));\n }\n\n return null;\n };\n };\n\n return requireProp;\n}","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n var propFullNameSafe = propFullName || propName;\n\n if (typeof props[propName] !== 'undefined') {\n return new Error(\"The prop `\".concat(propFullNameSafe, \"` is not supported. Please remove it.\"));\n }\n\n return null;\n}","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n\n var value = isControlled ? controlled : valueState;\n\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","import * as React from 'react';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function useId(idOverride) {\n var _React$useState = React.useState(idOverride),\n defaultId = _React$useState[0],\n setDefaultId = _React$useState[1];\n\n var id = idOverride || defaultId;\n React.useEffect(function () {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the random value for client-side rendering only.\n // We can't use it server-side.\n setDefaultId(\"mui-\".concat(Math.round(Math.random() * 1e5)));\n }\n }, [defaultId]);\n return id;\n}","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n\n if (node.isContentEditable) {\n return true;\n }\n\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\n\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\n\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\n\nfunction isFocusVisible(event) {\n var target = event.target;\n\n try {\n return target.matches(':focus-visible');\n } catch (error) {} // browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\n\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"\n}), 'Email');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z\"\n}), 'Home');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z\"\n}), 'LinkedIn');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 15h18v-2H3v2zm0 4h18v-2H3v2zm0-8h18V9H3v2zm0-6v2h18V5H3z\"\n}), 'Reorder');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z\"\n}), 'School');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z\"\n}), 'Work');\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@material-ui/core/utils\");","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\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 && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\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\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>;\n }\n>();\n\nconst RootIds: WeakMap = new WeakMap();\nlet rootId = 0;\n\nlet unsupportedValue: boolean | undefined = undefined;\n\n/**\n * What should be the default behavior if the IntersectionObserver is unsupported?\n * Ideally the polyfill has been loaded, you can have the following happen:\n * - `undefined`: Throw an error\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\n * **/\nexport function defaultFallbackInView(inView: boolean | undefined) {\n unsupportedValue = inView;\n}\n\n/**\n * Generate a unique ID for the root element\n * @param root\n */\nfunction getRootId(root: IntersectionObserverInit['root']) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n\n/**\n * Convert the options to a string Id, based on the values.\n * Ensures we can reuse the same observer when observing elements with the same options.\n * @param options\n */\nexport function optionsToId(options: IntersectionObserverInit) {\n return Object.keys(options)\n .sort()\n .filter((key) => options[key] !== undefined)\n .map((key) => {\n return `${key}_${\n key === 'root' ? getRootId(options.root) : options[key]\n }`;\n })\n .toString();\n}\n\nfunction createObserver(options: IntersectionObserverInit) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n let id = optionsToId(options);\n let instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n const elements = new Map>();\n let thresholds: number[] | readonly number[];\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const inView =\n entry.isIntersecting &&\n thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n // @ts-ignore support IntersectionObserver v2\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n elements.get(entry.target)?.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n\n // Ensure we have a valid thresholds array. If not, use the threshold from the options\n thresholds =\n observer.thresholds ||\n (Array.isArray(options.threshold)\n ? options.threshold\n : [options.threshold || 0]);\n\n instance = {\n id,\n observer,\n elements,\n };\n\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n\n/**\n * @param element - DOM Element to observe\n * @param callback - Callback function to trigger when intersection status changes\n * @param options - Intersection Observer options\n * @param fallbackInView - Fallback inView value.\n * @return Function - Cleanup function that should be triggered to unregister the observer\n */\nexport function observe(\n element: Element,\n callback: ObserverInstanceCallback,\n options: IntersectionObserverInit = {},\n fallbackInView = unsupportedValue,\n) {\n if (\n typeof window.IntersectionObserver === 'undefined' &&\n fallbackInView !== undefined\n ) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio:\n typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds,\n });\n return () => {\n // Nothing to cleanup\n };\n }\n // An observer with the same options can be reused, so lets use this fact\n const { id, observer, elements } = createObserver(options);\n\n // Register the callback listener for this element\n let callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements.delete(element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n","import * as React from 'react';\nimport { IntersectionObserverProps, PlainChildrenProps } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\nfunction isPlainChildren(\n props: IntersectionObserverProps | PlainChildrenProps,\n): props is PlainChildrenProps {\n return typeof props.children !== 'function';\n}\n\n/**\n ## Render props\n\n To use the `` component, you pass it a function. It will be called\n whenever the state changes, with the new value of `inView`. In addition to the\n `inView` prop, children also receive a `ref` that should be set on the\n containing DOM element. This is the element that the IntersectionObserver will\n monitor.\n\n If you need it, you can also access the\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\n on `entry`, giving you access to all the details about the current intersection\n state.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n \n {({ inView, ref, entry }) => (\n
\n

{`Header inside viewport ${inView}.`}

\n
\n )}\n
\n );\n\n export default Component;\n ```\n\n ## Plain children\n\n You can pass any element to the ``, and it will handle creating the\n wrapping DOM element. Add a handler to the `onChange` method, and control the\n state in your own component. Any extra props you add to `` will be\n passed to the HTML element, allowing you set the `className`, `style`, etc.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n console.log('Inview:', inView)}>\n

Plain children are always rendered. Use onChange to monitor state.

\n
\n );\n\n export default Component;\n ```\n */\nexport class InView extends React.Component<\n IntersectionObserverProps | PlainChildrenProps,\n State\n> {\n static displayName = 'InView';\n static defaultProps = {\n threshold: 0,\n triggerOnce: false,\n initialInView: false,\n };\n\n constructor(props: IntersectionObserverProps | PlainChildrenProps) {\n super(props);\n this.state = {\n inView: !!props.initialInView,\n entry: undefined,\n };\n }\n\n componentDidUpdate(prevProps: IntersectionObserverProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (\n prevProps.rootMargin !== this.props.rootMargin ||\n prevProps.root !== this.props.root ||\n prevProps.threshold !== this.props.threshold ||\n prevProps.skip !== this.props.skip ||\n prevProps.trackVisibility !== this.props.trackVisibility ||\n prevProps.delay !== this.props.delay\n ) {\n this.unobserve();\n this.observeNode();\n }\n }\n\n componentWillUnmount() {\n this.unobserve();\n this.node = null;\n }\n\n node: Element | null = null;\n _unobserveCb: (() => void) | null = null;\n\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView,\n } = this.props;\n\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n }\n\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n\n handleNode = (node?: Element | null) => {\n if (this.node) {\n // Clear the old observer, before we start observing a new element\n this.unobserve();\n\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n this.setState({ inView: !!this.props.initialInView, entry: undefined });\n }\n }\n\n this.node = node ? node : null;\n this.observeNode();\n };\n\n handleChange = (inView: boolean, entry: IntersectionObserverEntry) => {\n if (inView && this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n this.props.onChange(inView, entry);\n }\n };\n\n render() {\n if (!isPlainChildren(this.props)) {\n const { inView, entry } = this.state;\n return this.props.children({ inView, entry, ref: this.handleNode });\n }\n\n const {\n children,\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n\n return React.createElement(\n as || 'div',\n { ref: this.handleNode, ...props },\n children,\n );\n }\n}\n","import * as React from 'react';\nimport { InViewHookResponse, IntersectionOptions } from './index';\nimport { useEffect } from 'react';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\n/**\n * React Hooks make it easy to monitor the `inView` state of your components. Call\n * the `useInView` hook with the (optional) [options](#options) you need. It will\n * return an array containing a `ref`, the `inView` status and the current\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\n * report the status.\n *\n * @example\n * ```jsx\n * import React from 'react';\n * import { useInView } from 'react-intersection-observer';\n *\n * const Component = () => {\n * const { ref, inView, entry } = useInView({\n * threshold: 0,\n * });\n *\n * return (\n *
\n *

{`Header inside viewport ${inView}.`}

\n *
\n * );\n * };\n * ```\n */\nexport function useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n}: IntersectionOptions = {}): InViewHookResponse {\n const unobserve = React.useRef();\n const [state, setState] = React.useState({\n inView: !!initialInView,\n });\n const setRef = React.useCallback(\n (node: Element | null) => {\n if (unobserve.current !== undefined) {\n unobserve.current();\n unobserve.current = undefined;\n }\n\n // Skip creating the observer\n if (skip) return;\n\n if (node) {\n unobserve.current = observe(\n node,\n (inView, entry) => {\n setState({ inView, entry });\n\n if (entry.isIntersecting && triggerOnce && unobserve.current) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve.current();\n unobserve.current = undefined;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n }\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay,\n ],\n );\n\n /* eslint-disable-next-line */\n useEffect(() => {\n if (!unobserve.current && state.entry && !triggerOnce && !skip) {\n // If we don't have a ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n setState({\n inView: !!initialInView,\n });\n }\n });\n\n const result = [setRef, state.inView, state.entry] as InViewHookResponse;\n\n // Support object destructuring, by adding the specific values.\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n\n return result;\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst VerticalTimeline = ({\n animate = true,\n className = '',\n layout = '2-columns',\n lineColor = '#FFF',\n children\n}) => {\n if (typeof window === 'object') {\n document.documentElement.style.setProperty('--line-color', lineColor);\n }\n\n return /*#__PURE__*/_react.default.createElement(\"div\", {\n className: (0, _classnames.default)(className, 'vertical-timeline', {\n 'vertical-timeline--animate': animate,\n 'vertical-timeline--two-columns': layout === '2-columns',\n 'vertical-timeline--one-column-left': layout === '1-column' || layout === '1-column-left',\n 'vertical-timeline--one-column-right': layout === '1-column-right'\n })\n }, children);\n};\n\nVerticalTimeline.propTypes = {\n children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]).isRequired,\n className: _propTypes.default.string,\n animate: _propTypes.default.bool,\n layout: _propTypes.default.oneOf(['1-column-left', '1-column', '2-columns', '1-column-right']),\n lineColor: _propTypes.default.string\n};\nvar _default = VerticalTimeline;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _reactIntersectionObserver = require(\"react-intersection-observer\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst VerticalTimelineElement = ({\n children = '',\n className = '',\n contentArrowStyle = null,\n contentStyle = null,\n date = '',\n dateClassName = '',\n icon = null,\n iconClassName = '',\n iconOnClick = null,\n onTimelineElementClick = null,\n iconStyle = null,\n id = '',\n position = '',\n style = null,\n textClassName = '',\n intersectionObserverProps = {\n rootMargin: '0px 0px -40px 0px',\n triggerOnce: true\n },\n visible = false\n}) => /*#__PURE__*/_react.default.createElement(_reactIntersectionObserver.InView, intersectionObserverProps, ({\n inView,\n ref\n}) => /*#__PURE__*/_react.default.createElement(\"div\", {\n ref: ref,\n id: id,\n className: (0, _classnames.default)(className, 'vertical-timeline-element', {\n 'vertical-timeline-element--left': position === 'left',\n 'vertical-timeline-element--right': position === 'right',\n 'vertical-timeline-element--no-children': children === ''\n }),\n style: style\n}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(\"span\", {\n // eslint-disable-line jsx-a11y/no-static-element-interactions\n style: iconStyle,\n onClick: iconOnClick,\n className: (0, _classnames.default)(iconClassName, 'vertical-timeline-element-icon', {\n 'bounce-in': inView || visible,\n 'is-hidden': !(inView || visible)\n })\n}, icon), /*#__PURE__*/_react.default.createElement(\"div\", {\n style: contentStyle,\n onClick: onTimelineElementClick,\n className: (0, _classnames.default)(textClassName, 'vertical-timeline-element-content', {\n 'bounce-in': inView || visible,\n 'is-hidden': !(inView || visible)\n })\n}, /*#__PURE__*/_react.default.createElement(\"div\", {\n style: contentArrowStyle,\n className: \"vertical-timeline-element-content-arrow\"\n}), children, /*#__PURE__*/_react.default.createElement(\"span\", {\n className: (0, _classnames.default)(dateClassName, 'vertical-timeline-element-date')\n}, date)))));\n\nVerticalTimelineElement.propTypes = {\n children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]),\n className: _propTypes.default.string,\n contentArrowStyle: _propTypes.default.shape({}),\n contentStyle: _propTypes.default.shape({}),\n date: _propTypes.default.node,\n dateClassName: _propTypes.default.string,\n icon: _propTypes.default.element,\n iconClassName: _propTypes.default.string,\n iconStyle: _propTypes.default.shape({}),\n iconOnClick: _propTypes.default.func,\n onTimelineElementClick: _propTypes.default.func,\n id: _propTypes.default.string,\n position: _propTypes.default.string,\n style: _propTypes.default.shape({}),\n textClassName: _propTypes.default.string,\n visible: _propTypes.default.bool,\n intersectionObserverProps: _propTypes.default.shape({\n root: _propTypes.default.object,\n rootMargin: _propTypes.default.string,\n threshold: _propTypes.default.number,\n triggerOnce: _propTypes.default.bool\n })\n};\nvar _default = VerticalTimelineElement;\nexports.default = _default;","\"use strict\";\n\n// this should be the entry point to your library\nmodule.exports = {\n VerticalTimeline: require('./VerticalTimeline').default,\n // eslint-disable-line global-require\n VerticalTimelineElement: require('./VerticalTimelineElement').default // eslint-disable-line global-require\n\n};","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Typewriter\", [\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Typewriter\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Typewriter\"] = factory(root[\"react\"]);\n})(typeof self !== 'undefined' ? self : this, (__WEBPACK_EXTERNAL_MODULE__8156__) => {\nreturn ","/**\n * Check if a string contains a HTML tag or not\n * \n * @param {String} string String to check for HTML tag\n * @return {Boolean} True|False\n * \n */\nconst doesStringContainHTMLTag = (string) => {\n const regexp = new RegExp(/<[a-z][\\s\\S]*>/i);\n return regexp.test(string);\n};\n\nexport default doesStringContainHTMLTag;","/**\n * Return a random integer between min/max values\n * \n * @param {Number} min Minimum number to generate\n * @param {Number} max Maximum number to generate\n * @author Tameem Safi \n */\nconst getRandomInteger = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport default getRandomInteger;","export const EVENT_NAMES = {\n TYPE_CHARACTER: 'TYPE_CHARACTER',\n REMOVE_CHARACTER: 'REMOVE_CHARACTER',\n REMOVE_ALL: 'REMOVE_ALL',\n REMOVE_LAST_VISIBLE_NODE: 'REMOVE_LAST_VISIBLE_NODE',\n PAUSE_FOR: 'PAUSE_FOR',\n CALL_FUNCTION: 'CALL_FUNCTION',\n ADD_HTML_TAG_ELEMENT: 'ADD_HTML_TAG_ELEMENT',\n REMOVE_HTML_TAG_ELEMENT: 'REMOVE_HTML_TAG_ELEMENT',\n CHANGE_DELETE_SPEED: 'CHANGE_DELETE_SPEED',\n CHANGE_DELAY: 'CHANGE_DELAY',\n CHANGE_CURSOR: 'CHANGE_CURSOR',\n PASTE_STRING: 'PASTE_STRING',\n};\n\nexport const VISIBLE_NODE_TYPES = {\n HTML_TAG: 'HTML_TAG',\n TEXT_NODE: 'TEXT_NODE',\n}\n\nexport const STYLES = `.Typewriter__cursor{-webkit-animation:Typewriter-cursor 1s infinite;animation:Typewriter-cursor 1s infinite;margin-left:1px}@-webkit-keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes Typewriter-cursor{0%{opacity:0}50%{opacity:1}100%{opacity:0}}`;","import raf, { cancel as cancelRaf } from 'raf';\nimport {\n doesStringContainHTMLTag,\n getDOMElementFromString,\n getRandomInteger,\n addStyles,\n} from './../utils';\nimport {\n EVENT_NAMES,\n VISIBLE_NODE_TYPES,\n STYLES,\n} from './constants';\n\nclass Typewriter {\n state = {\n cursorAnimation: null,\n lastFrameTime: null,\n pauseUntil: null,\n eventQueue: [],\n eventLoop: null,\n eventLoopPaused: false,\n reverseCalledEvents: [],\n calledEvents: [],\n visibleNodes: [],\n initialOptions: null,\n elements: {\n container: null,\n wrapper: document.createElement('span'),\n cursor: document.createElement('span'),\n },\n }\n\n options = {\n strings: null,\n cursor: '|',\n delay: 'natural',\n pauseFor: 1500,\n deleteSpeed: 'natural',\n loop: false,\n autoStart: false,\n devMode: false,\n skipAddStyles: false,\n wrapperClassName: 'Typewriter__wrapper',\n cursorClassName: 'Typewriter__cursor',\n stringSplitter: null,\n onCreateTextNode: null,\n onRemoveNode: null,\n }\n\n constructor(container, options) {\n if(container) {\n if(typeof container === 'string') {\n const containerElement = document.querySelector(container);\n \n if(!containerElement) {\n throw new Error('Could not find container element');\n }\n \n this.state.elements.container = containerElement;\n } else {\n this.state.elements.container = container;\n }\n }\n\n if(options) {\n this.options = {\n ...this.options,\n ...options\n };\n }\n\n // Make a copy of the options used to reset options when looping\n this.state.initialOptions = { ...this.options };\n\n this.init();\n }\n\n init() {\n this.setupWrapperElement();\n this.addEventToQueue(EVENT_NAMES.CHANGE_CURSOR, { cursor: this.options.cursor }, true);\n this.addEventToQueue(EVENT_NAMES.REMOVE_ALL, null, true);\n\n if(window && !window.___TYPEWRITER_JS_STYLES_ADDED___ && !this.options.skipAddStyles) {\n addStyles(STYLES);\n window.___TYPEWRITER_JS_STYLES_ADDED___ = true;\n }\n\n if(this.options.autoStart === true && this.options.strings) {\n this.typeOutAllStrings().start();\n\t\t}\n }\n\n /**\n * Replace all child nodes of provided element with\n * state wrapper element used for typewriter effect\n *\n * @author Tameem Safi \n */\n setupWrapperElement = () => {\n if(!this.state.elements.container) {\n return\n }\n\n this.state.elements.wrapper.className = this.options.wrapperClassName;\n this.state.elements.cursor.className = this.options.cursorClassName;\n\n this.state.elements.cursor.innerHTML = this.options.cursor;\n this.state.elements.container.innerHTML = '';\n\n this.state.elements.container.appendChild(this.state.elements.wrapper);\n this.state.elements.container.appendChild(this.state.elements.cursor);\n }\n\n /**\n * Start typewriter effect\n */\n start = () => {\n this.state.eventLoopPaused = false;\n this.runEventLoop();\n\n return this;\n }\n\n /**\n * Pause the event loop\n *\n * @author Tameem Safi \n */\n pause = () => {\n this.state.eventLoopPaused = true;\n\n return this;\n }\n\n /**\n * Destroy current running instance\n *\n * @author Tameem Safi \n */\n stop = () => {\n if(this.state.eventLoop) {\n cancelRaf(this.state.eventLoop);\n this.state.eventLoop = null;\n }\n\n return this;\n }\n\n /**\n * Add pause event to queue for ms provided\n *\n * @param {Number} ms Time in ms to pause for\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n pauseFor = (ms) => {\n this.addEventToQueue(EVENT_NAMES.PAUSE_FOR, { ms });\n\n return this;\n }\n\n /**\n * Start typewriter effect by typing\n * out all strings provided\n *\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n typeOutAllStrings = () => {\n if(typeof this.options.strings === 'string') {\n this.typeString(this.options.strings)\n .pauseFor(this.options.pauseFor);\n return this;\n }\n\n this.options.strings.forEach(string => {\n this.typeString(string)\n .pauseFor(this.options.pauseFor)\n .deleteAll(this.options.deleteSpeed);\n });\n\n return this;\n }\n\n /**\n * Adds string characters to event queue for typing\n *\n * @param {String} string String to type\n * @param {HTMLElement} node Node to add character inside of\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n typeString = (string, node = null) => {\n if(doesStringContainHTMLTag(string)) {\n return this.typeOutHTMLString(string, node);\n }\n\n if(string) {\n const { stringSplitter } = this.options || {};\n const characters = typeof stringSplitter === 'function' ? stringSplitter(string) : string.split('');\n this.typeCharacters(characters, node);\n }\n\n return this;\n }\n\n /**\n * Adds entire strings to event queue for paste effect\n *\n * @param {String} string String to paste\n * @param {HTMLElement} node Node to add string inside of\n * @return {Typewriter}\n *\n * @author Luiz Felicio \n */\n pasteString = (string, node = null) => {\n if(doesStringContainHTMLTag(string)) {\n return this.typeOutHTMLString(string, node, true);\n }\n\n if(string) {\n this.addEventToQueue(EVENT_NAMES.PASTE_STRING, { character: string, node });\n }\n\n return this;\n }\n\n /**\n * Type out a string which is wrapper around HTML tag\n *\n * @param {String} string String to type\n * @param {HTMLElement} parentNode Node to add inner nodes to\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n typeOutHTMLString = (string, parentNode = null, pasteEffect) => {\n const childNodes = getDOMElementFromString(string);\n\n if(childNodes.length > 0 ) {\n for(let i = 0; i < childNodes.length; i++) {\n const node = childNodes[i];\n const nodeHTML = node.innerHTML;\n\n if(node && node.nodeType !== 3) {\n // Reset innerText of HTML element\n node.innerHTML = '';\n\n // Add event queue item to insert HTML tag before typing characters\n this.addEventToQueue(EVENT_NAMES.ADD_HTML_TAG_ELEMENT, {\n node,\n parentNode,\n });\n\n pasteEffect ? this.pasteString(nodeHTML, node) : this.typeString(nodeHTML, node);\n } else {\n if(node.textContent) {\n pasteEffect ? this.pasteString(node.textContent, parentNode) : this.typeString(node.textContent, parentNode);\n }\n }\n }\n }\n\n return this;\n }\n\n /**\n * Add delete all characters to event queue\n *\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n deleteAll = (speed = 'natural') => {\n this.addEventToQueue(EVENT_NAMES.REMOVE_ALL, { speed });\n return this;\n }\n\n /**\n * Change delete speed\n *\n * @param {Number} speed Speed to use for deleting characters\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n changeDeleteSpeed = (speed) => {\n if(!speed) {\n throw new Error('Must provide new delete speed');\n }\n\n this.addEventToQueue(EVENT_NAMES.CHANGE_DELETE_SPEED, { speed });\n\n return this;\n }\n\n /**\n * Change delay when typing\n *\n * @param {Number} delay Delay when typing out characters\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n changeDelay = (delay) => {\n if(!delay) {\n throw new Error('Must provide new delay');\n }\n\n this.addEventToQueue(EVENT_NAMES.CHANGE_DELAY, { delay });\n\n return this;\n }\n\n /**\n * Change cursor\n *\n * @param {String} character/string to represent as cursor\n * @return {Typewriter}\n *\n * @author Y.Paing \n */\n changeCursor = (cursor) => {\n if(!cursor) {\n throw new Error('Must provide new cursor');\n }\n\n this.addEventToQueue(EVENT_NAMES.CHANGE_CURSOR, { cursor });\n\n return this;\n }\n\n /**\n * Add delete character to event queue for amount of characters provided\n *\n * @param {Number} amount Number of characters to remove\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n deleteChars = (amount) => {\n if(!amount) {\n throw new Error('Must provide amount of characters to delete');\n }\n\n for(let i = 0; i < amount; i++) {\n this.addEventToQueue(EVENT_NAMES.REMOVE_CHARACTER);\n }\n\n return this;\n }\n\n /**\n * Add an event item to call a callback function\n *\n * @param {cb} cb Callback function to call\n * @param {Object} thisArg thisArg to use when calling function\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n callFunction = (cb, thisArg) => {\n if(!cb || typeof cb !== 'function') {\n throw new Error('Callback must be a function');\n }\n\n this.addEventToQueue(EVENT_NAMES.CALL_FUNCTION, { cb, thisArg });\n\n return this;\n }\n\n /**\n * Add type character event for each character\n *\n * @param {Array} characters Array of characters\n * @param {HTMLElement} node Node to add character inside of\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n typeCharacters = (characters, node = null) => {\n if(!characters || !Array.isArray(characters)) {\n throw new Error('Characters must be an array');\n }\n\n characters.forEach(character => {\n this.addEventToQueue(EVENT_NAMES.TYPE_CHARACTER, { character, node });\n });\n\n return this;\n }\n\n /**\n * Add remove character event for each character\n *\n * @param {Array} characters Array of characters\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n removeCharacters = (characters) => {\n if(!characters || !Array.isArray(characters)) {\n throw new Error('Characters must be an array');\n }\n\n characters.forEach(() => {\n this.addEventToQueue(EVENT_NAMES.REMOVE_CHARACTER);\n });\n\n return this;\n }\n\n /**\n * Add an event to the event queue\n *\n * @param {String} eventName Name of the event\n * @param {Object} eventArgs Arguments to pass to event callback\n * @param {Boolean} prepend Prepend to begining of event queue\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n addEventToQueue = (eventName, eventArgs, prepend = false) => {\n return this.addEventToStateProperty(\n eventName,\n eventArgs,\n prepend,\n 'eventQueue'\n );\n }\n\n /**\n * Add an event to reverse called events used for looping\n *\n * @param {String} eventName Name of the event\n * @param {Object} eventArgs Arguments to pass to event callback\n * @param {Boolean} prepend Prepend to begining of event queue\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n addReverseCalledEvent = (eventName, eventArgs, prepend = false) => {\n const { loop } = this.options;\n\n if(!loop) {\n return this;\n }\n\n return this.addEventToStateProperty(\n eventName,\n eventArgs,\n prepend,\n 'reverseCalledEvents'\n );\n }\n\n /**\n * Add an event to correct state property\n *\n * @param {String} eventName Name of the event\n * @param {Object} eventArgs Arguments to pass to event callback\n * @param {Boolean} prepend Prepend to begining of event queue\n * @param {String} property Property name of state object\n * @return {Typewriter}\n *\n * @author Tameem Safi \n */\n addEventToStateProperty = (eventName, eventArgs, prepend = false, property) => {\n const eventItem = {\n eventName,\n eventArgs: eventArgs || {},\n };\n\n if(prepend) {\n this.state[property] = [\n eventItem,\n ...this.state[property],\n ];\n } else {\n this.state[property] = [\n ...this.state[property],\n eventItem,\n ];\n }\n\n return this;\n }\n\n /**\n * Run the event loop and do anything inside of the queue\n *\n * @author Tameem Safi \n */\n runEventLoop = () => {\n if(!this.state.lastFrameTime) {\n this.state.lastFrameTime = Date.now();\n }\n\n // Setup variables to calculate if this frame should run\n const nowTime = Date.now();\n const delta = nowTime - this.state.lastFrameTime;\n\n if(!this.state.eventQueue.length) {\n if(!this.options.loop) {\n return;\n }\n\n // Reset event queue if we are looping\n this.state.eventQueue = [...this.state.calledEvents];\n this.state.calledEvents = [];\n this.options = {...this.state.initialOptions};\n }\n\n // Request next frame\n this.state.eventLoop = raf(this.runEventLoop);\n\n // Check if event loop is paused\n if(this.state.eventLoopPaused) {\n return;\n }\n\n // Check if state has pause until time\n if(this.state.pauseUntil) {\n // Check if event loop should be paused\n if(nowTime < this.state.pauseUntil) {\n return;\n }\n\n // Reset pause time\n this.state.pauseUntil = null;\n }\n\n // Make a clone of event queue\n const eventQueue = [...this.state.eventQueue];\n\n // Get first event from queue\n const currentEvent = eventQueue.shift();\n\n // Setup delay variable\n let delay = 0;\n\n // Check if frame should run or be\n // skipped based on fps interval\n if(\n currentEvent.eventName === EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE ||\n currentEvent.eventName === EVENT_NAMES.REMOVE_CHARACTER\n ) {\n delay = this.options.deleteSpeed === 'natural' ? getRandomInteger(40, 80) : this.options.deleteSpeed;\n } else {\n delay = this.options.delay === 'natural' ? getRandomInteger(120, 160) : this.options.delay;\n }\n\n if(delta <= delay) {\n return;\n }\n\n // Get current event args\n const { eventName, eventArgs } = currentEvent;\n\n this.logInDevMode({ currentEvent, state: this.state, delay });\n\n // Run item from event loop\n switch(eventName) {\n case EVENT_NAMES.PASTE_STRING:\n case EVENT_NAMES.TYPE_CHARACTER: {\n const { character, node } = eventArgs;\n const textNode = document.createTextNode(character);\n\n let textNodeToUse = textNode\n\n if(this.options.onCreateTextNode && typeof this.options.onCreateTextNode === 'function') {\n textNodeToUse = this.options.onCreateTextNode(character, textNode)\n }\n\n if(textNodeToUse) {\n if(node) {\n node.appendChild(textNodeToUse);\n } else {\n this.state.elements.wrapper.appendChild(textNodeToUse);\n }\n }\n\n this.state.visibleNodes = [\n ...this.state.visibleNodes,\n {\n type: VISIBLE_NODE_TYPES.TEXT_NODE,\n character,\n node: textNodeToUse,\n },\n ];\n\n break;\n }\n\n case EVENT_NAMES.REMOVE_CHARACTER: {\n eventQueue.unshift({\n eventName: EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE,\n eventArgs: { removingCharacterNode: true },\n });\n break;\n }\n\n case EVENT_NAMES.PAUSE_FOR: {\n const { ms } = currentEvent.eventArgs;\n this.state.pauseUntil = Date.now() + parseInt(ms);\n break;\n }\n\n case EVENT_NAMES.CALL_FUNCTION: {\n const { cb, thisArg } = currentEvent.eventArgs;\n\n cb.call(thisArg, {\n elements: this.state.elements,\n });\n\n break;\n }\n\n case EVENT_NAMES.ADD_HTML_TAG_ELEMENT: {\n const { node, parentNode } = currentEvent.eventArgs;\n\n if(!parentNode) {\n this.state.elements.wrapper.appendChild(node);\n } else {\n parentNode.appendChild(node);\n }\n\n this.state.visibleNodes = [\n ...this.state.visibleNodes,\n {\n type: VISIBLE_NODE_TYPES.HTML_TAG,\n node,\n parentNode: parentNode || this.state.elements.wrapper,\n },\n ];\n break;\n }\n\n case EVENT_NAMES.REMOVE_ALL: {\n const { visibleNodes } = this.state;\n const { speed } = eventArgs;\n const removeAllEventItems = [];\n\n // Change speed before deleteing\n if(speed) {\n removeAllEventItems.push({\n eventName: EVENT_NAMES.CHANGE_DELETE_SPEED,\n eventArgs: { speed, temp: true },\n });\n }\n\n for(let i = 0, length = visibleNodes.length; i < length; i++) {\n removeAllEventItems.push({\n eventName: EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE,\n eventArgs: { removingCharacterNode: false },\n });\n }\n\n // Change speed back to normal after deleteing\n if(speed) {\n removeAllEventItems.push({\n eventName: EVENT_NAMES.CHANGE_DELETE_SPEED,\n eventArgs: { speed: this.options.deleteSpeed, temp: true },\n });\n }\n\n eventQueue.unshift(...removeAllEventItems);\n\n break;\n }\n\n case EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE: {\n const { removingCharacterNode } = currentEvent.eventArgs;\n\n if(this.state.visibleNodes.length) {\n const { type, node, character } = this.state.visibleNodes.pop();\n\n if(this.options.onRemoveNode && typeof this.options.onRemoveNode === 'function') {\n this.options.onRemoveNode({\n node,\n character,\n })\n }\n\n if(node) {\n node.parentNode.removeChild(node);\n }\n \n // Remove extra node as current deleted one is just an empty wrapper node\n if(type === VISIBLE_NODE_TYPES.HTML_TAG && removingCharacterNode) {\n eventQueue.unshift({\n eventName: EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE,\n eventArgs: {},\n });\n }\n }\n break;\n }\n\n case EVENT_NAMES.CHANGE_DELETE_SPEED: {\n this.options.deleteSpeed = currentEvent.eventArgs.speed;\n break;\n }\n\n case EVENT_NAMES.CHANGE_DELAY: {\n this.options.delay = currentEvent.eventArgs.delay;\n break;\n }\n\n case EVENT_NAMES.CHANGE_CURSOR: {\n this.options.cursor = currentEvent.eventArgs.cursor;\n this.state.elements.cursor.innerHTML = currentEvent.eventArgs.cursor;\n break;\n }\n\n default: {\n break;\n }\n }\n\n // Add que item to called queue if we are looping\n if(this.options.loop) {\n if(\n currentEvent.eventName !== EVENT_NAMES.REMOVE_LAST_VISIBLE_NODE &&\n !(currentEvent.eventArgs && currentEvent.eventArgs.temp)\n ) {\n this.state.calledEvents = [\n ...this.state.calledEvents,\n currentEvent\n ];\n }\n }\n\n // Replace state event queue with cloned queue\n this.state.eventQueue = eventQueue;\n\n // Set last frame time so it can be used to calculate next frame\n this.state.lastFrameTime = nowTime;\n }\n\n /**\n * Log a message in development mode\n *\n * @param {Mixed} message Message or item to console.log\n * @author Tameem Safi \n */\n logInDevMode(message) {\n if(this.options.devMode) {\n console.log(message);\n }\n }\n}\n\nexport default Typewriter;\n","/**\n * Get the DOM element from a string\n * - Create temporary div element\n * - Change innerHTML of div element to the string\n * - Return the first child of the temporary div element\n * \n * @param {String} string String to convert into a DOM node\n * \n * @author Tameem Safi \n */\nconst getDOMElementFromString = (string) => {\n const div = document.createElement('div');\n div.innerHTML = string;\n return div.childNodes;\n}\n\nexport default getDOMElementFromString;","/**\n * Add styles to document head\n * \n * @param {String} styles CSS styles to add\n * @returns {void}\n */\nconst addStyles = (styles) => {\n const styleBlock = document.createElement('style');\n styleBlock.appendChild(document.createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nexport default addStyles;","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8156__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport TypewriterCore from './../core';\nimport isEqual from 'lodash/isEqual';\n\nclass Typewriter extends Component {\n state = {\n instance: null,\n };\n\n componentDidMount() {\n const instance = new TypewriterCore(this.typewriter, this.props.options);\n\n this.setState({\n instance,\n }, () => {\n const { onInit } = this.props;\n \n if(onInit) {\n onInit(instance);\n }\n });\n }\n\n componentDidUpdate(prevProps) {\n if(!isEqual(this.props.options, prevProps.options)) {\n this.setState({\n instance: new TypewriterCore(this.typewriter, this.props.options)\n });\n }\n }\n\n componentWillUnmount() {\n if(this.state.instance) {\n this.state.instance.stop();\n }\n }\n\n render() {\n const { component: Component } = this.props; \n \n return (\n this.typewriter = ref}\n className='Typewriter'\n data-testid='typewriter-wrapper'\n />\n );\n }\n}\n\nTypewriter.propTypes = {\n component: PropTypes.element,\n onInit: PropTypes.func,\n options: PropTypes.objectOf(PropTypes.shape({\n strings: PropTypes.arrayOf(PropTypes.string),\n cursor: PropTypes.string,\n delay: PropTypes.number,\n loop: PropTypes.bool,\n autoStart: PropTypes.bool,\n devMode: PropTypes.bool,\n wrapperClassName: PropTypes.string,\n cursorClassName: PropTypes.string,\n })),\n};\n\nTypewriter.defaultProps = {\n component: 'div'\n}\n\nexport default Typewriter;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\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 return self;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\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}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\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 _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _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}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","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}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// 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};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"e754e478\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"flower:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkflower\"] = self[\"webpackChunkflower\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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 subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import _typeof from \"./typeof.js\";\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 return assertThisInitialized(self);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n signal: AbortSignal;\n path: string;\n matches: M[];\n fetcherKey: string | undefined;\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Remove any lingering deleted fetchers that have already been removed\n // from state.fetchers\n deletedFetchers.forEach((key) => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n deletedFetchersKeys.push(key);\n }\n });\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n } else {\n // We already called deleteFetcher() on these, can remove them from this\n // Set now that we've handed the keys off to the data layer\n deletedFetchersKeys.forEach((key) => deletedFetchers.delete(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches =\n opts?.initialHydration &&\n state.matches &&\n state.matches.length > 0 &&\n !initialMatchesIsFOW\n ? // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches\n : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n matches &&\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal,\n key\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal,\n key\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n\n // If we opted into the flag we can clear this now since we're calling\n // deleteFetcher() at the end of updateState() and we've already handed the\n // deleted fetcher keys off to the data layer.\n // If not, we're eagerly calling deleteFetcher() and we need to keep this\n // Set populated until the next updateState call, and we'll clear\n // `deletedFetchers` then\n if (future.v7_fetcherPersist) {\n deletedFetchers.delete(key);\n }\n\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n if (!future.v7_fetcherPersist) {\n deleteFetcher(key);\n }\n } else {\n activeFetchers.set(key, count);\n }\n\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal,\n fetcherKey?: string\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n signal,\n path: pathname,\n matches: partialMatches,\n fetcherKey,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n ),\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator, static: isStatic } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches =\n !isStatic &&\n dataRouterState &&\n dataRouterState.matches &&\n dataRouterState.matches.length > 0\n ? (dataRouterState.matches as AgnosticRouteMatch[])\n : matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n if (__DEV__ && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n warnOnce(\n flag,\n `⚠️ React Router Future Flag Warning: ${msg}. ` +\n `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n `For more information, see ${link}.`\n );\n\nexport function logV6DeprecationWarnings(\n renderFuture: Partial | undefined,\n routerFuture?: Omit\n) {\n if (renderFuture?.v7_startTransition === undefined) {\n logDeprecation(\n \"v7_startTransition\",\n \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n );\n }\n\n if (\n renderFuture?.v7_relativeSplatPath === undefined &&\n (!routerFuture || !routerFuture.v7_relativeSplatPath)\n ) {\n logDeprecation(\n \"v7_relativeSplatPath\",\n \"Relative route resolution within Splat routes is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n );\n }\n\n if (routerFuture) {\n if (routerFuture.v7_fetcherPersist === undefined) {\n logDeprecation(\n \"v7_fetcherPersist\",\n \"The persistence behavior of fetchers is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n );\n }\n\n if (routerFuture.v7_normalizeFormMethod === undefined) {\n logDeprecation(\n \"v7_normalizeFormMethod\",\n \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n );\n }\n\n if (routerFuture.v7_partialHydration === undefined) {\n logDeprecation(\n \"v7_partialHydration\",\n \"`RouterProvider` hydration behavior is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n );\n }\n\n if (routerFuture.v7_skipActionErrorRevalidation === undefined) {\n logDeprecation(\n \"v7_skipActionErrorRevalidation\",\n \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n );\n }\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n React.useEffect(\n () => logV6DeprecationWarnings(future, router.future),\n [router, future]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a