{"version":3,"file":"static/js/main.e2d744bd.js","mappings":"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","sources":["../node_modules/emailjs-com/source/index.js","../node_modules/emailjs-com/source/models/EmailJSResponseStatus.js","../node_modules/emailjs-com/source/services/ui/UI.js","../node_modules/lodash.throttle/index.js","../node_modules/object-assign/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/index.js","../node_modules/react-scroll/modules/components/Button.js","../node_modules/react-scroll/modules/components/Element.js","../node_modules/react-scroll/modules/components/Link.js","../node_modules/react-scroll/modules/index.js","../node_modules/react-scroll/modules/mixins/Helpers.js","../node_modules/react-scroll/modules/mixins/animate-scroll.js","../node_modules/react-scroll/modules/mixins/cancel-events.js","../node_modules/react-scroll/modules/mixins/passive-event-listeners.js","../node_modules/react-scroll/modules/mixins/scroll-element.js","../node_modules/react-scroll/modules/mixins/scroll-events.js","../node_modules/react-scroll/modules/mixins/scroll-hash.js","../node_modules/react-scroll/modules/mixins/scroll-link.js","../node_modules/react-scroll/modules/mixins/scroll-spy.js","../node_modules/react-scroll/modules/mixins/scroller.js","../node_modules/react-scroll/modules/mixins/smooth.js","../node_modules/react-scroll/modules/mixins/utils.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","../node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../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/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","components/navigation.jsx","components/TypinfEffect.js","components/header.jsx","components/feature_item.jsx","components/features.jsx","components/about.jsx","components/services.jsx","components/image.jsx","components/gallery_images.jsx","components/Team.jsx","components/contact.jsx","components/textAnalytics.jsx","components/imageAnalytics.jsx","App.jsx","serviceWorker.js","index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmailJSResponseStatus = exports.sendForm = exports.send = exports.init = void 0;\nvar EmailJSResponseStatus_1 = require(\"./models/EmailJSResponseStatus\");\nObject.defineProperty(exports, \"EmailJSResponseStatus\", { enumerable: true, get: function () { return EmailJSResponseStatus_1.EmailJSResponseStatus; } });\nvar UI_1 = require(\"./services/ui/UI\");\nvar _userID = null;\nvar _origin = 'https://api.emailjs.com';\nfunction sendPost(url, data, headers) {\n if (headers === void 0) { headers = {}; }\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.addEventListener('load', function (event) {\n var responseStatus = new EmailJSResponseStatus_1.EmailJSResponseStatus(event.target);\n if (responseStatus.status === 200 || responseStatus.text === 'OK') {\n resolve(responseStatus);\n }\n else {\n reject(responseStatus);\n }\n });\n xhr.addEventListener('error', function (event) {\n reject(new EmailJSResponseStatus_1.EmailJSResponseStatus(event.target));\n });\n xhr.open('POST', url, true);\n for (var key in headers) {\n xhr.setRequestHeader(key, headers[key]);\n }\n xhr.send(data);\n });\n}\nfunction appendGoogleCaptcha(templatePrams) {\n var element = document && document.getElementById('g-recaptcha-response');\n if (element && element.value) {\n templatePrams['g-recaptcha-response'] = element.value;\n }\n element = null;\n return templatePrams;\n}\nfunction fixIdSelector(selector) {\n if (selector[0] !== '#' && selector[0] !== '.') {\n return '#' + selector;\n }\n return selector;\n}\n/**\n * Initiation\n * @param {string} userID - set the EmailJS user ID\n * @param {string} origin - set the EmailJS origin\n */\nfunction init(userID, origin) {\n _userID = userID;\n _origin = origin || 'https://api.emailjs.com';\n}\nexports.init = init;\n/**\n * Send a template to the specific EmailJS service\n * @param {string} serviceID - the EmailJS service ID\n * @param {string} templateID - the EmailJS template ID\n * @param {Object} templatePrams - the template params, what will be set to the EmailJS template\n * @param {string} userID - the EmailJS user ID\n * @returns {Promise}\n */\nfunction send(serviceID, templateID, templatePrams, userID) {\n var params = {\n lib_version: '2.6.4',\n user_id: userID || _userID,\n service_id: serviceID,\n template_id: templateID,\n template_params: appendGoogleCaptcha(templatePrams)\n };\n return sendPost(_origin + '/api/v1.0/email/send', JSON.stringify(params), {\n 'Content-type': 'application/json'\n });\n}\nexports.send = send;\n/**\n * Send a form the specific EmailJS service\n * @param {string} serviceID - the EmailJS service ID\n * @param {string} templateID - the EmailJS template ID\n * @param {string | HTMLFormElement} form - the form element or selector\n * @param {string} userID - the EmailJS user ID\n * @returns {Promise}\n */\nfunction sendForm(serviceID, templateID, form, userID) {\n if (typeof form === 'string') {\n form = document.querySelector(fixIdSelector(form));\n }\n if (!form || form.nodeName !== 'FORM') {\n throw 'Expected the HTML form element or the style selector of form';\n }\n UI_1.UI.progressState(form);\n var formData = new FormData(form);\n formData.append('lib_version', '2.6.4');\n formData.append('service_id', serviceID);\n formData.append('template_id', templateID);\n formData.append('user_id', userID || _userID);\n return sendPost(_origin + '/api/v1.0/email/send-form', formData)\n .then(function (response) {\n UI_1.UI.successState(form);\n return response;\n }, function (error) {\n UI_1.UI.errorState(form);\n return Promise.reject(error);\n });\n}\nexports.sendForm = sendForm;\nexports.default = {\n init: init,\n send: send,\n sendForm: sendForm\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmailJSResponseStatus = void 0;\nvar EmailJSResponseStatus = /** @class */ (function () {\n function EmailJSResponseStatus(httpResponse) {\n this.status = httpResponse.status;\n this.text = httpResponse.responseText;\n }\n return EmailJSResponseStatus;\n}());\nexports.EmailJSResponseStatus = EmailJSResponseStatus;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UI = void 0;\nvar UI = /** @class */ (function () {\n function UI() {\n }\n UI.clearAll = function (form) {\n form.classList.remove(this.PROGRESS);\n form.classList.remove(this.DONE);\n form.classList.remove(this.ERROR);\n };\n UI.progressState = function (form) {\n this.clearAll(form);\n form.classList.add(this.PROGRESS);\n };\n UI.successState = function (form) {\n form.classList.remove(this.PROGRESS);\n form.classList.add(this.DONE);\n };\n UI.errorState = function (form) {\n form.classList.remove(this.PROGRESS);\n form.classList.add(this.ERROR);\n };\n UI.PROGRESS = 'emailjs-sending';\n UI.DONE = 'emailjs-success';\n UI.ERROR = 'emailjs-error';\n return UI;\n}());\nexports.UI = UI;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.2\n * react-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\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(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 D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(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){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(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(oa,\npa);D[b]=new B(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(oa,pa);D[b]=new B(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(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(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 ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function 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 m({},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 $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(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\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(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 bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!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,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({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 vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(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}}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(y(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;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){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 Oe(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)}\nvar Pe=fa&&\"documentMode\"in document&&11>=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&&Oe(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&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;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}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)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=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(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&64))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 jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"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[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,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=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n scrollHash.changeHash();\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive();\n }\n\n return scrollSpy.updateStates();\n }\n\n if (isInside && activeLink !== to) {\n scroller.setActiveLink(to);\n\n _this2.props.hashSpy && scrollHash.changeHash(to);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to);\n }\n return scrollSpy.updateStates();\n }\n };\n };\n\n ;\n\n Scroll.propTypes = protoTypes;\n\n Scroll.defaultProps = { offset: 0 };\n\n return Scroll;\n },\n Element: function Element(Component) {\n\n console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n var Element = function (_React$Component2) {\n _inherits(Element, _React$Component2);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this3.childBindings = {\n domNode: null\n };\n return _this3;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n defaultScroller.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n defaultScroller.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(React.Component);\n\n ;\n\n Element.propTypes = {\n name: PropTypes.string,\n id: PropTypes.string\n };\n\n return Element;\n }\n};\n\nmodule.exports = Helpers;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n if (typeof window !== 'undefined') {\n return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n return currentWindowProperties() || function (callback, element, delay) {\n window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n };\n}();\n\nvar makeData = function makeData() {\n return {\n currentPosition: 0,\n startPosition: 0,\n targetPosition: 0,\n progress: 0,\n duration: 0,\n cancel: false,\n\n target: null,\n containerElement: null,\n to: null,\n start: null,\n delta: null,\n percent: null,\n delayTimeout: null\n };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollLeft;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollTop;\n } else {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollWidth - containerElement.offsetWidth;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n var containerElement = options.data.containerElement;\n if (containerElement && containerElement !== document && containerElement !== document.body) {\n return containerElement.scrollHeight - containerElement.offsetHeight;\n } else {\n var body = document.body;\n var html = document.documentElement;\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n var data = options.data;\n\n // Cancel on specific events\n if (!options.ignoreCancelEvents && data.cancel) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n }\n return;\n };\n\n data.delta = Math.round(data.targetPosition - data.startPosition);\n\n if (data.start === null) {\n data.start = timestamp;\n }\n\n data.progress = timestamp - data.start;\n\n data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n if (options.horizontal) {\n data.containerElement.scrollLeft = data.currentPosition;\n } else {\n data.containerElement.scrollTop = data.currentPosition;\n }\n } else {\n if (options.horizontal) {\n window.scrollTo(data.currentPosition, 0);\n } else {\n window.scrollTo(0, data.currentPosition);\n }\n }\n\n if (data.percent < 1) {\n var easedAnimate = animateScroll.bind(null, easing, options);\n requestAnimationFrameHelper.call(window, easedAnimate);\n return;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n }\n};\n\nvar setContainer = function setContainer(options) {\n options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n options.data = options.data || makeData();\n\n window.clearTimeout(options.data.delayTimeout);\n\n var setCancel = function setCancel() {\n options.data.cancel = true;\n };\n _cancelEvents2.default.subscribe(setCancel);\n\n setContainer(options);\n\n options.data.start = null;\n options.data.cancel = false;\n options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n if (options.data.startPosition === options.data.targetPosition) {\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n }\n return;\n }\n\n options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n options.data.duration = functionWrapper(options.duration)(options.data.delta);\n options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n options.data.to = to;\n options.data.target = target;\n\n var easing = getAnimationType(options);\n var easedAnimate = animateScroll.bind(null, easing, options);\n\n if (options && options.delay > 0) {\n options.data.delayTimeout = window.setTimeout(function () {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n }, options.delay);\n return;\n }\n\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n }\n requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n options = _extends({}, options);\n options.data = options.data || makeData();\n options.absolute = true;\n return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n options = proceedOptions(options);\n setContainer(options);\n animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n options = proceedOptions(options);\n setContainer(options);\n var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n animateTopScroll: animateTopScroll,\n getAnimationType: getAnimationType,\n scrollToTop: scrollToTop,\n scrollToBottom: scrollToBottom,\n scrollTo: scrollTo,\n scrollMore: scrollMore\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'mousewheel', 'touchmove', 'keydown'];\n\nexports.default = {\n subscribe: function subscribe(cancelEvent) {\n return typeof document !== 'undefined' && events.forEach(function (event) {\n return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\n });\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n var listenerName = listener.name;\n if (!listenerName) {\n listenerName = eventName;\n console.warn('Listener must be a named function.');\n }\n\n if (!attachedListeners.has(eventName)) attachedListeners.set(eventName, new Set());\n var listeners = attachedListeners.get(eventName);\n if (listeners.has(listenerName)) return;\n\n var supportsPassiveOption = function () {\n var supportsPassiveOption = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassiveOption = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n return supportsPassiveOption;\n }();\n target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n listeners.add(listenerName);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n target.removeEventListener(eventName, listener);\n attachedListeners.get(eventName).delete(listener.name || eventName);\n};\n\nvar attachedListeners = new Map();","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexports.default = function (Component) {\n var Element = function (_React$Component) {\n _inherits(Element, _React$Component);\n\n function Element(props) {\n _classCallCheck(this, Element);\n\n var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n _this.childBindings = {\n domNode: null\n };\n return _this;\n }\n\n _createClass(Element, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (typeof window === 'undefined') {\n return false;\n }\n this.registerElems(this.props.name);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.name !== prevProps.name) {\n this.registerElems(this.props.name);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (typeof window === 'undefined') {\n return false;\n }\n _scroller2.default.unregister(this.props.name);\n }\n }, {\n key: 'registerElems',\n value: function registerElems(name) {\n _scroller2.default.register(name, this.childBindings.domNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n }\n }]);\n\n return Element;\n }(_react2.default.Component);\n\n ;\n\n Element.propTypes = {\n name: _propTypes2.default.string,\n id: _propTypes2.default.string\n };\n\n return Element;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n mountFlag: false,\n initialized: false,\n scroller: null,\n containers: {},\n\n mount: function mount(scroller) {\n this.scroller = scroller;\n\n this.handleHashChange = this.handleHashChange.bind(this);\n window.addEventListener('hashchange', this.handleHashChange);\n\n this.initStateFromHash();\n this.mountFlag = true;\n },\n mapContainer: function mapContainer(to, container) {\n this.containers[to] = container;\n },\n isMounted: function isMounted() {\n return this.mountFlag;\n },\n isInitialized: function isInitialized() {\n return this.initialized;\n },\n initStateFromHash: function initStateFromHash() {\n var _this = this;\n\n var hash = this.getHash();\n if (hash) {\n window.setTimeout(function () {\n _this.scrollTo(hash, true);\n _this.initialized = true;\n }, 10);\n } else {\n this.initialized = true;\n }\n },\n scrollTo: function scrollTo(to, isInit) {\n var scroller = this.scroller;\n var element = scroller.get(to);\n if (element && (isInit || to !== scroller.getActiveLink())) {\n var container = this.containers[to] || document;\n scroller.scrollTo(to, { container: container });\n }\n },\n getHash: function getHash() {\n return _utils2.default.getHash();\n },\n changeHash: function changeHash(to, saveHashHistory) {\n if (this.isInitialized() && _utils2.default.getHash() !== to) {\n _utils2.default.updateHash(to, saveHashHistory);\n }\n },\n handleHashChange: function handleHashChange() {\n this.scrollTo(this.getHash());\n },\n unmount: function unmount() {\n this.scroller = null;\n this.containers = null;\n window.removeEventListener('hashchange', this.handleHashChange);\n }\n};\n\nexports.default = scrollHash;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require('./scroll-spy');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require('./scroll-hash');\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar protoTypes = {\n to: _propTypes2.default.string.isRequired,\n containerId: _propTypes2.default.string,\n container: _propTypes2.default.object,\n activeClass: _propTypes2.default.string,\n activeStyle: _propTypes2.default.object,\n spy: _propTypes2.default.bool,\n horizontal: _propTypes2.default.bool,\n smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n offset: _propTypes2.default.number,\n delay: _propTypes2.default.number,\n isDynamic: _propTypes2.default.bool,\n onClick: _propTypes2.default.func,\n duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n absolute: _propTypes2.default.bool,\n onSetActive: _propTypes2.default.func,\n onSetInactive: _propTypes2.default.func,\n ignoreCancelEvents: _propTypes2.default.bool,\n hashSpy: _propTypes2.default.bool,\n saveHashHistory: _propTypes2.default.bool,\n spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n\n var scroller = customScroller || _scroller2.default;\n\n var Link = function (_React$PureComponent) {\n _inherits(Link, _React$PureComponent);\n\n function Link(props) {\n _classCallCheck(this, Link);\n\n var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n active: false\n };\n return _this;\n }\n\n _createClass(Link, [{\n key: 'getScrollSpyContainer',\n value: function getScrollSpyContainer() {\n var containerId = this.props.containerId;\n var container = this.props.container;\n\n if (containerId && !container) {\n return document.getElementById(containerId);\n }\n\n if (container && container.nodeType) {\n return container;\n }\n\n return document;\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.spy || this.props.hashSpy) {\n var scrollSpyContainer = this.getScrollSpyContainer();\n\n if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n }\n\n if (this.props.hashSpy) {\n if (!_scrollHash2.default.isMounted()) {\n _scrollHash2.default.mount(scroller);\n }\n _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n }\n\n _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n this.setState({\n container: scrollSpyContainer\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = \"\";\n\n if (this.state && this.state.active) {\n className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n } else {\n className = this.props.className;\n }\n\n var style = {};\n\n if (this.state && this.state.active) {\n style = _extends({}, this.props.style, this.props.activeStyle);\n } else {\n style = _extends({}, this.props.style);\n }\n\n var props = _extends({}, this.props);\n\n for (var prop in protoTypes) {\n if (props.hasOwnProperty(prop)) {\n delete props[prop];\n }\n }\n\n props.className = className;\n props.style = style;\n props.onClick = this.handleClick;\n\n return _react2.default.createElement(Component, props);\n }\n }]);\n\n return Link;\n }(_react2.default.PureComponent);\n\n var _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.scrollTo = function (to, props) {\n scroller.scrollTo(to, _extends({}, _this2.state, props));\n };\n\n this.handleClick = function (event) {\n\n /*\r\n * give the posibility to override onClick\r\n */\n\n if (_this2.props.onClick) {\n _this2.props.onClick(event);\n }\n\n /*\r\n * dont bubble the navigation\r\n */\n\n if (event.stopPropagation) event.stopPropagation();\n if (event.preventDefault) event.preventDefault();\n\n /*\r\n * do the magic!\r\n */\n _this2.scrollTo(_this2.props.to, _this2.props);\n };\n\n this.spyHandler = function (x, y) {\n var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n return;\n }\n\n var horizontal = _this2.props.horizontal;\n\n var to = _this2.props.to;\n var element = null;\n var isInside = void 0;\n var isOutside = void 0;\n\n if (horizontal) {\n var elemLeftBound = 0;\n var elemRightBound = 0;\n var containerLeft = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var containerCords = scrollSpyContainer.getBoundingClientRect();\n containerLeft = containerCords.left;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var cords = element.getBoundingClientRect();\n elemLeftBound = cords.left - containerLeft + x;\n elemRightBound = elemLeftBound + cords.width;\n }\n\n var offsetX = x - _this2.props.offset;\n isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n } else {\n var elemTopBound = 0;\n var elemBottomBound = 0;\n var containerTop = 0;\n\n if (scrollSpyContainer.getBoundingClientRect) {\n var _containerCords = scrollSpyContainer.getBoundingClientRect();\n containerTop = _containerCords.top;\n }\n\n if (!element || _this2.props.isDynamic) {\n element = scroller.get(to);\n if (!element) {\n return;\n }\n\n var _cords = element.getBoundingClientRect();\n elemTopBound = _cords.top - containerTop + y;\n elemBottomBound = elemTopBound + _cords.height;\n }\n\n var offsetY = y - _this2.props.offset;\n isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n }\n\n var activeLink = scroller.getActiveLink();\n\n if (isOutside) {\n if (to === activeLink) {\n scroller.setActiveLink(void 0);\n }\n\n if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n var _props$saveHashHistor = _this2.props.saveHashHistory,\n saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n _scrollHash2.default.changeHash(\"\", saveHashHistory);\n }\n\n if (_this2.props.spy && _this2.state.active) {\n _this2.setState({ active: false });\n _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n }\n }\n\n if (isInside && (activeLink !== to || _this2.state.active === false)) {\n scroller.setActiveLink(to);\n\n var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n if (_this2.props.spy) {\n _this2.setState({ active: true });\n _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n }\n }\n };\n };\n\n ;\n\n Link.propTypes = protoTypes;\n\n Link.defaultProps = { offset: 0 };\n\n return Link;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n spyCallbacks: [],\n spySetState: [],\n scrollSpyContainers: [],\n\n mount: function mount(scrollSpyContainer, throttle) {\n if (scrollSpyContainer) {\n var eventHandler = eventThrottler(function (event) {\n scrollSpy.scrollHandler(scrollSpyContainer);\n }, throttle);\n scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n }\n },\n isMounted: function isMounted(scrollSpyContainer) {\n return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n },\n currentPositionX: function currentPositionX(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n } else {\n return scrollSpyContainer.scrollLeft;\n }\n },\n currentPositionY: function currentPositionY(scrollSpyContainer) {\n if (scrollSpyContainer === document) {\n var supportPageOffset = window.pageXOffset !== undefined;\n var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n } else {\n return scrollSpyContainer.scrollTop;\n }\n },\n scrollHandler: function scrollHandler(scrollSpyContainer) {\n var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n callbacks.forEach(function (c) {\n return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n });\n },\n addStateHandler: function addStateHandler(handler) {\n scrollSpy.spySetState.push(handler);\n },\n addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n if (!container.spyCallbacks) {\n container.spyCallbacks = [];\n }\n\n container.spyCallbacks.push(handler);\n\n handler(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n },\n updateStates: function updateStates() {\n scrollSpy.spySetState.forEach(function (s) {\n return s();\n });\n },\n unmount: function unmount(stateHandler, spyHandler) {\n scrollSpy.scrollSpyContainers.forEach(function (c) {\n return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n });\n\n if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n }\n\n document.removeEventListener('scroll', scrollSpy.scrollHandler);\n },\n\n\n update: function update() {\n return scrollSpy.scrollSpyContainers.forEach(function (c) {\n return scrollSpy.scrollHandler(c);\n });\n }\n};\n\nexports.default = scrollSpy;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n unmount: function unmount() {\n __mapped = {};\n },\n\n register: function register(name, element) {\n __mapped[name] = element;\n },\n\n unregister: function unregister(name) {\n delete __mapped[name];\n },\n\n get: function get(name) {\n return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n },\n\n setActiveLink: function setActiveLink(link) {\n return __activeLink = link;\n },\n\n getActiveLink: function getActiveLink() {\n return __activeLink;\n },\n\n scrollTo: function scrollTo(to, props) {\n\n var target = this.get(to);\n\n if (!target) {\n console.warn(\"target Element not found\");\n return;\n }\n\n props = _extends({}, props, { absolute: false });\n\n var containerId = props.containerId;\n var container = props.container;\n\n var containerElement = void 0;\n if (containerId) {\n containerElement = document.getElementById(containerId);\n } else if (container && container.nodeType) {\n containerElement = container;\n } else {\n containerElement = document;\n }\n\n props.absolute = true;\n\n var horizontal = props.horizontal;\n var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n /*\r\n * if animate is not provided just scroll into the view\r\n */\n if (!props.smooth) {\n if (_scrollEvents2.default.registered['begin']) {\n _scrollEvents2.default.registered['begin'](to, target);\n }\n\n if (containerElement === document) {\n if (props.horizontal) {\n window.scrollTo(scrollOffset, 0);\n } else {\n window.scrollTo(0, scrollOffset);\n }\n } else {\n containerElement.scrollTop = scrollOffset;\n }\n\n if (_scrollEvents2.default.registered['end']) {\n _scrollEvents2.default.registered['end'](to, target);\n }\n\n return;\n }\n\n /*\r\n * Animate scrolling\r\n */\n\n _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n /*\r\n * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n */\n defaultEasing: function defaultEasing(x) {\n if (x < 0.5) {\n return Math.pow(x * 2, 2) / 2;\n }\n return 1 - Math.pow((1 - x) * 2, 2) / 2;\n },\n /*\r\n * https://gist.github.com/gre/1650294\r\n */\n // no easing, no acceleration\n linear: function linear(x) {\n return x;\n },\n // accelerating from zero velocity\n easeInQuad: function easeInQuad(x) {\n return x * x;\n },\n // decelerating to zero velocity\n easeOutQuad: function easeOutQuad(x) {\n return x * (2 - x);\n },\n // acceleration until halfway, then deceleration\n easeInOutQuad: function easeInOutQuad(x) {\n return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n },\n // accelerating from zero velocity \n easeInCubic: function easeInCubic(x) {\n return x * x * x;\n },\n // decelerating to zero velocity π\n easeOutCubic: function easeOutCubic(x) {\n return --x * x * x + 1;\n },\n // acceleration until halfway, then deceleration \n easeInOutCubic: function easeInOutCubic(x) {\n return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n },\n // accelerating from zero velocity \n easeInQuart: function easeInQuart(x) {\n return x * x * x * x;\n },\n // decelerating to zero velocity \n easeOutQuart: function easeOutQuart(x) {\n return 1 - --x * x * x * x;\n },\n // acceleration until halfway, then deceleration\n easeInOutQuart: function easeInOutQuart(x) {\n return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n },\n // accelerating from zero velocity\n easeInQuint: function easeInQuint(x) {\n return x * x * x * x * x;\n },\n // decelerating to zero velocity\n easeOutQuint: function easeOutQuint(x) {\n return 1 + --x * x * x * x * x;\n },\n // acceleration until halfway, then deceleration \n easeInOutQuint: function easeInOutQuint(x) {\n return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n var curLoc = window && window.location;\n var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n return function (element) {\n return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n };\n};\n\nvar isPositioned = function isPositioned(element) {\n return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n var offsetTop = element.offsetTop;\n var currentOffsetParent = element.offsetParent;\n\n while (currentOffsetParent && !predicate(currentOffsetParent)) {\n offsetTop += currentOffsetParent.offsetTop;\n currentOffsetParent = currentOffsetParent.offsetParent;\n }\n\n return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n if (horizontal) {\n return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n } else {\n if (c === document) {\n return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n }\n\n // The offsetParent of an element, according to MDN, is its nearest positioned\n // (an element whose position is anything other than static) ancestor. The offsetTop\n // of an element is taken with respect to its offsetParent which may not neccessarily\n // be its parentElement except the parent itself is positioned.\n\n // So if containerElement is positioned, then it must be an offsetParent somewhere\n // If it happens that targetElement is a descendant of the containerElement, and there\n // is not intermediate positioned element between the two of them, i.e.\n // targetElement\"s offsetParent is the same as the containerElement, then the\n // distance between the two will be the offsetTop of the targetElement.\n // If, on the other hand, there are intermediate positioned elements between the\n // two entities, the distance between the targetElement and the containerElement\n // will be the accumulation of the offsetTop of the element and that of its\n // subsequent offsetParent until the containerElement is reached, since it\n // will also be an offsetParent at some point due to the fact that it is positioned.\n\n // If the containerElement is not positioned, then it can\"t be an offsetParent,\n // which means that the offsetTop of the targetElement would not be with respect to it.\n // However, if the two of them happen to have the same offsetParent, then\n // the distance between them will be the difference between their offsetTop\n // since they are both taken with respect to the same entity.\n // The last resort would be to accumulate their offsetTop until a common\n // offsetParent is reached (usually the document) and taking the difference\n // between the accumulated offsetTops\n\n if (isPositioned(c)) {\n if (t.offsetParent !== c) {\n var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n return e === c || e === document;\n };\n\n var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n offsetTop = _getElementOffsetInfo.offsetTop,\n offsetParent = _getElementOffsetInfo.offsetParent;\n\n if (offsetParent !== c) {\n throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n }\n\n return offsetTop;\n }\n\n return t.offsetTop;\n }\n\n if (t.offsetParent === c.offsetParent) {\n return t.offsetTop - c.offsetTop;\n }\n\n var isDocument = function isDocument(e) {\n return e === document;\n };\n return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n }\n};\n\nexports.default = {\n updateHash: updateHash,\n getHash: getHash,\n filterElementInContainer: filterElementInContainer,\n scrollOffset: scrollOffset\n};","/** @license React v17.0.2\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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.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:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\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=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=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","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if(\"function\"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],t=0;to.durationMax?o.durationMax:o.durationMin&&u=v)return C.cancelScroll(!0),x(a,t,c),H(\"scrollStop\",i,a,r),!(O=l=null)})(d,g)||(O=M.requestAnimationFrame(E),l=e)};0===M.pageYOffset&&M.scrollTo(0,0),f=a,h=i,c||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?\"#top\":\"#\"+f.id),\"matchMedia\"in M&&M.matchMedia(\"(prefers-reduced-motion)\").matches?x(a,Math.floor(g),!1):(H(\"scrollStart\",i,a,r),C.cancelScroll(!0),M.requestAnimationFrame(E))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&\"closest\"in e.target&&(a=e.target.closest(o))&&\"a\"===a.tagName.toLowerCase()&&!e.target.closest(b.ignore)&&a.hostname===M.location.hostname&&a.pathname===M.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if(\"#\"===t){if(!b.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||\"#top\"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=M.location.hash;t=t||\"\",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||M.pageYOffset},document.title,t||M.location.href)}})(b),C.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(b)){var t=history.state.anchor;\"string\"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||C.animateScroll(t,null,{updateURL:!1})}};C.destroy=function(){b&&(document.removeEventListener(\"click\",t,!1),M.removeEventListener(\"popstate\",n,!1),C.cancelScroll(),O=A=a=b=null)};return (function(){if(!(\"querySelector\"in document&&\"addEventListener\"in M&&\"requestAnimationFrame\"in M&&\"closest\"in M.Element.prototype))throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";C.destroy(),b=I(q,e||{}),A=b.header?document.querySelector(b.header):null,document.addEventListener(\"click\",t,!1),b.updateURL&&b.popstate&&M.addEventListener(\"popstate\",n,!1)})(),C}}));","// 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","// 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};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (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((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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))","// define __esModule on exports\n__webpack_require__.r = (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};","////////////////////////////////////////////////////////////////////////////////\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\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\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 ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnNavigationFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\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/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/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/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/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 */\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\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 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 HandlerResult,\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 unstable_patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n unstable_dataStrategy?: DataStrategyFunction;\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 unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_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 unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_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 unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_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.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_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 // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = 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 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 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 let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\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.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\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 ignoreNextHistoryUpdate = false;\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 (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\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 ignoreNextHistoryUpdate = true;\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\n 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 // 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 unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_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 }\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.unstable_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.unstable_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 { overrideNavigation: state.navigation }\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 = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\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 // 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 load 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 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 // 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, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n 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 request,\n [actionMatch],\n matches\n );\n result = results[0];\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, {\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, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: 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 if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\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.matches,\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 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, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\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 let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\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 matchesToLoad,\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 // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\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 if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_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 pendingPreventScrollReset = (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 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 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 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 path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, 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 fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\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, {\n fetcherSubmission: submission,\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 if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\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.matches,\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, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\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 let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\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 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 path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, 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 fetchRequest,\n [match],\n matches\n );\n let result = results[0];\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);\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 {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\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 this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\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 this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\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 request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\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 return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\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 abortFetcher(key);\n }\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 if (future.v7_fetcherPersist) {\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 }\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 deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\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 handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\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 // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return { active: false, matches };\n }\n\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 ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnNavigationImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\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) {\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 addToFifoQueue(pathname, discoveredRoutes);\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 addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function addToFifoQueue(path: string, queue: Set) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\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 unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_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 unstable_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 unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_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 unstable_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 unstable_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 unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_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 `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(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 unstable_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 unstable_dataStrategy\n );\n result = results[0];\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 unstable_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 unstable_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 unstable_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 unstable_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 matchesToLoad,\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 unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(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 matchesToLoad[i].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 return convertHandlerResultToDataResult(result);\n })\n );\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 // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\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 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) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: 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 boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\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 (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\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 load (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 isInitialLoad ||\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 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\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnNavigationImpl: AgnosticPatchRoutesOnNavigationFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map<\n string,\n ReturnType\n >,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\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\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\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: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\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 request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\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 manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\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;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\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 loadLazyRouteModule(match.route, mapRouteProperties, manifest),\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 loadLazyRouteModule(match.route, mapRouteProperties, manifest);\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 // HandlerResults 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 convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type } = handlerResult;\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 };\n }\n\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\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 matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\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 results.forEach((result, index) => {\n let id = matchesToLoad[index].route.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 matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\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 for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\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\" | \"route-discovery\";\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 (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnNavigation()\\` ` +\n `function threw the following error:\\n${message}`;\n } else 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: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\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 isHandlerResult(result: unknown): result is HandlerResult {\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 isRedirectHandlerResult(result: HandlerResult) {\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 resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\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) && (isFetcher || 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 let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\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 unstable_flushSync?: boolean;\n unstable_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 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/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/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/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/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/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/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/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/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/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/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/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 } = 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 = 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/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 {\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\";\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 // 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